IPortWavePciStream::ReleaseMapping-Methode (portcls.h)
Die ReleaseMapping
-Methode gibt eine Zuordnung frei, die durch einen vorherigen Aufruf von IPortWavePciStream::GetMappingabgerufen wurde.
Syntax
NTSTATUS ReleaseMapping(
[in] PVOID Tag
);
Parameter
[in] Tag
Gibt einen Tagwert an, der die Zuordnung angibt, die freigegeben werden soll. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
Rückgabewert
ReleaseMapping
gibt STATUS_SUCCESS zurück, wenn der Anruf erfolgreich war. Andernfalls gibt die Methode einen geeigneten Fehlercode zurück.
Bemerkungen
Legen Sie den Tag Parameter auf denselben Tagwert fest, den Sie zum Identifizieren der Zuordnung im Aufruf von IPortWavePciStream::GetMapping verwendet haben, die ursprünglich die Zuordnung abgerufen haben.
Der Miniporttreiber muss die Reihenfolge nachverfolgen, in der er seine Zuordnungen von Aufrufen zu IPortWavePciStream::GetMappingabruft und die Zuordnungen in derselben Reihenfolge freigeben muss.
Um potenzielle Deadlocks zu vermeiden, muss der Miniporttreiber vermeiden, während des Aufrufs von ReleaseMapping
eine Drehsperre zu halten. Im Ac97-Beispielaudiotreiber im Microsoft Windows Driver Kit (WDK) finden Sie ein Codebeispiel, das eine Drehsperre zum Serialisieren des Zugriffs auf freigegebene Datenstrukturen und Peripheriegeräte in einem Multiprozessorsystem verwendet. Der Beispielcode ruft KeReleaseSpinLock- auf, bevor ReleaseMapping
aufgerufen und KeAcquireSpinLock nach dem Aufrufen von ReleaseMapping
aufgerufen wird. Zwischen den Aufrufen zum Freigeben und Abrufen der Drehsperre darf der Treiberthread nicht davon ausgehen, dass er exklusiven Zugriff auf die Daten oder Peripheriegeräte hat, die durch die Spin-Sperre geschützt sind. Das Tool "Driver Verifier" (siehe Beschreibung dieses Tools auf der Driver Verifier Website) überprüft während der Aufrufe von ReleaseMapping
auf aktive Drehsperren; wenn eine erkannt wird, generiert sie eine 0xC4 (Deadlock-Erkennung) Fehlerüberprüfung.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | portcls.h (include Portcls.h) |
IRQL- | <=DISPATCH_LEVEL |
Siehe auch
IMiniportWavePciStream::RevokeMappings