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