Partager via


IoSetPartitionInformation, fonction (ntddk.h)

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

IoSetPartitionInformation définit le type de partition et le nombre 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 partition de clé, consultez PARTITION_INFORMATION.

Valeur de retour

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 ne doit être utilisé que par les pilotes de disque. D’autres pilotes doivent utiliser la demande d’E/S de disque IOCTL_DISK_SET_PARTITION_INFO à 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 requête 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 vers l’objet de périphérique représentant le disque physique et le numéro de la partition associée à l’objet d’appareil que l’utilitaire de format a ouvert. É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 la distinction entre l’ordinal 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 pour l’identifier au système). Les pilotes doivent appeler IoSetPartitionInformation à l’aide de l'ordinal numéro 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 d’appareil pour définir le type de partition de l’appareil.

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

Cette routine doit être appelée à 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 mise en file d’attente et l’exécution de laroutine spéciale du système d’E/S pour l’achèvement des E/S.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête ntddk.h (include 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