Поделиться через


Функция 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вызывающий объект выполняется на DISPATCH_LEVEL IRQL. Вызов IoReleaseVpbSpinLock восстанавливает исходный IRQL вызывающего объекта.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
правил соответствия DDI HwStorPortProhibitedDIs(storport)

См. также

IoReleaseVpbSpinLock