Поделиться через


IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER IOCTL (mountmgr.h)

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

Основной код

IRP_MJ_DEVICE_CONTROL

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

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

Буфер входных и выходных данных

N/A

Длина буфера ввода и вывода

N/A

Блок состояния

Если операция выполнена успешно, для поля состояния задано значение STATUS_SUCCESS.

Если InputBufferLength меньше sizeof(MOUNTMGR_DRIVE_LETTER_TARGET) или если OutputBufferLength меньше sizeof(MOUNTMGR_DRIVE_LETTER_INFORMATION), то для поля состояния задано значение STATUS_INVALID_PARAMETER.

Замечания

Дополнительные сведения см. в поддержке запросов диспетчера подключений вдрайвера класса хранилища.

Требования

Требование Ценность
заголовка mountmgr.h (include Mountmgr.h)

См. также

MOUNTMGR_DRIVE_LETTER_TARGET