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


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