IoReleaseRemoveLock 宏 (wdm.h)
IoReleaseRemoveLock 例程會釋放使用先前呼叫 IoAcquireRemoveLock 取得的移除鎖定。
語法
void IoReleaseRemoveLock(
[in] RemoveLock,
[in] Tag
);
參數
[in] RemoveLock
呼叫端傳遞至 IoAcquireRemoveLock 先前呼叫之IO_REMOVE_LOCK結構的指標。
[in] Tag
傳遞給 先前呼叫 IoAcquireRemoveLock 之呼叫端所提供標記的指標。
如果驅動程式在取得鎖定時指定 Tag ,則驅動程式必須在釋放鎖定時指定相同的 Tag 。
如果 對 IoAcquireRemoveLock 的呼叫未指定 Tag,則此參數為 NULL。
傳回值
無
備註
驅動程式在完成稱為IoAcquireRemoveLock的I/O作業時呼叫IoReleaseRemoveLock。
- 對於 I/O 作業, (包括設定 IoCompletion 例程的 power 和 PnP IRP) ,驅動程式應該在 IoCompletion 例程中呼叫 IoReleaseRemoveLock,然後在呼叫 IoCompleteRequest 之後呼叫 IoRemoveLock。
- 對於未設定 IoCompletion 例程的I/O作業,驅動程式應該在將目前的IRP傳遞至下一個較低的驅動程序之後呼叫 IoReleaseRemoveLock ,但在結束分派例程之前。
IoReleaseRemoveLock 會遞減移除鎖定未完成的下載數計數。 如果計數變成零,而且驅動程式收到 IRP_MN_REMOVE_DEVICE 要求, IoReleaseRemoveLock 會設定內部事件。 當驅動程式準備好刪除裝置物件時,它會呼叫類似的例程 IoReleaseRemoveLockAndWait。 驅動程式只會在其分派程式代碼中針對 IRP_MN_REMOVE_DEVICE 要求進行此呼叫。 IoReleaseRemoveLockAndWait 例程不會傳回,直到 IoReleaseRemoveLock 設定指出下載數計數為零的事件為止。 IoReleaseRemoveLockAndWait 傳回之後,驅動程式可以安全地卸離和刪除裝置物件。
如需詳細資訊,請參閱 使用移除鎖定。