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

输入缓冲区

没有。

输入缓冲区长度

没有。

输出缓冲区

驱动程序在 Irp->AssociatedIrp.SystemBuffer处返回缓冲区中的 DISK_GEOMETRY_EX 数据。 输出缓冲区的大小可能与输入缓冲区的大小不同。

输出缓冲区长度

参数.DeviceIoControl.OutputBufferLength IRP 的 I/O 堆栈位置指示大小(以字节为单位) 缓冲区的 <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)