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 结构中插入当前驱动器号或新分配的驱动器号(请参阅上一个讨论)。
输出缓冲区长度
参数.DeviceIoControl.OutputBufferLength 在 IRP 的 I/O 堆栈位置指示输出缓冲区的大小(以字节为单位),输出缓冲区的大小必须大于或等于 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。
言论
有关详细信息,请参阅 在存储类驱动程序中支持装载管理器请求。
要求
要求 | 价值 |
---|---|
标头 | mountmgr.h (包括 Mountmgr.h) |