IMiniportWavePciStream::RevokeMappings-Methode (portcls.h)
Die RevokeMappings
-Methode widerruft Zuordnungen, die zuvor über IPortWavePciStream::GetMapping abgerufen wurden.
Syntax
NTSTATUS RevokeMappings(
[in] PVOID FirstTag,
[in] PVOID LastTag,
[out] PULONG MappingsRevoked
);
Parameter
[in] FirstTag
Gibt den Tagwert an, der die erste Zuordnung identifiziert, die widerrufen wird.
[in] LastTag
Gibt den Tagwert an, der die letzte Zuordnung identifiziert, die widerrufen wird.
[out] MappingsRevoked
Ausgabezeiger für die Anzahl der widerrufenen Zuordnungen. Dieser Parameter verweist auf eine ULONG-Variable, in die die -Methode die Anzahl von Zuordnungen schreibt, die durch den Aufruf tatsächlich widerrufen wurden. Diese Zahl schließt alle Zuordnungen im Bereich FirstTag bis LastTag aus , die der Miniporttreiber bereits freigegeben hat. Aufgrund von Synchronisierungsproblemen können einige Zuordnungen im Bereich zwischen dem Zeitpunkt, zu dem der Porttreiber die Liste der zu widerrufenden Zuordnungen bestimmt, und dem Aufruf RevokeMappings
von freigegeben werden. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
Rückgabewert
RevokeMappings
gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich war. Andernfalls gibt die Methode einen entsprechenden Fehlercode zurück.
Hinweise
Der Porttreiber ruft auf RevokeMappings
, um die Zuordnungen des Streams in folgenden Fällen zu widerrufen:
- Eine E/A-Anforderung (IRP) wird abgebrochen, und der zuvor zugeordnete Arbeitsspeicher ist möglicherweise nicht mehr verfügbar.
- Der Streamstatus ändert sich in KSSTATE_STOP (siehe KSSTATE), und das Gerät benötigt keine Zuordnungen mehr.
RevokeMapping
-Methode widerruft alle Zuordnungen in der Sequenz, die mit der durch FirstTag identifizierten Zuordnung beginnt und mit der durch LastTag identifizierten Zuordnung endet. Dazu gehören die durch FirstTag und LastTag identifizierten Zuordnungen sowie alle Zuordnungen dazwischen. Der Miniporttreiber widerruft jede Zuordnung, indem er sie aus der Liste der verfügbaren Zuordnungen entfernt.
Die RevokeMapping
-Methode kann verwendet werden, um eine einzelne Zuordnung zu entfernen, indem FirstTag und LastTag auf denselben Wert festgelegt werden.
Der Porttreiber kann asynchron in Bezug auf die Wartungsvorgänge des Miniporttreibers in der Scatter/Gather-Übertragungswarteschlange des DMA-Controllers aufrufen RevokeMappings
. Der Zugriff auf diese Warteschlange muss durch einen Synchronisierungsgrundtyp geschützt werden. Im Ac97-Beispiel-Audiotreiber im Microsoft Windows Driver Kit (WDK) erfolgt dies beispielsweise durch die Umgebung kritischer Codeabschnitte mit KeAcquireSpinLock - und KeReleaseSpinLock-Aufrufen . Da der Miniporttreiber Zuordnungen in Bezug auf die Aufrufe RevokeMappings
des Porttreibers asynchron freigeben kann, hat der Miniporttreiber möglicherweise zuvor eine oder mehrere der im RevokeMappings
Aufruf angegebenen Zuordnungen freigegeben (siehe IPortWavePciStream::ReleaseMapping).
Weitere Informationen zu Zuordnungen finden Sie unter WavePci Latency.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | portcls.h (include Portcls.h) |
IRQL | DISPATCH_LEVEL |
Weitere Informationen
IPortWavePciStream::GetMapping