Partager via


Fonction IoWritePartitionTable (ntddk.h)

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

IoWritePartitionTable écrit des tables de partition à partir des entrées de la mémoire tampon de liste de partitions pour chaque partition sur le disque représenté par l’objet d’appareil donné.

Syntaxe

NTSTATUS IoWritePartitionTable(
  [in] PDEVICE_OBJECT            DeviceObject,
  [in] ULONG                     SectorSize,
  [in] ULONG                     SectorsPerTrack,
  [in] ULONG                     NumberOfHeads,
  [in] _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
);

Paramètres

[in] DeviceObject

Pointeur vers l’objet d’appareil représentant le disque dont les tables de partition doivent être écrites.

[in] SectorSize

Spécifie la taille en octets des secteurs sur l’appareil.

[in] SectorsPerTrack

Spécifie la taille de la piste sur l’appareil.

[in] NumberOfHeads

Spécifie le nombre de pistes par cylindre.

[in] PartitionBuffer

Pointeur vers la mémoire tampon de disposition de lecteur qui contient les entrées de liste de partitions. Pour plus d’informations, consultez DRIVE_LAYOUT_INFORMATION.

Valeur retournée

IoWritePartitionTablo retourne un code status de STATUS_SUCCESS si toutes les écritures ont été effectuées sans erreur. En cas d’échec, les codes d’erreur retournés par IoWritePartitionTable peuvent inclure, sans s’y limiter, la liste suivante :

Code de retour Description
STATUS_DEVICE_NOT_READY Indique un échec de lecture de la géométrie de disque correcte.
STATUS_INSUFFICIENT_RESOURCES Indique un échec d’allocation des ressources nécessaires (par exemple, mémoire de tas, IRP, etc.).
STATUS_UNSUCCESSFUL Indique que le secteur zéro n’avait pas la signature de disque MBR attendue.

Remarques

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

IoWritePartitionTable est appelé 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 ou à repartitionner le disque par une demande de IRP_MJ_DEVICE_CONTROL. La demande de contrôle d’appareil est généralement émise par l’utilitaire de format, qui exécute 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 passe 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 de périphérique que l’utilitaire de format a ouvert. Lorsqu’un disque doit être repartitionné dynamiquement, le pilote de disque doit supprimer son ensemble d’objets de périphérique représentant les partitions de disque actuelles et créer un ensemble d’objets d’appareil représentant les nouvelles partitions sur le disque.

Les applications qui créent et suppriment des partitions et qui nécessitent une description complète du système doivent appeler IoReadPartitionTable avec ReturnRecognizedPartitions défini sur FALSE. 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.

IoWritePartitionTable est synchrone. Il doit être appelé par la routine Dispatch du pilote de disque ou par un thread de pilote. Par conséquent, 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 réinitialiser les types de partition pour l’appareil.

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
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

Voir aussi

IoCreateDevice

IoReadPartitionTable

IoSetPartitionInformation