IoAcquireVpbSpinLock 函数 (ntifs.h)

IoAcquireVpbSpinLock 例程获取卷参数块 (VPB) 旋转锁。

语法

void IoAcquireVpbSpinLock(
  [out] PKIRQL Irql
);

参数

[out] Irql

指向调用方分配的变量的指针,该变量用于保存当前 IRQL 以便后续调用 IoReleaseVpbSpinLock。 通常, Irql 作为局部变量保存在堆栈上。

返回值

备注

文件系统调用 IoAcquireVpbSpinLock 以获取 VPB 旋转锁。 在访问 VPB 的以下任何字段之前,必须获取此全局旋转锁:

  • 标志 (具体而言,VPB_MOUNTED)

  • DeviceObject

  • RealDevice

  • ReferenceCount

每次成功调用 IoAcquireVpbSpinLock 都必须与后续调用 IoReleaseVpbSpinLock 相匹配。 为了防止死锁,VPB 旋转锁的持有者必须在不再需要它时立即释放它。

在使用 IoAcquireVpbSpinLockIoReleaseVpbSpinLock 之前,强烈建议驱动程序编写者研究在 FASTFAT 示例中使用这些例程的方式。

调用 IoAcquireVpbSpinLock 后,调用方在 IRQL DISPATCH_LEVEL执行。 调用 IoReleaseVpbSpinLock 可还原调用方的原始 IRQL。

要求

要求
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport)

另请参阅

IoReleaseVpbSpinLock