Функция IoWritePartitionTableEx (ntddk.h)

Подпрограмма IoWritePartitionTableEx записывает таблицы секций из записей в буфере списка секций для каждой секции на диске, представленной заданным объектом устройства.

Синтаксис

NTSTATUS IoWritePartitionTableEx(
  [in] PDEVICE_OBJECT               DeviceObject,
       _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout
);

Параметры

[in] DeviceObject

Указатель на объект устройства, представляющий диск, таблицы секций которого необходимо записать.

DriveLayout

Указатель на буфер макета диска, содержащий записи списка секций. Дополнительные сведения см. в разделе DRIVE_LAYOUT_INFORMATION_EX.

Возвращаемое значение

IoWritePartitionTableEx возвращает код состояния STATUS_SUCCESS, если все операции записи были выполнены без ошибок. В случае сбоя коды ошибок, возвращаемые IoWritePartitionTableEx , могут включать, помимо прочего, следующий список:

Код возврата Описание
STATUS_DEVICE_NOT_READY Указывает на сбой чтения правильной геометрии диска.
STATUS_INSUFFICIENT_RESOURCES Указывает на сбой при выделении необходимых ресурсов (например, памяти кучи, IRP и т. д.).
STATUS_UNSUCCESSFUL Указывает, что нулевой сектор не имеет ожидаемой сигнатуры диска MBR.

Комментарии

IoWritePartitionTableEx заменяет устаревшую подпрограмму IoWritePartitionTable. В отличие от более старой подпрограммы, она может записывать данные в таблицы разделов GUID, а также в таблицы разделов главной загрузочной записи.

IoWritePartitionTableEx должен использоваться только драйверами дисков. Другие драйверы должны использовать вместо этого запрос IOCTL_DISK_SET_DRIVE_LAYOUT_EX дискового ввода-вывода.

Когда драйвер дискового устройства получает IRP_MJ_DEVICE_CONTROL запрос на определение типа секции в записи таблицы секций или повторное секционирование диска, он должен вызвать IoWritePartitionTableEx. Запрос на управление устройством обычно отправляется служебной программой форматирования, которая выполняет функции управления вводом-выводом для секций и дисков на компьютере.

Чтобы сбросить тип секции, драйвер передает указатель на объект устройства, представляющий физический диск, и номер раздела, связанного с объектом устройства, открытый программой форматирования. При динамическом повторном секционирование диска драйвер диска должен удалить набор объектов устройств, представляющих текущие разделы диска, и создать новый набор объектов устройств, представляющих новые разделы на диске.

Чтобы создать или удалить секции, полное описание системы должно быть получено путем вызова IoReadPartitionTableEx. Структуру макета диска можно изменить с помощью программы системного формата, чтобы отразить новую конфигурацию диска.

IoWritePartitionTableEx является синхронным. Он должен вызываться подпрограммой dispatch драйвера диска или потоком драйвера. Таким образом, все потоки пользователей и файловой системы должны быть готовы к переходу в состояние ожидания при выполнении запроса на управление устройством для сброса типов секций для устройства.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Ntddk.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также раздел

IoCreateDevice

IoReadPartitionTableEx

IoSetPartitionInformationEx