Compartir a través de


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

El método ReleaseMapping 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 siguiente sección Comentarios.

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.

Observaciones

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 miniport debe realizar un seguimiento del orden en el que adquiere sus asignaciones de llamadas a IPortWavePciStream::GetMappingy debe liberar las asignaciones en el mismo orden.

Para evitar posibles interbloqueos, el controlador de miniporte debe evitar mantener un bloqueo de giro durante su llamada a ReleaseMapping. Consulte el controlador de audio de ejemplo ac97 en el Kit de controladores de Microsoft Windows (WDK) para ver un ejemplo de código que usa un bloqueo de número para serializar los 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 y llama a KeAcquireSpinLock después de llamar a ReleaseMapping. Entre las llamadas para liberar y adquirir el bloqueo de giro, el subproceso del controlador no debe suponer que tiene acceso exclusivo a los datos o periféricos protegidos por el bloqueo de giro. La herramienta Comprobador de controladores (vea la descripción de esta herramienta en el sitio web del comprobador de controladores de ) comprueba si hay bloqueos de giro activos durante las llamadas a ReleaseMapping; si detecta uno, genera una comprobación de errores de 0xC4 (detección de interbloqueos).

Requisitos

Requisito Valor
de la plataforma de destino de Universal
encabezado de portcls.h (incluya Portcls.h)
irQL <=DISPATCH_LEVEL

Consulte también

IMiniportWavePciStream::RevokeMappings

IPortWavePciStream

IPortWavePciStream::GetMapping

keAcquireSpinLock

keReleaseSpinLock