IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER IOCTL (mountmgr.h)

此 IOCTL 检查给定卷是否具有驱动器号。 如果卷已有驱动器号,或者卷有一个特殊的装载管理器数据库条目,指示它不需要驱动器号,则此例程返回当前驱动器号(如果有),并且不执行任何作。 如果给定卷没有驱动器号,并且没有特殊的装载管理器数据库条目,指示它不需要驱动器号,则会将下一个可用的驱动器号分配给卷。 如果卷的非持久性设备名称以“\Device\Floppy”开头,装载管理器将检查以字母“A”开头的可用驱动器号。如果卷名称以“\Device\CdRom”开头,装载管理器将检查以驱动器号“D”开头的可用驱动器号。在所有其他情况下,装载管理器以驱动器号“C”开头。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

装载管理器客户端在 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)

另请参阅

MOUNTMGR_DRIVE_LETTER_TARGET