Freigeben über


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 ReleaseMappinghalten. 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 ReleaseMappingaktive 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

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock