IoReleaseRemoveLock-Makro (wdm.h)
Die IoReleaseRemoveLock-Routine gibt eine Entfernungssperre frei, die mit einem vorherigen Aufruf von IoAcquireRemoveLock erworben wurde.
Syntax
void IoReleaseRemoveLock(
[in] RemoveLock,
[in] Tag
);
Parameter
[in] RemoveLock
Zeiger auf eine IO_REMOVE_LOCK Struktur, die der Aufrufer an einen vorherigen Aufruf von IoAcquireRemoveLock übergeben hat.
[in] Tag
Zeiger auf ein vom Aufrufer bereitgestelltes Tag, das an einen vorherigen Aufruf von IoAcquireRemoveLock übergeben wurde.
Wenn ein Treiber beim Erwerb der Sperre ein Tag angegeben hat, muss der Treiber beim Freigeben der Sperre das gleiche Tag angeben.
Wenn der Aufruf von IoAcquireRemoveLock kein Tag angegeben hat, ist dieser Parameter NULL.
Rückgabewert
Keine
Bemerkungen
Ein Treiber ruft IoReleaseRemoveLock auf, wenn er den E/A-Vorgang abgeschlossen hat, für den er IoAcquireRemoveLock aufgerufen hat.
- Für E/A-Vorgänge (einschließlich Energie und PnP-IRPs), die eine IoCompletion-Routine festlegen, sollte ein Treiber IoReleaseRemoveLock in der IoCompletion-Routine aufrufen, nachdem IoCompleteRequest aufgerufen wurde.
- Bei E/A-Vorgängen, die keine IoCompletion-Routine festlegen, sollte ein Treiber IoReleaseRemoveLock aufrufen, nachdem er den aktuellen IRP an den nächstniedrigen Treiber übergeben hat, aber vor dem Beenden der Dispatchroutine.
IoReleaseRemoveLock verringert die Anzahl der ausstehenden Käufe der Entfernungssperre. Wenn die Anzahl auf 0 (null) lautet und der Treiber eine IRP_MN_REMOVE_DEVICE-Anforderung empfangen hat, legt IoReleaseRemoveLock ein internes Ereignis fest. Wenn ein Treiber bereit ist, ein Geräteobjekt zu löschen, ruft er eine ähnliche Routine auf, IoReleaseRemoveLockAndWait. Der Treiber führt diesen Aufruf nur in seinem Dispatchcode für eine IRP_MN_REMOVE_DEVICE-Anforderung aus. Die IoReleaseRemoveLockAndWait-Routine wird erst zurückgegeben, wenn IoReleaseRemoveLock das Ereignis festlegt, das angibt, dass die Erfassungsanzahl null ist. Nachdem IoReleaseRemoveLockAndWait zurückgegeben wurde, kann der Treiber das Geräteobjekt sicher trennen und löschen.
Weitere Informationen finden Sie unter Verwenden von Sperren entfernen.