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

数据块的开头,从 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