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_EX 和 IOCTL_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
要求
| 要求 | 价值 |
|---|---|
| 标头 | ntdddisk.h(包括 Ntdddisk.h、Ntddk.h、Ntdddisk.h) |