Функция 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) |