IoReadPartitionTable function (ntddk.h)
The IoReadPartitionTable routine is obsolete and is provided only to support existing drivers. New drivers must use IoReadPartitionTableEx. IoReadPartitionTable reads a list of partitions on a disk having a specified sector size and creates an entry in the partition list for each recognized partition.
Syntax
NTSTATUS IoReadPartitionTable(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG SectorSize,
[in] BOOLEAN ReturnRecognizedPartitions,
[out] _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
);
Parameters
[in] DeviceObject
Pointer to the device object for the disk whose partitions are to be read.
[in] SectorSize
Specifies the size of the sectors on the disk.
[in] ReturnRecognizedPartitions
Indicates whether only recognized partitions or all partition entries should be returned.
[out] PartitionBuffer
Pointer to an uninitialized address. If successful, IoReadPartitionTable allocates the memory for this buffer from nonpaged pool and returns the drive layout information in it.
Return value
This routine returns a value of STATUS_SUCCESS if at least one sector table was read. Otherwise, it returns an error status and sets the pointer at PartitionBuffer to NULL.
Remarks
IoReadPartitionTable must only be used by disk drivers. Other drivers should use the IOCTL_DISK_GET_DRIVE_LAYOUT disk I/O request instead.
Disk device drivers call this routine during driver initialization.
It is the responsibility of the caller to deallocate the PartitionBuffer that was allocated by this routine with ExFreePool.
The algorithm used by this routine is determined by the Boolean value ReturnRecognizedPartitions:
- Read each partition table and, for each valid and recognized partition found, fill in an element in an array of PARTITION_INFORMATION entries. The array of partition information entries is pointed to by the PartitionEntry member of a DRIVE_LAYOUT_INFORMATION structure. The DRIVE_LAYOUT_INFORMATION structure is found at the location pointed to by PartitionBuffer. Extended partitions are located in order to find other partition tables, but no entries are built for them.
Requirements
Requirement | Value |
---|---|
Target Platform | Universal |
Header | ntddk.h (include Ntddk.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI compliance rules | HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |