IoReleaseRemoveLock 宏 (wdm.h)
IoReleaseRemoveLock 例程释放通过先前调用 IoAcquireRemoveLock 获取的移除锁。
语法
void IoReleaseRemoveLock(
[in] RemoveLock,
[in] Tag
);
参数
[in] RemoveLock
指向 IO_REMOVE_LOCK 结构的指针,调用方将该结构传递给对 IoAcquireRemoveLock 的上一次调用。
[in] Tag
指向调用方提供的标记的指针,该标记已传递给对 IoAcquireRemoveLock 的上一次调用。
如果驱动程序在获取锁时指定了 Tag ,则驱动程序在释放锁时必须指定相同的 Tag 。
如果对 IoAcquireRemoveLock 的调用未指定 Tag,则此参数为 NULL。
返回值
无
备注
驱动程序在完成调用 IoAcquireRemoveLock 的 I/O 操作后调用 IoReleaseRemoveLock。
- 对于 I/O 操作 (包括设置 IoCompletion 例程的电源和 PnP IRP) ,驱动程序应在调用 IoCompleteRequest 后在 IoCompletion 例程中调用 IoReleaseRemoveLock。
- 对于未设置 IoCompletion 例程的 I/O 操作,驱动程序应在将当前 IRP 传递给下一个较低级别的驱动程序之后,但在退出调度例程之前调用 IoReleaseRemoveLock 。
IoReleaseRemoveLock 会减少删除锁的未完成购置计数。 如果计数为零,并且驱动程序已收到 IRP_MN_REMOVE_DEVICE 请求, IoReleaseRemoveLock 将设置内部事件。 当驱动程序准备好删除设备对象时,它会调用类似的例程 IoReleaseRemoveLockAndWait。 驱动程序仅在 IRP_MN_REMOVE_DEVICE请求的 调度代码中发出此调用。 在 IoReleaseRemoveLock 设置指示购置计数为零的事件之前,IoReleaseRemoveLockAndWait 例程不会返回。 IoReleaseRemoveLockAndWait 返回后,驱动程序可以安全地分离并删除设备对象。
有关详细信息,请参阅 使用删除锁。