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

要件

要件
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