Freigeben über


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 RevokeMappingsvon 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.
Der Miniporttreiber verfolgt die Reihenfolge, in der er seine Zuordnungen von Aufrufen von IPortWavePciStream::GetMapping abruft. Die 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 RevokeMappingsdes 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

IMiniportWavePciStream

IPortWavePciStream::GetMapping

IPortWavePciStream::ReleaseMapping

KSSTATE

KeAcquireSpinLock

KeReleaseSpinLock