Método IPortWavePciStream::ReleaseMapping (portcls.h)
O método ReleaseMapping
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 que deve ser liberado. Para obter mais informações, consulte a seção Comentários a seguir.
Valor de retorno
ReleaseMapping
retornará STATUS_SUCCESS se a chamada tiver sido bem-sucedida. Caso contrário, o método retornará um código de erro apropriado.
Observações
Defina o parâmetro Tag com o mesmo valor de marca usado para identificar o mapeamento na chamada para IPortWavePciStream::GetMapping que originalmente obteve o mapeamento.
O driver de miniporto deve acompanhar a ordem na qual 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 Microsoft Windows Driver Kit (WDK) 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 após chamar ReleaseMapping
. Entre as chamadas para liberar e adquirir o bloqueio de rotação, o thread de driver não deve assumir que ele 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 Driver Verifier) verifica se há bloqueios de rotação ativos durante as chamadas para ReleaseMapping
; se detectar um, ele gerará uma verificação de bug de 0xC4 (detecção de deadlock).
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Universal |
cabeçalho | portcls.h (inclua Portcls.h) |
IRQL | <=DISPATCH_LEVEL |
Consulte também
IMiniportWavePciStream::RevokeMappings