Freigeben über


IMiniportWavePciStream::RevokeMappings-Methode (portcls.h)

Die RevokeMappings-Methode widerruft Zuordnungen, die zuvor über IPortWavePciStream::GetMappingabgerufen 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 der Zuordnungen schreibt, die tatsächlich vom Aufruf widerrufen wurden. Diese Zahl schließt alle Zuordnungen im Bereich FirstTag-LastTag- aus, die der Miniporttreiber bereits freigegeben hat. Aufgrund von Synchronisierungsproblemen können einige der Zuordnungen im Bereich zwischen dem Zeitpunkt freigegeben werden, in dem der Porttreiber die Liste der zu widerrufenden Zuordnungen und den Aufruf von RevokeMappingsbestimmt. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

Rückgabewert

RevokeMappings gibt STATUS_SUCCESS zurück, wenn der Anruf erfolgreich war. Andernfalls gibt die Methode einen geeigneten Fehlercode zurück.

Bemerkungen

Der Porttreiber ruft RevokeMappings auf, um die Zuordnungen des Datenstroms zu widerrufen, wenn:

  • Eine E/A-Anforderung (IRP) wird abgebrochen, und der zuvor zugeordnete Speicher ist möglicherweise nicht mehr verfügbar.
  • Der Datenstromstatus ändert sich in KSSTATE_STOP (siehe KSSTATE), und das Gerät benötigt die Zuordnungen nicht mehr.
Der Miniporttreiber verfolgt die Reihenfolge, in der er seine Zuordnungen von Aufrufen an IPortWavePciStream::GetMappingabruft. Die RevokeMapping-Methode widerruft alle Zuordnungen in der Sequenz, die mit der zuordnung beginnt, die durch FirstTag- identifiziert wird, und endet mit der Zuordnung, die durch LastTag-identifiziert wird. Dazu gehören die zuordnungen, die durch FirstTag- und LastTag- und alle Zuordnungen dazwischen identifiziert werden. Der Miniporttreiber widerruft jede Zuordnung, indem sie aus der Liste der verfügbaren Zuordnungen entfernt wird.

Die RevokeMapping-Methode kann verwendet werden, um eine einzelne Zuordnung zu entfernen, indem sie FirstTag- und LastTag- auf denselben Wert festlegen.

Der Porttreiber kann RevokeMappings asynchron in Bezug auf die Wartungsvorgänge des Miniporttreibers in der Punkt-/Sammelübertragungswarteschlange des DMA-Controllers aufrufen. Der Zugriff auf diese Warteschlange muss durch einen Synchronisierungsgrundtyp geschützt werden. Im Ac97-Beispielaudiotreiber im Microsoft Windows Driver Kit (WDK) wird dies beispielsweise durch kritische Codeabschnitte mit KeAcquireSpinLock- und KeReleaseSpinLock- Aufrufen durchgeführt. Da der Miniport-Treiber Zuordnungen im Hinblick auf die Aufrufe des Porttreibers an RevokeMappingsasynchron freigeben kann, hat der Miniporttreiber möglicherweise zuvor freigegeben (siehe IPortWavePciStream::ReleaseMapping) eine oder mehrere der im RevokeMappings Aufruf angegebenen Zuordnungen.

Weitere Informationen zu Zuordnungen finden Sie unter WavePci Latency.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- portcls.h (include Portcls.h)
IRQL- DISPATCH_LEVEL

Siehe auch

IMiniportWavePciStream-

IPortWavePciStream::GetMapping

IPortWavePciStream::ReleaseMapping

KSSTATE-

KeAcquireSpinLock

KeReleaseSpinLock