共用方式為


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 ,但在結束分派例程之前。
IoAcquireRemoveLock 的每個呼叫都必須有 對 IoReleaseRemoveLock 的對應呼叫。

IoReleaseRemoveLock 會遞減移除鎖定未完成的下載數計數。 如果計數變成零,而且驅動程式收到 IRP_MN_REMOVE_DEVICE 要求, IoReleaseRemoveLock 會設定內部事件。 當驅動程式準備好刪除裝置物件時,它會呼叫類似的例程 IoReleaseRemoveLockAndWait。 驅動程式只會在其分派程式代碼中針對 IRP_MN_REMOVE_DEVICE 要求進行此呼叫。 IoReleaseRemoveLockAndWait 例程不會傳回,直到 IoReleaseRemoveLock 設定指出下載數計數為零的事件為止。 IoReleaseRemoveLockAndWait 傳回之後,驅動程式可以安全地卸離和刪除裝置物件。

如需詳細資訊,請參閱 使用移除鎖定

規格需求

需求
最低支援的用戶端 從 Windows 2000 開始提供。
目標平台 桌面
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 RemoveLock (wdm) RemoveLockCheck (wdm) RemoveLockForward (wdm) RemoveLockForward2 (wdm) RemoveLockForwardDeviceControl (wdm) RemoveLockForwardDeviceControl2 (wdm) RemoveLockForwardDeviceControlInternal (wdm) RemoveLockForwardDeviceControlInternal2 (wdm) RemoveLockForwardRead (wdm) RemoveLockForwardRead2 (wdm) RemoveLockForwardWrite (wdm) RemoveLockForwardWrite2 (wdm) RemoveLockMnRemove (wdm) 、 RemoveLockMnRemove2 (wdm) RemoveLockMnSurpriseRemove (wdm) RemoveLockQueryMnRemove (wdm) RemoveLockRelease2 (wdm) RemoveLockReleaseCleanup (wdm) RemoveLockReleaseClose (wdm) RemoveLockReleaseCreate (wdm) RemoveLockReleaseDeviceControl (wdm) RemoveLockReleaseInternalDeviceControl (wdm ) 、 RemoveLockReleasePnp (wdm) RemoveLockReleasePower (wdm) RemoveLockReleaseRead (wdm) RemoveLockReleaseShutdown (wdm) RemoveLockReleaseSystemControl (wdm ) 、RemoveLockReleaseWrite (wdm)

另請參閱

IoAcquireRemoveLock

IoInitializeRemoveLock

IoReleaseRemoveLockAndWait