Структура VPB (wdm.h)

Структура блока параметров тома (VPB) используется для сопоставления объекта устройства, представляющего подключенный том файловой системы, с объектом устройства, представляющим физическое или виртуальное дисковое устройство.

Синтаксис

typedef struct _VPB {
  CSHORT                Type;
  CSHORT                Size;
  USHORT                Flags;
  USHORT                VolumeLabelLength;
  struct _DEVICE_OBJECT *DeviceObject;
  struct _DEVICE_OBJECT *RealDevice;
  ULONG                 SerialNumber;
  ULONG                 ReferenceCount;
  WCHAR                 VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
} VPB, *PVPB;

Члены

Type

Элемент, доступный только для чтения, используемый системой для указания того, что структура является объектом VPB.

Size

Элемент, доступный только для чтения, используемый системой для указания того, что структура является объектом VPB.

Flags

Значение Значение
VPB_MOUNTED Этот бит задается диспетчером ввода-вывода, чтобы указать, что файловая система подключила логический том.
VPB_LOCKED Этот бит может быть задан или очищен драйвером файловой системы, который подключил логический том. Если этот параметр задан, диспетчер ввода-вывода завершит все последующие запросы на создание или открытие, предназначенные для логического тома. Файловые системы могут задать этот член в ответ на запросы приложения на блокировку тома или временно запретить выполнение любого запроса на создание или открытие.
VPB_PERSISTENT Этот бит может быть задан или очищен драйверами файловой системы. Если этот параметр задан, диспетчер операций ввода-вывода не удалит структуру VPB, даже если referenceCount равно нулю.
VPB_REMOVE_PENDING Задает диспетчер Plug and Play (PnP), чтобы указать, что базовое устройство удаляется.
VPB_RAW_MOUNT Указывает, что на устройстве может быть подключена только файловая система RAW.
VPB_DIRECT_WRITES_ALLOWED Указывает, что разрешены прямые операции записи в том. Этот флаг устанавливается диспетчером ввода-вывода при подключении файловой системы RAW или самой файловой системой, когда определяет, что том можно безопасно записать. Обычно при отключении файловой системы запись в том безопасно.

VolumeLabelLength

Элемент для чтения и записи, указывающий длину метки тома в байтах. Этот элемент должен быть задан драйвером файловой системы. Если у тома нет метки, этот элемент должен иметь нулевое значение.

DeviceObject

Элемент для чтения и записи, заданный драйвером файловой системы, указывающий на объект устройства типа FILE_DEVICE_DISK_FILE_SYSTEM. Этот объект устройства создается драйвером файловой системы для представления подключенного тома.

RealDevice

Элемент, доступный только для чтения, заданный диспетчером ввода-вывода, который указывает на объект устройства для физического или виртуального диска, содержащего подключаемый логический том (на который указывает DeviceObject).

SerialNumber

Элемент для чтения и записи, указывающий серийный номер, связанный с томом файловой системы. Этот член должен быть задан драйвером файловой системы, если он доступен.

ReferenceCount

Доступный только для чтения элемент, указывающий количество ссылок для структуры VPB. Если число ссылок для структуры VPB больше нуля, диспетчер ввода-вывода не освобождает структуру VPB. Имейте в виду, что ReferenceCount можно считать членом для чтения и записи, если драйвер файловой системы должен сохранить том для обработки запроса на удаление.

VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]

Элемент для чтения и записи, заданный драйвером файловой системы, указывающий метку подключенного тома. Длина метки тома не должна превышать 32 символа. В настоящее время MAXIMUM_VOLUME_LABEL_LENGTH определяется следующим образом:

#define MAXIMUM_VOLUME_LABEL_LENGTH  (32 * sizeof(WCHAR));

Комментарии

Объект блока параметров тома (VPB) используется для создания связи между объектом физического диска и объектом устройства логического тома. То есть VPB сопоставляет объект устройства тома файловой системы с устройством или разделом, к которому подключен том. Объект VPB существует только для объектов устройств, представляющих физический носитель, виртуальный носитель или логический носитель, которые можно подключить.

Диспетчер операций ввода-вывода выделяет и освобождает память для структуры VPB из невыгребованного пула. Это выделение (или освобождение) происходит при создании объекта устройства (как описано выше) путем вызова функций IoCreateDevice или IoVerifyVolume . То есть создаваемый объект устройства должен иметь один из следующих типов:

  • FILE_DEVICE_DISK

  • FILE_DEVICE_CD_ROM

  • FILE_DEVICE_TAPE

  • FILE_DEVICE_VIRTUAL_DISK

Дополнительные сведения о типах объектов устройств см. в разделе Указание типов устройств.

Драйверы должны вызывать IoAcquireVpbSpinLock перед доступом к любым применимым членам объекта VPB.

Непрозрачные элементы следует считать недоступными. Драйверы с зависимостями от расположений элементов объекта или доступом к непрозрачным элементам могут со временем оставаться переносимыми и совместимыми с другими драйверами.

Драйверы могут использовать доступные только для чтения элементы для получения соответствующей информации. Драйверы не должны изменять доступные только для чтения элементы или объект, на который указывает элемент, если элемент является указателем.

Требования

Требование Значение
Заголовок wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h, FltKernel.h)

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

DEVICE_OBJECT

FILE_OBJECT

Способ подключения тома