IOCTL_DISK_GET_DRIVE_GEOMETRY_EX IOCTL (ntdddisk.h)
Возвращает сведения о геометрии физического диска (тип носителя, количество цилиндров, треков на цилиндр, секторы на дорожку и байты на сектор).
Разница между IOCTL_DISK_GET_DRIVE_GEOMETRY_EX и старым запросом IOCTL_DISK_GET_DRIVE_GEOMETRY заключается в том, что IOCTL_DISK_GET_DRIVE_GEOMETRY_EX могут получать сведения как из основной загрузочной записи (MBR), так и в таблице секционированных разделов GUID (GPT), в то время как IOCTL_DISK_GET_DRIVE_GEOMETRY могут читать только носители в стиле MBR.
Основной код
Входной буфер
Никакой.
Длина входного буфера
Никакой.
Выходной буфер
Драйвер возвращает данные DISK_GEOMETRY_EX в буфере в Irp->AssociatedIrp.SystemBuffer. Размер выходного буфера может не совпадать с размером входного буфера.
Длина выходного буфера
Parameters.DeviceIoControl.OutputBufferLength в расположении стека ввода-вывода iRP указывает размер в байтах. буфера, который должен быть по крайней мере (sizeof(DISK_GEOMETRY) + sizeof(LARGE_INTEGER)) и до (sizeof(DISK_GEOMETRY) + sizeof(LARGE_INTEGER) + sizeof(DISK_PARTITION_INFO) + sizeof(DISK_DETECTION_INFO)).
Блок состояния
Поле сведений имеет размер в байтах возвращаемых данных.
Поле состояния возвращает одно из следующих значений:
- STATUS_SUCCESS
- STATUS_UNRECOGNIZED_MEDIA
- STATUS_INVALID_PARAMETER
- STATUS_INVALID_DEVICE_REQUEST
- STATUS_INFO_LENGTH_MISMATCH
- STATUS_INSUFFICIENT_RESOURCES
- STATUS_BUFFER_TOO_SMALL
Замечания
Только вызывающие элементы выше Partmgr.sys могут вызывать этот IOCTL, так как он содержит сведения о секции диска.
Этот IOCTL использует IOCTL_DISK_GET_DRIVE_GEOMETRY для получения структуры DISK_GEOMETRY и IOCTL_DISK_GET_LENGTH_INFO для получения структуры GET_LENGTH_INFORMATION. Оба этих IOCTL поддерживаются для использования на уровне disk.sys.
Требования
Требование | Ценность |
---|---|
заголовка | ntdddisk.h (include Ntdddisk.h) |