Método IPortWavePciStream::ReleaseMapping (portcls.h)
El ReleaseMapping
método libera una asignación obtenida por una llamada anterior a IPortWavePciStream::GetMapping.
Sintaxis
NTSTATUS ReleaseMapping(
[in] PVOID Tag
);
Parámetros
[in] Tag
Especifica un valor de etiqueta que identifica la asignación que se va a liberar. Para obtener más información, vea la sección Comentarios que se muestra más adelante.
Valor devuelto
ReleaseMapping
devuelve STATUS_SUCCESS si la llamada se realizó correctamente. De lo contrario, el método devuelve un código de error adecuado.
Comentarios
Establezca el parámetro Tag en el mismo valor de etiqueta que usó para identificar la asignación en la llamada a IPortWavePciStream::GetMapping que obtuvo originalmente la asignación.
El controlador de minipuerto debe realizar un seguimiento del orden en el que adquiere sus asignaciones de llamadas a IPortWavePciStream::GetMapping y debe liberar las asignaciones en el mismo orden.
Para evitar posibles interbloqueos, el controlador de minipuerto debe evitar mantener un bloqueo de giro durante su llamada a ReleaseMapping
. Consulta el controlador de audio de ejemplo ac97 en el Kit de controladores de Microsoft Windows (WDK) para obtener un ejemplo de código que usa un bloqueo de número para serializar accesos a estructuras de datos compartidas y periféricos en un sistema multiprocesador. El código de ejemplo llama a KeReleaseSpinLock antes de llamar a ReleaseMapping
KeAcquireSpinLock después de llamar a ReleaseMapping
. Entre las llamadas para liberar y adquirir el bloqueo de número, el subproceso del controlador no debe suponer que tiene acceso exclusivo a los datos o periféricos protegidos por el bloqueo de número. La herramienta Comprobador de controladores (vea la descripción de esta herramienta en el sitio web del Comprobador de controladores) comprueba si hay bloqueos de número activos durante las llamadas a ReleaseMapping
; si detecta una, genera una comprobación de errores de 0xC4 (detección de interbloqueos).
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | portcls.h (incluir Portcls.h) |
IRQL | <=DISPATCH_LEVEL |
Consulte también
IMiniportWavePciStream::RevokeMappings