IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER IOCTL (mountmgr.h)

Этот IOCTL проверяет, содержит ли данный том букву диска. Если у него уже есть буква диска или в томе есть специальная запись диспетчера подключения базы данных, указывающая, что ему не требуется буква диска, эта подпрограмма возвращает текущую букву диска (если она есть) и ничего не делает. Если у заданного тома нет буквы диска и нет специальной записи диспетчера подключения базы данных, указывающей, что ему не требуется буква диска, следующая доступная буква диска назначается тому. Если имя неперсистентного устройства тома начинается с "\Device\Floppy", диспетчер подключения будет проверка доступных букв дисков, начиная с буквы "A". Если имя тома начинается с "\Device\CdRom", диспетчер подключения проверка для доступных букв дисков, начиная с буквы диска "D". Во всех остальных случаях диспетчер подключения начинается с буквы диска "C".

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Клиент диспетчера подключений инициализирует структуру 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)

См. также раздел

MOUNTMGR_DRIVE_LETTER_TARGET