IoReleaseRemoveLockAndWait 宏 (wdm.h)
IoReleaseRemoveLockAndWait 例程會釋放驅動程式在先前呼叫 IoAcquireRemoveLock 中取得的移除鎖定,並等到所有取得的鎖定都釋放為止。
語法
void IoReleaseRemoveLockAndWait(
[in] RemoveLock,
[in] Tag
);
參數
[in] RemoveLock
呼叫者在先前呼叫IoAcquireRemoveLock中傳遞之IO_REMOVE_LOCK結構的指標。
[in] Tag
在先前呼叫 IoAcquireRemoveLock 中傳遞之呼叫端提供的標籤指標。
如果驅動程式在取得鎖定時指定 Tag ,則驅動程式必須在釋放鎖定時指定相同的 Tag 。
如果 對 IoAcquireRemoveLock 的呼叫未指定 Tag,則此參數為 NULL。
傳回值
無
備註
驅動程式通常會在其分派程式代碼中呼叫此例程,以取得 IRP_MN_REMOVE_DEVICE 要求。 若要允許佇列 I/O 要求完成,每個驅動程式都應該在將移除 IRP 傳遞至下一個較低的驅動程序之後呼叫 IoReleaseRemoveLockAndWait,並在釋放記憶體之前呼叫 IoDetachDevice 或呼叫 IoDeleteDevice。 IoReleaseRemoveLockAndWait 例程會等候總線驅動程式取消任何可能未完成 (的 IRP,例如IRP_MN_WAIT_WAKE IRP) 。
驅動程式必須先取得移除鎖定,才能呼叫 IoReleaseRemoveLockAndWait。 一般而言,驅動程式會在其 DispatchPnp 例程中早期呼叫 IoAcquireRemoveLock,再呼叫 switch 語句。 因此,系統會針對每個 PnP 作業取得鎖定,包括在處理IRP_MN_REMOVE_DEVICE的程式代碼中呼叫 IoReleaseRemoveLockAndWait 之前所需的擷取。
若要從 IRP_MN_REMOVE_DEVICE 分派程序代碼以外的程式代碼釋放鎖定,請使用 IoReleaseRemoveLock。
針對特定移除鎖定呼叫 IoReleaseRemoveLockAndWait 之後,相同移除鎖定的 IoAcquireRemoveLock 後續呼叫將會失敗。 IoReleaseRemoveLockAndWait 在解除移除鎖定的所有未完成取得之前不會傳回。
IoReleaseRemoveLockAndWait 傳回之後,驅動程式應該將裝置視為處於已準備好移除的狀態,且無法執行 I/O 作業。 因此,驅動程式不得呼叫 IoInitializeRemoveLock 例程來重新初始化移除鎖定。 驅動程式 驗證器 正在驗證驅動程式時違反此規則,將會導致錯誤檢查。
如需詳細資訊,請參閱 使用移除鎖定。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平台 | 桌面 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | IoReleaseRemoveLockAndWaitOutsideRemoveDevice (wdm) 、 RemoveLock (wdm) 、 RemoveLockCheck (wdm) 、 RemoveLockMnRemove (wdm) 、 RemoveLockMnRemove2 (wdm) 、 RemoveLockReleaseCleanup (wdm) 、 RemoveLockReleaseClose (wdm) 、 RemoveLockReleaseCreate (wdm) 、 RemoveLockReleaseDeviceControl (wdm) 、 RemoveLockReleaseInternalDeviceControl (wdm) 、 RemoveLockReleasePower (wdm) 、 RemoveLockReleaseRead (wdm) 、 RemoveLockReleaseShutdown (wdm) 、 RemoveLockReleaseSystemControl (wdm) 、 RemoveLockReleaseWrite (wdm) |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應