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. Si elle réussit, IoReadPartitionTable alloue la mémoire de cette mémoire tampon à partir d’un pool non paginé et retourne les informations de disposition du lecteur dans celle-ci.

Valeur de retour

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

Remarques

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

Les pilotes de périphérique de disque appellent cette routine pendant 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 partitions 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é par le membre PartitionEntry d’une structure DRIVE_LAYOUT_INFORMATION. La structure DRIVE_LAYOUT_INFORMATION se trouve à l’emplacement vers lequel pointe partitionBuffer. Les partitions étendues se trouvent pour rechercher d’autres tables de partitions, mais aucune entrée n’est générée pour elles.
Lisez chaque table de partitions et, pour chaque entrée, renseignez une entrée d’informations de partition. Les partitions étendues se trouvent pour rechercher chaque partition sur le disque ; les entrées sont également générées pour celles-ci.

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), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

Voir aussi

IOCTL_DISK_GET_DRIVE_LAYOUT

IOCTL_DISK_GET_PARTITION_INFO

IOCTL_DISK_SET_DRIVE_LAYOUT

IoSetPartitionInformation

IoWritePartitionTable