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 旋转锁的持有者必须在不再需要它时立即释放它。
在使用 IoAcquireVpbSpinLock 和 IoReleaseVpbSpinLock之前,强烈建议驱动程序编写器研究 FASTFAT 示例中使用这些例程的方式。
调用 IoAcquireVpbSpinLock后,调用方在 IRQL DISPATCH_LEVEL执行。 调用 IoReleaseVpbSpinLock 还原调用方的原始 IRQL。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | ntifs.h (include Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDIS(storport) |