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


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

Подпрограмма IoSetPartitionInformationустарела и предоставляется только для поддержки существующих драйверов. Новые драйверы должны использовать IoSetPartitionInformationEx.

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

Синтаксис

NTSTATUS IoSetPartitionInformation(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] ULONG          SectorSize,
  [in] ULONG          PartitionNumber,
  [in] ULONG          PartitionType
);

Параметры

[in] DeviceObject

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

[in] SectorSize

Задает размер (в байтах) секторов на диске.

[in] PartitionNumber

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

[in] PartitionType

Указывает тип секции. Список некоторых типов секций ключей см . в разделе PARTITION_INFORMATION.

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

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

Комментарии

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

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

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

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

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

Требования

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

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

IoReadPartitionTable

IoSetPartitionInformationEx

IoWritePartitionTable