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


IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)

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

Однако если приложение или компонент в режиме ядра должен считывать данные из определенного сплетения вместо того, чтобы позволить диспетчеру томов выбрать один из них, он может использовать этот IOCTL для этого.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Вызывающий объект вставляет структуру VOLUME_READ_PLEX_INPUT, содержащую логическое смещение, в начало буфера в Irp-AssociatedIrp.SystemBuffer>.

Длина входного буфера

Parameters.DeviceIoControl.InputBufferLength в расположении стека ввода-вывода IRP указывает размер входного буфера в байтах, который должен быть больше или равен значению sizeof(VOLUME_READ_PLEX_INPUT).

Выходной буфер

Как и IRP_MJ_READ, этот IOCTL хранит данные чтения в буфере памяти, переданном в виде списка дескрипторов памяти (MDL) в поле Irp-MdlAddress>.

Длина выходного буфера

Длина буфера.

Блок состояния

Если операция выполнена успешно, диспетчер томов задает для поля Состояние значение STATUS_SUCCESS.

Структура VOLUME_READ_PLEX_INPUT в Irp-AssociatedIrp.SystemBuffer> имеет элемент Length, который должен быть выровнен по 512-байтовой границе. Если длина не имеет правильного выравнивания, операция завершается сбоем, а диспетчер томов задает для поля Состояние значение VKE_EINVAL.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows XP.
Верхняя часть ntddvol.h (включая Ntddvol.h)

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

VOLUME_READ_PLEX_INPUT