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
每次调用 IoAcquireRemoveLock 都必须具有对 IoReleaseRemoveLock 的相应调用。

IoReleaseRemoveLock 会减少删除锁的未完成购置计数。 如果计数为零,并且驱动程序已收到 IRP_MN_REMOVE_DEVICE 请求, IoReleaseRemoveLock 将设置内部事件。 当驱动程序准备好删除设备对象时,它会调用类似的例程 IoReleaseRemoveLockAndWait。 驱动程序仅在 IRP_MN_REMOVE_DEVICE请求的 调度代码中发出此调用。 在 IoReleaseRemoveLock 设置指示购置计数为零的事件之前,IoReleaseRemoveLockAndWait 例程不会返回。 IoReleaseRemoveLockAndWait 返回后,驱动程序可以安全地分离并删除设备对象。

有关详细信息,请参阅 使用删除锁

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 桌面
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 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) RemoveLockMnRemove2 (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)

另请参阅

IoAcquireRemoveLock

IoInitializeRemoveLock

IoReleaseRemoveLockAndWait