IoReadPartitionTable routine

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 FASTCALL IoReadPartitionTable(
  _In_   PDEVICE_OBJECT DeviceObject,
  _In_   ULONG SectorSize,
  _In_   BOOLEAN ReturnRecognizedPartitions,
  _Out_  struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
);

Parameters

DeviceObject [in]

Pointer to the device object for the disk whose partitions are to be read.

SectorSize [in]

Specifies the size of the sectors on the disk.

ReturnRecognizedPartitions [in]

Indicates whether only recognized partitions or all partition entries should be returned.

PartitionBuffer [out]

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.

Read each partition table and, for each and every entry, fill in a partition information entry. Extended partitions are located to find each partition on the disk; entries are built for these as well.

Requirements

Header

Ntddk.h (include Ntddk.h)

Library

Ntoskrnl.lib

IRQL

PASSIVE_LEVEL

DDI compliance rules

HwStorPortProhibitedDDIs

See also

IOCTL_DISK_GET_PARTITION_INFO
IOCTL_DISK_GET_DRIVE_LAYOUT
IOCTL_DISK_SET_DRIVE_LAYOUT
IoSetPartitionInformation
IoWritePartitionTable

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft