IoAcquireRemoveLock-Makro (wdm.h)
Die IoAcquireRemoveLock-Routine erhöht die Anzahl für eine Entfernungssperre, was angibt, dass das zugeordnete Geräteobjekt nicht vom Gerätestapel getrennt oder gelöscht werden soll.
Syntax
NTSTATUS
IoAcquireRemoveLock (
_Inout_ PIO_REMOVE_LOCK RemoveLock,
_In_opt_ PVOID Tag
);
Parameter
[in] RemoveLock
Zeiger auf eine IO_REMOVE_LOCK Struktur, die der Aufrufer mit einem vorherigen Aufruf von IoInitializeRemoveLock initialisiert hat.
[in, optional] Tag
Zeigt optional auf ein vom Aufrufer bereitgestelltes Tag, das diesen instance des Abrufens der Entfernungssperre identifiziert. Beispielsweise legt eine Treiber dispatch-Routine diesen Parameter in der Regel auf einen Zeiger auf die IRP fest, die von der Routine verarbeitet wird.
Wenn ein Treiber ein Tag für einen Aufruf von IoAcquireRemoveLock angibt, muss der Treiber dasselbe Tag im entsprechenden Aufruf von IoReleaseRemoveLock angeben.
Das Tag muss nicht eindeutig sein, sondern sollte beim Debuggen sinnvoll sein.
Rückgabewert
Keine
Bemerkungen
Das IoAcquireRemoveLock-Makro umschließt und übernimmt den Rückgabewert von IoAcquireRemoveLockEx, der NTSTATUS zurückgibt:
Rückgabewert | BESCHREIBUNG |
---|---|
STATUS_SUCCESS | Gibt an, dass der Aufruf erfolgreich war. |
STATUS_DELETE_PENDING | Fehlerwert, der angibt, dass der Treiber eine IRP_MN_REMOVE_DEVICE für das Gerät erhalten und IoReleaseRemoveLockandWait aufgerufen hat. Diese Routine wartet darauf, dass alle Entfernungssperren gelöscht werden, bevor die Steuerung an den Treiber zurückgegeben wird. |
Wenn die Routine einen Wert außer STATUS_SUCCESS zurückgibt, starten Sie keine neuen Vorgänge auf dem Gerät.
Ein Treiber muss eine Remove-Sperre mit einem Aufruf von IoInitializeRemoveLock initialisieren, bevor die Sperre verwendet wird.
Ein Treiber muss IoReleaseRemoveLock aufrufen, um die Sperre zu lösen, wenn sie nicht mehr benötigt wird.
Weitere Informationen finden Sie unter Verwenden von Sperren entfernen.