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_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
要求
要求 | 值 |
---|---|
Header | ntdddisk.h (包括 Ntdddisk.h、Ntddk.h、Ntdddisk.h) |