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