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