структура 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 IOCTLs, чтобы получить сведения о геометрии физического диска (тип носителя, количество цилиндров, треков на цилиндр, секторы на дорожку и байты на сектор).
Так как данные секции и обнаружения не находятся в фиксированных расположениях в структуре 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 (include Ntdddisk.h, Ntddk.h, Ntdddisk.h) |