DISK_GEOMETRY_EX 结构 (ntdddisk.h)

DISK_GEOMETRY_EX结构是由DISK_GEOMETRY结构、DISK_PARTITION_INFO结构、DISK_DETECTION_INFO结构组成的任意长度结构。

语法

typedef struct _DISK_GEOMETRY_EX {
  DISK_GEOMETRY Geometry;
  LARGE_INTEGER DiskSize;
  UCHAR         Data[1];
} DISK_GEOMETRY_EX, *PDISK_GEOMETRY_EX;

成员

Geometry

有关此成员的说明,请参阅 DISK_GEOMETRY

DiskSize

包含磁盘的大小(以字节为单位)。

Data[1]

数据块的开头,从 DISK_PARTITION_INFO 结构开始,后跟 DISK_DETECTION_INFO 结构。

注解

DISK_GEOMETRY_EX与 IOCTL_DISK_GET_DRIVE_GEOMETRY_EXIOCTL_DISK_GET_MEDIA_TYPES IOCTL 结合使用,以便检索有关物理磁盘几何图形的信息, (介质类型、圆柱数、每个圆柱的轨道数、每个轨道的扇区以及每个扇区) 的字节数。

由于分区和检测信息不在 DISK_GEOMETRY_EX 结构中的固定位置, 因此 ntdddisk.h 提供了两个宏来访问此信息。 这两个宏都采用指向 DISK_GEOMETRY_EX 类型的结构的指针作为参数:

#if (NTDDI_VERSION < NTDDI_WS03)
#define DiskGeometryGetPartition(Geometry)\
                        ((PDISK_PARTITION_INFO)((Geometry)+1))

#define DiskGeometryGetDetect(Geometry)\
                        ((PDISK_DETECTION_INFO)(((PBYTE)DiskGeometryGetPartition(Geometry)+\
                                        DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo)))
#else
#define DiskGeometryGetPartition(Geometry)\
                        ((PDISK_PARTITION_INFO)((Geometry)->Data))

#define DiskGeometryGetDetect(Geometry)\
                        ((PDISK_DETECTION_INFO)(((ULONG_PTR)DiskGeometryGetPartition(Geometry)+\
                                        DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo)))
#endif

要求

要求
Header ntdddisk.h (包括 Ntdddisk.h、Ntddk.h、Ntdddisk.h)

另请参阅

DISK_DETECTION_INFO

DISK_GEOMETRY

DISK_PARTITION_INFO

IOCTL_DISK_GET_DRIVE_GEOMETRY

IOCTL_DISK_GET_MEDIA_TYPES