ioAcquireRemoveLock 宏 (wdm.h)

IoAcquireRemoveLock 例程递增删除锁的计数,指示不应从设备堆栈中分离或删除关联的设备对象。

语法

NTSTATUS
IoAcquireRemoveLock (
    _Inout_ PIO_REMOVE_LOCK RemoveLock,
    _In_opt_ PVOID          Tag
    );

参数

[in] RemoveLock

指向调用方使用对 IoInitializeRemoveLock 的上一次调用初始化的IO_REMOVE_LOCK结构的指针。

[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)
Library 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 (wdm) PowerDownFail (wdm) PowerUpFail (wdm) RemoveLock (wdm) RemoveLockCheck (wdm) RemoveLockForward (wdm) RemoveLockFor2 (wdm) 、 RemoveLockForwardDeviceControl (wdm) RemoveLockForwardDeviceControl2 (wdm) RemoveLockForwardDeviceControlInternal (wdm) RemoveLockForwardDeviceControlInternal2 (wdm) RemoveLockForwardRead (wdm) RemoveLockForwardRead2 (wdm) RemoveLockForwardWrite (wdm) RemoveLockForwardWrite2 (wdm) RemoveLockMnRemove (wdm) RemoveLockMnReremove2 (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) WmiForward (wdm)

另请参阅

IoInitializeRemoveLock

IoReleaseRemoveLock

IoReleaseRemoveLockAndWait