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 ReleaseMappingKeAcquireSpinLock 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

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock