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