共用方式為


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 ,以在不再需要鎖定時釋放鎖定。

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

規格需求

需求
目標平台 桌面
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 CompleteRequestStatusCheck (wdm) MarkDevicePower (wdm ) 、 MarkPower (wdm ) 、 MarkPowerDown (wdm ) 、 MarkQueryRelations (wdm) MarkStartDevice (wdm) MultRemoveLock (wdm) NsRemoveLockMnRemove (wdm) NsRemoveLockMnSurpriseRemove (wdm) NsRemoveLockQueryMnRemove (wdm ) 、 PowerDownAllocate () PowerDownFail (wdm) PowerUpFail (wdm ) 、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 ) 、 RemoveLockMnRemovemove2 (wdm) RemoveLockMnSurpriseRemove (wdm ) 、 RemoveLockQueryMnRemove (wdm ) 、 RemoveLockRelease2 (wdm) 、 RemoveLockReleaseCleanup (wdm) RemoveLockReleaseClose (wdm) RemoveLockReleaseCreate (wdm ) 、 RemoveLockReleaseDeviceControl (wdm) RemoveLockReleaseInternalDeviceControl (wdm) RemoveLockRelease (wdm) RemoveLockReleasePower (wdm) 、RemoveLockReleaseRead (wdm ) 、RemoveLockReleaseShutdown (wdm) RemoveLockReleaseSystemControl (wdm) RemoveLockReleaseWrite (wdm) WmiForward (wdm)

另請參閱

IoInitializeRemoveLock

IoReleaseRemoveLock

IoReleaseRemoveLockAndWait