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) |