IoWritePartitionTableEx, fonction (ntddk.h)
La routine IoWritePartitionTableEx écrit des tables de partition à partir des entrées de la mémoire tampon de la liste de partitions pour chaque partition sur le disque représenté par l’objet appareil donné.
Syntaxe
NTSTATUS IoWritePartitionTableEx(
[in] PDEVICE_OBJECT DeviceObject,
_DRIVE_LAYOUT_INFORMATION_EX *DriveLayout
);
Paramètres
[in] DeviceObject
Pointeur vers l’objet d’appareil représentant le disque dont les tables de partition doivent être écrites.
DriveLayout
Pointeur vers la mémoire tampon de disposition du lecteur qui contient les entrées de liste de partitions. Pour plus d’informations, consultez DRIVE_LAYOUT_INFORMATION_EX.
Valeur de retour
IoWritePartitionTableEx retourne un code d’état de STATUS_SUCCESS si toutes les écritures ont été effectuées sans erreur. En cas de défaillance, les codes d’erreur retournés par IoWritePartitionTableEx peuvent inclure, mais ne sont pas limités à la liste suivante :
Retourner le code | Description |
---|---|
STATUS_DEVICE_NOT_READY | Indique qu’une défaillance lit la géométrie de disque correcte. |
STATUS_INSUFFICIENT_RESOURCES | Indique un échec d’allocation des ressources nécessaires (par exemple, mémoire du tas, irPs, etc.). |
STATUS_UNSUCCESSFUL | Indique que le secteur zéro n’avait pas la signature de disque MBR attendue. |
Remarques
IoWritePartitionTableEx remplace la routine obsolète IoWritePartitionTable. Contrairement à l’ancienne routine, elle peut écrire dans des tables de partition GUID ainsi que des tables de partition d’enregistrement de démarrage maître.
IoWritePartitionTableEx 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_DRIVE_LAYOUT_EX à la place.
Lorsqu’un pilote de périphérique de disque reçoit une demande de IRP_MJ_DEVICE_CONTROL pour définir le type de partition dans une entrée de table de partition ou pour repartitionner le disque, il doit appeler IoWritePartitionTableEx. La demande de contrôle d’appareil est généralement émise par l’utilitaire de format, qui effectue des fonctions de contrôle d’E/S sur les partitions et les disques de l’ordinateur.
Pour réinitialiser un type de partition, le pilote transmet un pointeur à l’objet d’appareil, représentant le disque physique et le nombre de partitions associées à l’objet d’appareil que l’utilitaire de format a ouvert. Lorsqu’un disque doit être repartitionné dynamiquement, le pilote de disque doit supprimer son ensemble d’objets d’appareil représentant les partitions de disque actuelles et créer un nouvel ensemble d’objets d’appareil représentant les nouvelles partitions sur le disque.
Pour créer ou supprimer des partitions, une description complète du système doit être obtenue par un appel à IoReadPartitionTableEx. La structure de disposition du lecteur peut être modifiée par l’utilitaire de format système pour refléter une nouvelle configuration du disque.
IoWritePartitionTableEx est synchrone. Elle 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 réinitialiser les types de partitions pour l’appareil.
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 |
règles de conformité DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |