Функция 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 | Указывает на сбой при выделении необходимых ресурсов (например, памяти кучи, IRP и т. д.). |
STATUS_UNSUCCESSFUL | Указывает, что нулевой сектор не имеет ожидаемой сигнатуры диска MBR. |
Комментарии
IoWritePartitionTable должен использоваться только драйверами дисков. Другие драйверы должны использовать вместо этого запрос IOCTL_DISK_SET_DRIVE_LAYOUT дискового ввода-вывода.
IoWritePartitionTable вызывается, когда драйвер дискового устройства запрашивается для задания типа секционирования в записи таблицы секций или повторного секционирования диска по запросу IRP_MJ_DEVICE_CONTROL. Запрос на управление устройством обычно отправляется служебной программой форматирования, которая выполняет функции управления вводом-выводом для разделов и дисков на компьютере.
Чтобы сбросить тип секции, драйвер передает указатель на объект устройства, представляющий физический диск, и номер раздела, связанного с объектом устройства, открытый программой форматирования. При динамическом повторном секционирование диска драйвер диска должен удалить набор объектов устройств, представляющих текущие разделы диска, и создать новый набор объектов устройств, представляющих новые разделы на диске.
Приложения, которые создают и удаляют секции и требуют полных описаний системы, должны вызывать IoReadPartitionTable с параметромReturnRecognizedPartitions со значением FALSE. Структуру макета диска можно изменить с помощью программы системного формата, чтобы отразить новую конфигурацию диска.
IoWritePartitionTable является синхронным. Он должен вызываться подпрограммой Dispatch драйвера диска или потоком драйвера. Таким образом, все потоки пользователя и файловой системы должны быть готовы к переходу в состояние ожидания при выдаче запроса на управление устройством для сброса типов секций для устройства.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | ntddk.h (включая Ntddk.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |