Функция IoAcquireVpbSpinLock (ntifs.h)

Подпрограмма IoAcquireVpbSpinLock получает спиновую блокировку блока параметров тома (VPB).

Синтаксис

void IoAcquireVpbSpinLock(
  [out] PKIRQL Irql
);

Параметры

[out] Irql

Указатель на переменную, выделенную вызывающим объектом, в которой необходимо сохранить текущий irQL для последующего вызова IoReleaseVpbSpinLock. Обычно irql сохраняется в стеке в виде локальной переменной.

Возвращаемое значение

None

Remarks

Файловые системы вызывают IoAcquireVpbSpinLock , чтобы получить спиновую блокировку VPB. Эту глобальную блокировку спина необходимо получить перед доступом к любому из следующих полей VPB:

  • Флаги (в частности, VPB_MOUNTED)

  • DeviceObject

  • RealDevice

  • ReferenceCount

Каждый успешный вызов IoAcquireVpbSpinLock должен соответствовать последующему вызову IoReleaseVpbSpinLock. Чтобы предотвратить взаимоблокировку, держатель спиновой блокировки VPB должен немедленно освободить ее, когда она больше не нужна.

Перед использованием IoAcquireVpbSpinLock и IoReleaseVpbSpinLock настоятельно рекомендуется изучить, как эти подпрограммы используются в примере FASTFAT.

После вызова IoAcquireVpbSpinLock вызывающий объект выполняется в DISPATCH_LEVEL IRQL. Вызов IoReleaseVpbSpinLock восстанавливает исходный IRQL вызывающего объекта.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport)

См. также раздел

IoReleaseVpbSpinLock