IPortWavePciStream::ReleaseMapping-Methode (portcls.h)
Die ReleaseMapping
-Methode gibt eine Zuordnung frei, die durch einen vorherigen Aufruf von IPortWavePciStream::GetMapping abgerufen wurde.
Syntax
NTSTATUS ReleaseMapping(
[in] PVOID Tag
);
Parameter
[in] Tag
Gibt einen Tagwert an, der die Zuordnung identifiziert, die freigegeben werden soll. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
Rückgabewert
ReleaseMapping
gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich war. Andernfalls gibt die Methode einen entsprechenden Fehlercode zurück.
Hinweise
Legen Sie den Tag-Parameter auf denselben Tagwert fest, den Sie zum Identifizieren der Zuordnung im Aufruf von IPortWavePciStream::GetMapping verwendet haben, der die Zuordnung ursprünglich abgerufen hat.
Der Miniporttreiber muss die Reihenfolge nachverfolgen, in der er seine Zuordnungen von Aufrufen von IPortWavePciStream::GetMapping abruft, und er muss die Zuordnungen in derselben Reihenfolge freigeben.
Um potenzielle Deadlocks zu vermeiden, muss der Miniporttreiber vermeiden, während des Aufrufs von eine Drehsperre zu ReleaseMapping
halten. Im Beispiel-Audiotreiber ac97 im Microsoft Windows Driver Kit (WDK) finden Sie ein Codebeispiel, das eine Drehsperre verwendet, um Zugriffe auf freigegebene Datenstrukturen und Peripheriegeräte in einem Multiprozessorsystem zu serialisieren. Der Beispielcode ruft KeReleaseSpinLock vor dem Aufrufen ReleaseMapping
auf und ruft KeAcquireSpinLock auf, nachdem aufgerufen wurde ReleaseMapping
. Zwischen den Aufrufen zum Freigeben und Abrufen der Spinsperre darf der Treiberthread nicht davon ausgehen, dass er exklusiven Zugriff auf die Daten oder Peripheriegeräte hat, die durch die Spinsperre geschützt werden. Das Driver Verifier-Tool (siehe Die Beschreibung dieses Tools auf der Driver Verifier-Website ) sucht bei Aufrufen von auf ReleaseMapping
aktive Spinsperren. Wenn es eine erkennt, generiert es eine 0xC4 Fehlerüberprüfung (Deadlockerkennung).
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | portcls.h (include Portcls.h) |
IRQL | <=DISPATCH_LEVEL |
Weitere Informationen
IMiniportWavePciStream::RevokeMappings