IoAcquireRemoveLock 宏 (wdm.h)
IoAcquireRemoveLock 例程會遞增移除鎖定的計數,指出相關聯的裝置對象不應該從裝置堆疊中斷連結或刪除。
語法
NTSTATUS
IoAcquireRemoveLock (
_Inout_ PIO_REMOVE_LOCK RemoveLock,
_In_opt_ PVOID Tag
);
參數
[in] RemoveLock
IO_REMOVE_LOCK 結構的指標 ,呼叫端使用先前對 IoInitializeRemoveLock 的呼叫初始化。
[in, optional] Tag
選擇性地指向呼叫端提供的標籤,以識別取得移除鎖定的這個實例。 例如,驅動程式 Dispatch 例程通常會將此參數設定為例程正在處理的 IRP 指標。
如果驅動程式在呼叫IoAcquireRemoveLock時指定Tag,驅動程式必須在對IoReleaseRemoveLock的對應呼叫中提供相同的Tag。
卷標不一定是唯一的,但在偵錯期間應該有意義。
傳回值
無
備註
IoAcquireRemoveLock 宏會包裝並假設 IoAcquireRemoveLockEx 的傳回值,這會傳回 NTSTATUS:
傳回值 | 描述 |
---|---|
STATUS_SUCCESS | 指出呼叫成功。 |
STATUS_DELETE_PENDING | 錯誤值,指出驅動程式已收到裝置的IRP_MN_REMOVE_DEVICE,並已呼叫 IoReleaseRemoveLockandWait。 該例程正在等候所有移除鎖定清除,再將控制權傳回驅動程式。 |
如果例程傳回STATUS_SUCCESS以外的任何值,請勿在裝置上啟動任何新的作業。
驅動程式必須先使用呼叫 IoInitializeRemoveLock 來初始化移除鎖定,才能使用鎖定。
驅動程式必須呼叫 IoReleaseRemoveLock ,以在不再需要鎖定時釋放鎖定。
如需詳細資訊,請參閱 使用移除鎖定。