IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER IOCTL (mountmgr.h)
此 IOCTL 检查给定卷是否具有驱动器号。 如果卷已具有驱动器号,或者卷具有特殊的装载管理器数据库条目,指示它不需要驱动器号,则此例程返回当前驱动器号 ((如果有一个) 且不执行任何操作)。 如果给定卷没有驱动器号,并且没有指示它不需要驱动器号的特殊装载管理器数据库条目,则会将下一个可用的驱动器号分配给该卷。 如果卷的非持久性设备名称以“\Device\Floppy”开头,装载管理器将检查以字母“A”开头的可用驱动器号。如果卷名以“\Device\CdRom”开头,装载管理器将检查以驱动器号“D”开头的可用驱动器号。在所有其他情况下,装载管理器以驱动器号“C”开头。
主要代码
输入缓冲区
装载管理器客户端在 Irp-AssociatedIrp.SystemBuffer> 的缓冲区开头初始化MOUNTMGR_DRIVE_LETTER_TARGET结构。 客户端必须在此结构的 DeviceName[] 成员指向的地址处插入目标卷的名称。 目标卷名称是与卷关联的非持久性设备对象的名称, (例如“\Device\HarddiskVolume1”) 。
输入缓冲区长度
IRP 的 I/O 堆栈位置中的 Parameters.DeviceIoControl.InputBufferLength 指示输入缓冲区的大小(以字节为单位),该大小必须大于或等于 sizeof(MOUNTMGR_DRIVE_LETTER_TARGET)
。
输出缓冲区
装载管理器插入当前驱动器号或新分配的驱动器号, (在 Irp-AssociatedIrp.SystemBuffer> 缓冲区开头的 MOUNTMGR_DRIVE_LETTER_INFORMATION 结构中看到先前的讨论 ) 。
输出缓冲区长度
IRP 的 I/O 堆栈位置中的 Parameters.DeviceIoControl.OutputBufferLength 指示输出缓冲区的大小(以字节为单位),该大小必须大于或等于 sizeof(MOUNTMGR_DRIVE_LETTER_INFORMATION)
。
输入/输出缓冲区
N/A
输入/输出缓冲区长度
N/A
状态块
如果操作成功,则 “状态” 字段设置为STATUS_SUCCESS。
如果 InputBufferLength 小于 sizeof(MOUNTMGR_DRIVE_LETTER_TARGET)
或 OutputBufferLength 小于 sizeof(MOUNTMGR_DRIVE_LETTER_INFORMATION)
,则 状态 字段设置为 STATUS_INVALID_PARAMETER。
注解
有关详细信息,请参阅 支持存储类驱动程序中的装载管理器请求。
要求
要求 | 值 |
---|---|
Header | mountmgr.h (包括 Mountmgr.h) |