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