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