Partager via


Fonction IoReadPartitionTable (ntddk.h)

La routine IoReadPartitionTable est obsolète et est fournie uniquement pour prendre en charge les pilotes existants. Les nouveaux pilotes doivent utiliser IoReadPartitionTableEx. IoReadPartitionTable lit une liste de partitions sur un disque ayant une taille de secteur spécifiée et crée une entrée dans la liste de partitions pour chaque partition reconnue.

Syntaxe

NTSTATUS IoReadPartitionTable(
  [in]  PDEVICE_OBJECT            DeviceObject,
  [in]  ULONG                     SectorSize,
  [in]  BOOLEAN                   ReturnRecognizedPartitions,
  [out] _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
);

Paramètres

[in] DeviceObject

Pointeur vers l’objet d’appareil pour le disque dont les partitions doivent être lues.

[in] SectorSize

Spécifie la taille des secteurs sur le disque.

[in] ReturnRecognizedPartitions

Indique si seules les partitions reconnues ou toutes les entrées de partition doivent être retournées.

[out] PartitionBuffer

Pointeur vers une adresse non initialisée. En cas de réussite, IoReadPartitionTable alloue la mémoire de cette mémoire tampon à partir d’un pool non paginé et retourne les informations de disposition du lecteur qu’il contient.

Valeur retournée

Cette routine retourne une valeur de STATUS_SUCCESS si au moins une table de secteur a été lue. Sinon, il retourne une erreur status et définit le pointeur sur PartitionBuffer sur NULL.

Remarques

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

Les pilotes de périphériques de disque appellent cette routine lors de l’initialisation du pilote.

Il incombe à l’appelant de libérer le PartitionBuffer qui a été alloué par cette routine avec ExFreePool.

L’algorithme utilisé par cette routine est déterminé par la valeur booléenne ReturnRecognizedPartitions :

  • Lisez chaque table de partition et, pour chaque partition valide et reconnue trouvée, renseignez un élément dans un tableau d’entrées PARTITION_INFORMATION . Le tableau d’entrées d’informations de partition est pointé vers le membre PartitionEntry d’une structure DRIVE_LAYOUT_INFORMATION . La structure DRIVE_LAYOUT_INFORMATION se trouve à l’emplacement pointé par PartitionBuffer. Les partitions étendues sont situées afin de rechercher d’autres tables de partition, mais aucune entrée n’est générée pour elles.
Lisez chaque table de partition et, pour chaque entrée, renseignez une entrée d’informations de partition. Les partitions étendues sont situées pour rechercher chaque partition sur le disque ; les entrées sont également créées pour ceux-ci.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête ntddk.h (inclure 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

IOCTL_DISK_GET_DRIVE_LAYOUT

IOCTL_DISK_GET_PARTITION_INFO

IOCTL_DISK_SET_DRIVE_LAYOUT

IoSetPartitionInformation

IoWritePartitionTable