структура 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

Требования

Требование Значение
Заголовок 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