Partager via


Fonction IoSetPartitionInformationEx (ntddk.h)

Pour le disque représenté par DeviceObject, la routine IoSetPartitionInformationEx initialise une entrée de table de partition avec les informations spécifiées dans la structure SET_PARTITION_INFORMATION_EX .

Syntaxe

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

Paramètres

[in] DeviceObject

Pointeur vers l’objet d’appareil représentant l’appareil sur lequel le type de partition doit être défini.

[in] PartitionNumber

Spécifie le numéro de partition sur l’appareil dont le type de partition doit être défini.

[in] PartitionInfo

Structure dont le membre PartitionType spécifie le type de la partition. Pour les valeurs PartitionType actuellement définies , PARTITION_INFORMATION.

Valeur retournée

Si IoSetPartitionInformationEx retourne STATUS_SUCCESS, le pilote de disque met à jour sa notion de type de partition pour cette partition dans son extension de périphérique.

Remarques

IoSetPartitionInformationEx doit uniquement être utilisé par les pilotes de disque. Les autres pilotes doivent utiliser la demande d’E /S de disque IOCTL_DISK_SET_PARTITION_INFO_EX à la place.

Cette routine est appelée lorsqu’un pilote de périphérique de disque est invité à définir les informations de partition dans une entrée de table de partition par une demande de IRP_MJ_DEVICE_CONTROL. Cette demande est généralement émise par l’utilitaire de format, qui exécute des fonctions de contrôle d’E/S sur la partition. Le pilote transmet un pointeur à l’objet de périphérique représentant le disque physique et le numéro de la partition associée à l’objet de périphérique ouvert par l’utilitaire de format. Étant donné que les routines HAL qui sous-tendent IoSetPartitionInformationEx ont été développées avant l’implémentation du partitionnement dynamique, elles ne font pas de distinction entre le partitionordinal (c’est-à-dire l’ordre d’une partition sur un disque) et le numéro de partition (le numéro de partition affecté à une partition afin de l’identifier au système). Les pilotes doivent appeler IoSetPartitionInformationEx à l’aide du numéro ordinal de la partition et non du numéro de partition réel.

Si la partition est une partition de type Enregistrement de démarrage principal (MBR), IoSetPartitionInformationEx est limité à la définition du style de partition et du style de partition, qui est représenté sous la forme d’un caractère non signé. Pour plus d’informations sur ces valeurs, consultez SET_PARTITION_INFORMATION_MBR.

Si la partition est une partition GPT (GUID Partition Table), IoSetPartitionInformationEx définit les valeurs suivantes : le style de partition, le type de partition, représenté par un GUID au lieu d’un entier, comme c’était le cas avec les partitions MBR ; un ID de partition, également représenté par un GUID ; un ensemble d’attributs (voir l’interface de microprogramme extensible pour obtenir une description de ces attributs) ; et un nom Unicode pour la partition. Pour plus d’informations sur ces valeurs , consultez SET_PARTITION_INFORMATION_GPT .

Cette routine est synchrone et doit être appelée par la routine Dispatch du pilote de disque ou par un thread de pilote. Ainsi, tous les threads de système de fichiers et d’utilisateur doivent être prêts à entrer un état d’attente lors de l’émission de la demande de contrôle de l’appareil pour définir le type de partition pour l’appareil.

Cette routine fonctionne sous l’hypothèse que le numéro de partition transmis par le pilote de disque existe réellement.

Cette routine doit être appelée dans IRQL = PASSIVE_LEVEL, car elle utilise un objet d’événement de noyau pour synchroniser l’achèvement des E/S sur l’appareil. L’événement ne peut pas être défini sur l’état Signaled sans mettre en file d’attente et exécuter la routine APC du noyau spécial du système d’E/S pour l’achèvement des E/S.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête ntddk.h (incluez Ntddk.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (voir la section Remarques)
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Voir aussi

IoReadPartitionTable

IoSetPartitionInformation

IoWritePartitionTable

SET_PARTITION_INFORMATION

SET_PARTITION_INFORMATION_EX