IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER IOCTL (mountmgr.h)
Этот IOCTL проверяет, содержит ли данный том букву диска. Если у него уже есть буква диска или в томе есть специальная запись в базе данных диспетчера подключений, указывающая, что буква диска не требуется, эта подпрограмма возвращает текущую букву диска (если она есть) и ничего не делает. Если у заданного тома нет буквы диска и нет специальной записи в базе данных диспетчера подключений, указывающей, что ему не требуется буква диска, тому назначается следующая доступная буква диска. Если имя устройства тома начинается с "\Device\Floppy", диспетчер подключения проверит доступные буквы диска, начинающиеся с буквы "A". Если имя тома начинается с "\Device\CdRom", диспетчер подключения проверит доступные буквы диска, начинающийся с буквы диска "D". Во всех остальных случаях диспетчер подключения начинается с буквы диска "C".
Основной код
Входной буфер
Клиент диспетчера подключений инициализирует структуру MOUNTMGR_DRIVE_LETTER_TARGET в начале буфера в Irp-AssociatedIrp.SystemBuffer>. Клиент должен вставить имя целевого тома по адресу, указанному элементом DeviceName[] этой структуры. Имя целевого тома — это имя объекта устройства, не связанного с томом (например, "\Device\HarddiskVolume1").
Длина входного буфера
Parameters.DeviceIoControl.InputBufferLength в расположении стека ввода-вывода IRP указывает размер входного буфера в байтах, который должен быть больше или равен sizeof(MOUNTMGR_DRIVE_LETTER_TARGET)
.
Выходной буфер
Диспетчер подключения вставляет текущую букву диска или только что назначенную букву диска (см. предыдущее обсуждение) в структуру MOUNTMGR_DRIVE_LETTER_INFORMATION в начале буфера в Irp-AssociatedIrp.SystemBuffer>.
Длина выходного буфера
Parameters.DeviceIoControl.OutputBufferLength в расположении стека ввода-вывода IRP указывает размер выходного буфера в байтах, который должен быть больше или равен sizeof(MOUNTMGR_DRIVE_LETTER_INFORMATION)
.
Буфер входных и выходных данных
Н/Д
Длина входного/выходного буфера
Н/Д
Блок состояния
Если операция выполнена успешно, для поля Состояние задано значение STATUS_SUCCESS.
Если значение InputBufferLength меньше sizeof(MOUNTMGR_DRIVE_LETTER_TARGET)
или значение OutputBufferLength меньше sizeof(MOUNTMGR_DRIVE_LETTER_INFORMATION)
, для поля Состояние задано значение STATUS_INVALID_PARAMETER.
Комментарии
Дополнительные сведения см. в разделе Поддержка запросов диспетчера подключений в драйвере класса хранилища.
Требования
Требование | Значение |
---|---|
Заголовок | mountmgr.h (включая Mountmgr.h) |