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 この情報にアクセスするための 2 つのマクロが提供されます。 どちらのマクロも、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 を含む) |