Windows 磁盘操作,通过DeviceIoControl 函数传递不同的控制码实现磁盘的各种不同的操作。下面表格翻译自Windows官方文档:Disk Management Control Codes
下表列出了在磁盘管理中使用的控制代码。
Control Code | Description |
IOCTL_DISK_ARE_VOLUMES_READY | 等待指定磁盘上的所有卷准备就绪以供使用。 |
IOCTL_DISK_CREATE_DISK | 使用CREATE_DISK结构中的信息初始化指定的磁盘和磁盘分区表。 |
IOCTL_DISK_DELETE_DRIVE_LAYOUT | 从主引导记录中删除引导签名,以便磁盘将从扇区0格式化为磁盘末尾。 |
IOCTL_DISK_FORMAT_TRACKS | 在软盘上格式化指定的,连续的一组曲目。 要提供其他参数,请改为使用IOCTL_DISK_FORMAT_TRACKS_EX。 |
IOCTL_DISK_FORMAT_TRACKS_EX | 在软盘上格式化指定的,连续的一组曲目。 |
IOCTL_DISK_GET_CACHE_INFORMATION | 检索磁盘缓存配置数据。 |
IOCTL_DISK_GET_CLUSTER_INFO | 检索指定磁盘设备的属性 |
IOCTL_DISK_GET_DISK_ATTRIBUTES | 检索指定磁盘设备的属性。 |
IOCTL_DISK_GET_DRIVE_GEOMETRY | 检索有关物理磁盘几何的信息:类型,柱面数,每个柱面的磁道,每个磁道的扇区以及每个扇区的字节数。 |
IOCTL_DISK_GET_DRIVE_GEOMETRY_EX | 检索有关物理磁盘几何的扩展信息:类型,柱面数,每个柱面的磁道,每磁道的扇区以及每扇区的字节数。 |
IOCTL_DISK_GET_DRIVE_LAYOUT | 检索磁盘分区表中每个条目的信息 |
IOCTL_DISK_GET_DRIVE_LAYOUT_EX | 为磁盘的分区表中的每个条目检索扩展信息。 |
IOCTL_DISK_GET_LENGTH_INFO | 检索指定的磁盘,卷或分区的长度。 |
IOCTL_DISK_GET_PARTITION_INFO | 检索有关磁盘分区类型,大小和性质的信息。 |
IOCTL_DISK_GET_PARTITION_INFO_EX | 检索有关磁盘分区类型,大小和性质的扩展信息。 |
IOCTL_DISK_GROW_PARTITION | 放大指定的分区。 |
IOCTL_DISK_IS_WRITABLE | 确定指定的磁盘是否可写。 |
IOCTL_DISK_PERFORMANCE | 启用提供磁盘性能信息的性能计数器。 |
IOCTL_DISK_PERFORMANCE_OFF | 禁用提供磁盘性能信息的性能计数器。 |
IOCTL_DISK_REASSIGN_BLOCKS | 指示磁盘设备将一个或多个块映射到其备用块池。 |
IOCTL_DISK_REASSIGN_BLOCKS_EX | 指示磁盘设备将一个或多个块映射到其备用块池。 |
IOCTL_DISK_RESET_SNAPSHOT_INFO | 从磁盘清除所有基于卷影复制服务(VSS)硬件的卷影副本(也称为“快照”)信息。 |
IOCTL_DISK_SET_CACHE_INFORMATION | 设置磁盘配置数据。 |
IOCTL_DISK_SET_CLUSTER_INFO | 设置磁盘上的群集信息。 |
IOCTL_DISK_SET_DISK_ATTRIBUTES | 设置指定磁盘设备的属性。 |
IOCTL_DISK_SET_DRIVE_LAYOUT | 按照驱动器布局和分区信息数据指定的分区磁盘。 |
IOCTL_DISK_SET_DRIVE_LAYOUT_EX | 根据指定的驱动器布局和分区信息数据分区磁盘。 |
IOCTL_DISK_SET_PARTITION_INFO | 为指定的磁盘分区设置分区信息。 |
IOCTL_DISK_SET_PARTITION_INFO_EX | 设置指定磁盘分区的分区信息,包括AT和EFI(可扩展固件接口)分区的布局信息。 |
IOCTL_DISK_UPDATE_PROPERTIES | 使缓存的分区表无效并重新枚举设备。 |
IOCTL_DISK_VERIFY | 验证固定磁盘上的指定范围。 |
IOCTL_STORAGE_DEVICE_POWER_CAP | Windows应用程序可以使用此控制代码为存储设备指定最大运行功耗级别。 操作系统将最好将设备转换到不超过给定最大值的电源状态。 但是,这取决于设备支持的内容。 实际最大值可能小于或大于所需的最大值。 |
IOCTL_STORAGE_FIRMWARE_ACTIVATE | Windows应用程序可以使用此控制代码激活指定设备上的固件映像。 |
IOCTL_STORAGE_FIRMWARE_DOWNLOAD | Windows应用程序可以使用此控制代码将固件映像下载到目标设备,但不能激活它。 如果要下载的图像大于控制器的最大数据传输大小,则必须多次调用此IOCTL,直到整个图像被下载。 |
IOCTL_STORAGE_FIRMWARE_GET_INFO | Windows应用程序可以使用此控制代码查询存储设备以获取详细的固件信息。 成功的调用将返回有关固件版本,活动状态以及每个插槽的读/写属性的信息。 返回的数据量将根据存储协议而有所不同。 |
IOCTL_STORAGE_PROTOCOL_COMMAND | Windows应用程序可以使用此控制代码来返回存储设备或适配器的属性。 该请求指示要检索的信息种类,例如设备的查询数据或适配器的功能和限制。 |
IOCTL_STORAGE_QUERY_PROPERTY | Windows应用程序可以使用此控制代码来返回存储设备或适配器的属性。 该请求指示要检索的信息种类,例如设备的查询数据或适配器的功能和限制。 IOCTL_STORAGE_QUERY_PROPERTY也可用于确定端口驱动程序是否支持特定属性或属性描述符中的哪些字段可使用后续更改属性请求进行修改。 |
IOCTL_STORAGE_SET_TEMPERATURE_THRESHOLD | Windows应用程序可以使用此控制代码来设置设备的温度阈值(设备支持该阈值)。 |
每一个控制码,官方都有给出一个参数说明,详细内容见官方解析:Disk Management Control Codes
Wen lee
2018.04.29