Condividi tramite


Metodo IPortWavePciStream::ReleaseMapping (portcls.h)

Il ReleaseMapping metodo rilascia un mapping ottenuto da una chiamata precedente a IPortWavePciStream::GetMapping.

Sintassi

NTSTATUS ReleaseMapping(
  [in] PVOID Tag
);

Parametri

[in] Tag

Specifica un valore di tag che identifica il mapping da rilasciare. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

Valore restituito

ReleaseMapping restituisce STATUS_SUCCESS se la chiamata ha avuto esito positivo. In caso contrario, il metodo restituisce un codice di errore appropriato.

Commenti

Impostare il parametro Tag sullo stesso valore di tag usato per identificare il mapping nella chiamata a IPortWavePciStream::GetMapping che ha originariamente ottenuto il mapping.

Il driver miniport deve tenere traccia dell'ordine in cui acquisisce i mapping dalle chiamate a IPortWavePciStream::GetMapping e deve rilasciare i mapping nello stesso ordine.

Per evitare potenziali deadlock, il driver miniport deve evitare di tenere premuto un blocco di rotazione durante la chiamata a ReleaseMapping. Vedere il driver audio di esempio ac97 in Microsoft Windows Driver Kit (WDK) per un esempio di codice che usa un blocco spin per serializzare gli accessi a strutture di dati condivise e periferiche in un sistema multiprocessore. Il codice di esempio chiama KeReleaseSpinLock prima di chiamare e chiamare ReleaseMappingKeAcquireSpinLock dopo aver chiamato ReleaseMapping. Tra le chiamate per rilasciare e acquisire il blocco di rotazione, il thread del driver non deve presupporre che abbia accesso esclusivo ai dati o alle periferiche protette dal blocco di rotazione. Lo strumento Driver Verifier (vedere la descrizione di questo strumento nel sito Web Driver Verifier ) verifica la presenza di blocchi di rotazione attivi durante le chiamate a ReleaseMapping; se ne rileva uno, genera un controllo di bug 0xC4 (rilevamento deadlock).

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione portcls.h (include Portcls.h)
IRQL <=DISPATCH_LEVEL

Vedi anche

IMiniportWavePciStream::RevokeMappings

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock