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数据。 输出缓冲区的大小可能与输入缓冲区的大小不同。

输出缓冲区长度

IRP 的 I/O 堆栈位置中的 Parameters.DeviceIoControl.OutputBufferLength 指示缓冲区的大小(以字节为单位),该缓冲区的大小必须至少为 ( (DISK_GEOMETRY) + sizeof (LARGE_INTEGER) ) ,最大为 (size 为 (DISK_GEOMETRY) + size of (LARGE_INTEGER) + size of (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 级别使用。

要求

要求
Header ntdddisk.h (包括 Ntdddisk.h)