Поделиться через


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.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Никакой.

Длина входного буфера

Никакой.

Выходной буфер

Драйвер возвращает данные 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)