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 ,以在不再需要锁时释放锁。
有关详细信息,请参阅 使用删除锁。