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


Функция IoReadPartitionTable (ntddk.h)

Подпрограмма IoReadPartitionTableустарела и предоставляется только для поддержки существующих драйверов. Новые драйверы должны использовать IoReadPartitionTableEx. IoReadPartitionTable считывает список секций на диске с указанным размером сектора и создает запись в списке секций для каждой распознанной секции.

Синтаксис

NTSTATUS IoReadPartitionTable(
  [in]  PDEVICE_OBJECT            DeviceObject,
  [in]  ULONG                     SectorSize,
  [in]  BOOLEAN                   ReturnRecognizedPartitions,
  [out] _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
);

Параметры

[in] DeviceObject

Указатель на объект устройства для диска, секции которого должны считываться.

[in] SectorSize

Указывает размер секторов на диске.

[in] ReturnRecognizedPartitions

Указывает, следует ли возвращать только распознанные секции или все записи секций.

[out] PartitionBuffer

Указатель на неинициализированный адрес. В случае успешного выполнения IoReadPartitionTable выделяет память для этого буфера из непагрегированного пула и возвращает сведения о макете диска в нем.

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

Эта подпрограмма возвращает значение STATUS_SUCCESS, если была прочитана хотя бы одна таблица секторов. В противном случае он возвращает состояние ошибки и задает для указателя PartitionBufferзначение NULL.

Комментарии

IoReadPartitionTable должен использоваться только драйверами дисков. Другие драйверы должны использовать вместо этого запрос IOCTL_DISK_GET_DRIVE_LAYOUT дискового ввода-вывода.

Драйверы дискового устройства вызывают эту подпрограмму во время инициализации драйвера.

Вызывающий объект отвечает за освобождение объекта PartitionBuffer , выделенного этой подпрограммой, с помощью ExFreePool.

Алгоритм, используемый этой подпрограммой, определяется логическим значением ReturnRecognizedPartitions:

  • Чтение каждой таблицы секций и заполнение элемента в массиве PARTITION_INFORMATION записей для каждой найденной допустимой и распознанной секции. На массив записей сведений о секции указывает элемент PartitionEntryструктуры DRIVE_LAYOUT_INFORMATION . Структура DRIVE_LAYOUT_INFORMATION находится в расположении, на который указывает PartitionBuffer. Расширенные секции расположены для поиска других таблиц секций, но для них не создаются записи.
Чтение каждой таблицы секций и для каждой записи заполните запись сведений о секции. Расширенные секции находятся для поиска каждой секции на диске; для них также создаются записи.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Ntddk.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

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

IOCTL_DISK_GET_DRIVE_LAYOUT

IOCTL_DISK_GET_PARTITION_INFO

IOCTL_DISK_SET_DRIVE_LAYOUT

IoSetPartitionInformation

IoWritePartitionTable