Freigeben über


IoInitializeRemoveLock-Makro (wdm.h)

Die IoInitializeRemoveLock-Routine initialisiert eine Entfernungssperre für ein Geräteobjekt.

Syntax

void IoInitializeRemoveLock(
  [in]  Lock,
  [in]  Tag,
  [in]  Maxmin,
  [in]  HighWater
);

Parameter

[in] Lock

Zeiger auf eine vom Aufrufer bereitgestellte IO_REMOVE_LOCK Struktur, die diese Routine mit Informationen zur Sperre initialisiert, einschließlich eines Zählers und eines Synchronisierungsereignisses. Ein Treiberschreiber muss diese Struktur als Teil der Geräteerweiterung des Geräteobjekts zuordnen.

[in] Tag

Gibt ein Tag an, um den Ersteller der Sperre zu identifizieren. Treiberautoren verwenden in der Regel eine 4-stellige Zeichenfolge, die in umgekehrter Reihenfolge angegeben wird, wie die tags, die für ExAllocatePoolWithTag verwendet werden.

Das E/A-System verwendet diesen Parameter, wenn driver verifier aktiviert ist. Der Aufrufer sollte für diesen Parameter immer einen Tagwert ungleich null angeben.

[in] Maxmin

Gibt die maximale Anzahl von Minuten an, für die diese Sperre gehalten werden soll. Der Wert 0 (null) bedeutet, dass es keine Grenze gibt. Dieser Wert wird in der Regel beim Debuggen verwendet, um eine Treiberroutine zu identifizieren, die die Sperre länger als erwartet hält.

Das E/A-System verwendet diesen Parameter, wenn driver verifier aktiviert ist.

[in] HighWater

Gibt die maximale Anzahl ausstehender Käufe an, die für die Sperre zulässig sind. Verwenden Sie 0, um kein Maximum anzugeben. HighWatermark muss = 0x7FFFFFFF sein <.

Das E/A-System verwendet diesen Parameter, wenn driver verifier aktiviert ist.

Rückgabewert

Keine

Bemerkungen

Ein Treiber kann eine Entfernungssperre verwenden, um ausstehende E/A-Vorgänge auf einem Gerät nachzuverfolgen und zu bestimmen, wann der Treiber sein Geräteobjekt als Reaktion auf eine IRP_MN_REMOVE_DEVICE-Anforderung löschen kann.

Vor dem Aufrufen von IoInitializeRemoveLock sollte ein Treiber eine IO_REMOVE_LOCK-Struktur in seiner Geräteerweiterung zuordnen. Ein Treiber ruft in der Regel IoInitializeRemoveLock in seiner AddDevice-Routine auf, wenn der Treiber den Rest der Geräteerweiterung für ein Geräteobjekt initialisiert.

Nachdem die IoReleaseRemoveLockAndWait-Routine zurückgegeben wurde, sollte der Treiber das Gerät als in einem Zustand betrachten, in dem es zum Entfernen bereit ist und keine E/A-Vorgänge ausführen kann. Daher darf der Treiber ioInitializeRemoveLock nicht aufrufen, um die Entfernungssperre erneut zu initialisieren. Ein Verstoß gegen diese Regel, während der Treiber von driver verifier überprüft wird, führt zu einer Fehlerüberprüfung.

Da der Treiber die IO_REMOVE_LOCK-Struktur in der Geräteerweiterung eines Geräteobjekts speichert, wird die Entfernungssperre gelöscht, wenn der Treiber die Geräteerweiterung im Rahmen der Verarbeitung einer IRP_MN_REMOVE_DEVICE-Anforderung löscht.

Weitere Informationen finden Sie unter Verwenden von Sperren entfernen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Desktop
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Weitere Informationen

IoAcquireRemoveLock

IoInitializeRemoveLock

IoReleaseRemoveLock

IoReleaseRemoveLockAndWait