IoReleaseRemoveLock-Makro (wdm.h)
Die IoReleaseRemoveLock Routine gibt eine entfernte Sperre frei, die mit einem vorherigen Aufruf von IoAcquireRemoveLockabgerufen 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 an IoAcquireRemoveLockübergeben hat.
[in] Tag
Zeiger auf ein vom Aufrufer bereitgestelltes Tag, das an einen vorherigen Aufruf an IoAcquireRemoveLockübergeben wurde.
Wenn ein Treiber beim Erwerb der Sperre einen Tag angegeben hat, muss der Treiber beim Freigeben der Sperre denselben Tag- angeben.
Wenn der Aufruf von IoAcquireRemoveLock kein Tag-angegeben hat, ist dieser Parameter NULL-.
Rückgabewert
Nichts
Bemerkungen
Ein Treiber ruft IoReleaseRemoveLock auf, wenn er den E/A-Vorgang abgeschlossen hat, für den er IoAcquireRemoveLockaufgerufen hat.
- Bei E/A-Vorgängen (einschließlich Energie- und PnP-IRPs), die eine IoCompletion- Routine festlegen, sollte ein Treiber IoReleaseRemoveLock- in der IoCompletion- Routine aufrufen, nachdem IoCompleteRequestaufgerufen wurde.
- Bei E/A-Vorgängen, die keine IoCompletion- Routine festlegen, sollte ein Treiber IoReleaseRemoveLock aufrufen, nachdem der aktuelle IRP an den nächsten niedrigeren Treiber übergeben wurde, aber bevor die Verteilerroutine beendet wird.
IoReleaseRemoveLock die Anzahl der ausstehenden Käufe der Entfernungssperre erhöht. Wenn die Anzahl auf Null geht und der Treiber eine IRP_MN_REMOVE_DEVICE Anforderung empfangen hat, legt IoReleaseRemoveLock ein internes Ereignis fest. Wenn ein Treiber zum Löschen eines Geräteobjekts bereit ist, ruft er eine ähnliche Routine auf, IoReleaseRemoveLockAndWait. Der Treiber führt diesen Aufruf nur im Verteilercode 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 Kaufanzahl null ist. Nachdem IoReleaseRemoveLockAndWait zurückgegeben wurde, kann der Treiber das Geräteobjekt sicher trennen und löschen.
Weitere Informationen finden Sie unter Using Remove Locks.