Partager via


Fonction IoSetPartitionInformation (ntddk.h)

La routine IoSetPartitionInformation est obsolète et fournie uniquement pour prendre en charge les pilotes existants. Les nouveaux pilotes doivent utiliser IoSetPartitionInformationEx.

IoSetPartitionInformation définit le type et le numéro de partition dans une entrée de table de partition pour le disque représenté par DeviceObject.

Syntaxe

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

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] SectorSize

Spécifie la taille, en octets, des secteurs sur le disque.

[in] PartitionNumber

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

[in] PartitionType

Spécifie le type de la partition. Pour obtenir la liste de certains types de partitions clés , consultez PARTITION_INFORMATION.

Valeur retournée

Si IoSetPartitionInformation retourne STATUS_SUCCESS, le pilote de disque met à jour sa notion de type de partition pour cette partition dans son extension d’appareil.

Remarques

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

Cette routine est appelée lorsqu’un pilote de périphérique de disque est invité à définir le type 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 IoSetPartitionInformation ont été développées avant l’implémentation du partitionnement dynamique, elles ne font pas de distinction entre l’ordinal de partition (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 IoSetPartitionInformation à l’aide du numéro ordinal de la partition et non du numéro de partition réel.

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), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

Voir aussi

IoReadPartitionTable

IoSetPartitionInformationEx

IoWritePartitionTable