Функция IoWritePartitionTable (ntddk.h)
Подпрограмма IoWritePartitionTable устаревшей и предоставляется только для поддержки существующих драйверов. Новые драйверы должны использовать IoWritePartitionTableEx.
IoWritePartitionTable записывает таблицы секций из записей в буфере списка секций для каждой секции на диске, представленной заданным объектом устройства.
Синтаксис
NTSTATUS IoWritePartitionTable(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG SectorSize,
[in] ULONG SectorsPerTrack,
[in] ULONG NumberOfHeads,
[in] _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
);
Параметры
[in] DeviceObject
Указатель на объект устройства, представляющий диск, таблицы секций которого должны быть записаны.
[in] SectorSize
Задает размер в байтах секторов на устройстве.
[in] SectorsPerTrack
Указывает размер трека на устройстве.
[in] NumberOfHeads
Указывает количество треков на цилиндр.
[in] PartitionBuffer
Указатель на буфер макета диска, содержащий записи списка разделов. Дополнительные сведения см. в DRIVE_LAYOUT_INFORMATION.
Возвращаемое значение
IoWritePartitionTablo возвращает код состояния STATUS_SUCCESS если все записи были завершены без ошибок. В случае сбоя коды ошибок, возвращаемые IoWritePartitionTable, могут включать, но не ограничиваются следующим списком:
Возвращаемый код | Описание |
---|---|
STATUS_DEVICE_NOT_READY | Указывает, что сбой считывает правильную геометрию диска. |
STATUS_INSUFFICIENT_RESOURCES | Указывает на сбой выделения необходимых ресурсов (например, кучи памяти, IRPs и т. д.). |
STATUS_UNSUCCESSFUL | Указывает, что в нулевом секторе не было ожидаемой сигнатуры диска MBR. |
Замечания
IoWritePartitionTable должны использоваться только драйверами дисков. Другие драйверы должны использовать вместо этого запрос ввода-вывода IOCTL_DISK_SET_DRIVE_LAYOUT диска.
IoWritePartitionTable вызывается, когда драйвер устройства диска запрашивается, чтобы задать тип секции в записи таблицы секций или повторно разделить диск с помощью запроса IRP_MJ_DEVICE_CONTROL. Запрос на управление устройством обычно выдает программа форматирования, которая выполняет функции управления ввода-вывода на секциях и дисках на компьютере.
Чтобы сбросить тип секции, драйвер передает указатель на объект устройства, представляющий физический диск, и количество секций, связанных с объектом устройства, который открыт служебной программой форматирования. Если диск должен быть динамически разделен, драйвер диска должен удалить свой набор объектов устройства, представляющих текущие секции диска, и создать новый набор объектов устройства, представляющих новые секции на диске.
Приложения, которые создают и удаляют секции и требуют полного описания системы, должны вызывать IoReadPartitionTable с ReturnRecognizedPartitions значение FALSE. Структура макета диска может быть изменена программой системного формата, чтобы отразить новую конфигурацию диска.
IoWritePartitionTable синхронно. Он должен вызываться подпрограммой диспетчеризации драйвера диска или потоком драйвера. Таким образом, все потоки пользовательской и файловой системы должны быть готовы ввести состояние ожидания при выдаче запроса на управление устройством для сброса типов секций для устройства.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ntddk.h (include Ntddk.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
правил соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |