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