Share via


Método IPortWavePciStream::ReleaseMapping (portcls.h)

O ReleaseMapping método libera um mapeamento obtido por uma chamada anterior para IPortWavePciStream::GetMapping.

Sintaxe

NTSTATUS ReleaseMapping(
  [in] PVOID Tag
);

Parâmetros

[in] Tag

Especifica um valor de marca que identifica o mapeamento a ser liberado. Para obter mais informações, consulte a seção Comentários a seguir.

Retornar valor

ReleaseMapping retornará STATUS_SUCCESS se a chamada tiver sido bem-sucedida. Caso contrário, o método retornará um código de erro apropriado.

Comentários

Defina o parâmetro Tag com o mesmo valor de marca que você usou para identificar o mapeamento na chamada para IPortWavePciStream::GetMapping que obteve originalmente o mapeamento.

O driver de miniporto deve acompanhar a ordem em que adquire seus mapeamentos de chamadas para IPortWavePciStream::GetMapping e deve liberar os mapeamentos na mesma ordem.

Para evitar possíveis deadlocks, o driver de miniporto deve evitar manter um bloqueio de rotação durante sua chamada para ReleaseMapping. Consulte o driver de áudio de exemplo ac97 no WDK (Microsoft Windows Driver Kit) para obter um exemplo de código que usa um bloqueio de rotação para serializar acessos a estruturas de dados compartilhadas e periféricos em um sistema multiprocessador. O código de exemplo chama KeReleaseSpinLock antes de chamar ReleaseMapping e chama KeAcquireSpinLock depois de chamar ReleaseMapping. Entre as chamadas para liberar e adquirir o bloqueio de rotação, o thread de driver não deve assumir que tem acesso exclusivo aos dados ou periféricos protegidos pelo bloqueio de rotação. A ferramenta Verificador de Driver (consulte a descrição dessa ferramenta no site do Verificador de Driver) verifica se há bloqueios de rotação ativos durante as chamadas para ReleaseMapping; se detectar um, ele gerará um bug de 0xC4 (detecção de deadlock) marcar.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho portcls.h (inclua Portcls.h)
IRQL <=DISPATCH_LEVEL

Confira também

IMiniportWavePciStream::RevokeMappings

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock