Поделиться через


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

Для диска, представленного DeviceObject, подпрограмма IoSetPartitionInformationEx инициализирует запись таблицы секций со сведениями, указанными в структуре SET_PARTITION_INFORMATION_EX .

Синтаксис

NTSTATUS IoSetPartitionInformationEx(
  [in] PDEVICE_OBJECT                DeviceObject,
  [in] ULONG                         PartitionNumber,
  [in] _SET_PARTITION_INFORMATION_EX *PartitionInfo
);

Параметры

[in] DeviceObject

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

[in] PartitionNumber

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

[in] PartitionInfo

Структура, член PartitionType которой задает тип секции. Для заданных в настоящее время значений PartitionTypePARTITION_INFORMATION.

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

Если IoSetPartitionInformationEx возвращает STATUS_SUCCESS, драйвер диска обновляет свое представление о типе раздела для этого раздела в расширении устройства.

Комментарии

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

Эта подпрограмма вызывается, когда драйвер дискового устройства запрашивается для задания сведений о секции в записи таблицы секций с помощью запроса IRP_MJ_DEVICE_CONTROL. Этот запрос обычно выдается служебной программой форматирования, которая выполняет функции управления вводом-выводом в секции. Драйвер передает указатель на объект устройства, представляющий физический диск, и номер раздела, связанного с объектом устройства, открытый программой форматирования. Так как подпрограммы HAL, лежащие в основе IoSetPartitionInformationEx , были разработаны до реализации поддержки динамического секционирования, они не различают порядковый номер секции (то есть порядок секции на диске) и номер секции (номер секции, назначенный секции для идентификации его в системе). Драйверы должны вызывать IoSetPartitionInformationEx , используя порядковый номер секции, а не фактический номер секции.

Если раздел является разделом типа master Boot Record (MBR), IoSetPartitionInformationEx ограничивается настройкой стиля секции и стиля секции, который представлен в виде символа без знака. Дополнительные сведения об этих значениях см. в SET_PARTITION_INFORMATION_MBR.

Если секция является секцией таблицы разделов GUID (GPT), IoSetPartitionInformationEx задает следующие значения: стиль секции, тип секции, представленный GUID, а не целым числом, как это было в случае с секциями MBR; идентификатор секции, также представленный ИДЕНТИФИКАТОРом GUID; набор атрибутов (описание этих атрибутов см. в разделе Расширяемый интерфейс встроенного ПО); и имя в Юникоде для секции. Дополнительные сведения об этих значениях см. в SET_PARTITION_INFORMATION_GPT .

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

Эта процедура работает при условии, что номер секции, переданный драйвером диска, действительно существует.

Эта подпрограмма должна вызываться в irQL = PASSIVE_LEVEL так как она использует объект события ядра для синхронизации завершения ввода-вывода на устройстве. Событие не может быть установлено в состояние Signaled без постановки в очередь и выполнения специальной подпрограммы APC ядра системы ввода-вывода для завершения ввода-вывода.

Требования

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

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

IoReadPartitionTable

IoSetPartitionInformation

IoWritePartitionTable

SET_PARTITION_INFORMATION

SET_PARTITION_INFORMATION_EX