IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER IOCTL (mountmgr.h)
Этот IOCTL проверяет, содержит ли данный том букву диска. Если у него уже есть буква диска или в томе есть специальная запись диспетчера подключения базы данных, указывающая, что ему не требуется буква диска, эта подпрограмма возвращает текущую букву диска (если она есть) и ничего не делает. Если у заданного тома нет буквы диска и нет специальной записи диспетчера подключения базы данных, указывающей, что ему не требуется буква диска, следующая доступная буква диска назначается тому. Если имя неперсистентного устройства тома начинается с "\Device\Floppy", диспетчер подключения будет проверка доступных букв дисков, начиная с буквы "A". Если имя тома начинается с "\Device\CdRom", диспетчер подключения проверка для доступных букв дисков, начиная с буквы диска "D". Во всех остальных случаях диспетчер подключения начинается с буквы диска "C".
Основной код
Входной буфер
Клиент диспетчера подключений инициализирует структуру MOUNTMGR_DRIVE_LETTER_TARGET, определенную в Mountmgr.h, в начале буфера в Irp-AssociatedIrp.SystemBuffer>. Клиент должен вставить имя целевого тома по адресу, указанному элементом DeviceName[] этой структуры. Имя целевого тома — это имя неперсистентного объекта устройства, связанного с томом (например, \Device\HarddiskVolume1).
Длина входного буфера
Parameters.DeviceIoControl.InputBufferLength в расположении стека ввода-вывода IRP указывает размер входного буфера в байтах, который должен быть больше или равен размеру sizeof(MOUNTMGR_DRIVE_LETTER_TARGET).
Выходной буфер
Диспетчер подключения вставляет текущую или назначенную букву диска (см. предыдущее обсуждение) в структуру MOUNTMGR_DRIVE_LETTER_INFORMATION, определенную в Mountmgr.h, в начало буфера в 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) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по