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


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 (включая Ntdddisk.h)