IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL (mountmgr.h)
После получения этого IOCTL драйвер клиента должен указать (неперсистентное) имя устройства (или целевого объекта) для тома. Диспетчер подключения использует имя устройства , возвращенное клиентом, в качестве целевого объекта символьной ссылки. Примером имени устройства может быть "\Device\HarddiskVolume1".
Поддержка этого IOCTL клиентами диспетчера подключения является обязательной.
Основной код
Входной буфер
Нет.
Длина входного буфера
Нет.
Выходной буфер
Клиент диспетчера подключений возвращает структуру переменной длины типа MOUNTDEV_NAME в начале буфера в Irp-AssociatedIrp.SystemBuffer>. Имя устройства должно быть вставлено по адресу, на который указывает элемент Name этой структуры.
Длина выходного буфера
Parameters.DeviceIoControl.OutputBufferLength в расположении стека ввода-вывода IRP указывает размер выходного буфера в байтах, который должен быть больше или равен sizeof(MOUNTDEV_NAME)
.
Блок состояния
Для поля Information задано значение FIELD_OFFSET(MOUNTDEV_NAME, Name) + output-NameLength> или output-NameLength> + sizeof(USHORT), где выходные данные указывают на буфер в Irp-AssociatedIrp.SystemBuffer>.
Если операция выполнена успешно, клиент диспетчера подключения должен задать для поля Сведения длину строки, завершаемой значением NULL, содержащей имя устройства, а в поле Состояние — значение STATUS_SUCCESS.
Если выходной буфер слишком мал для хранения имени устройства, клиент диспетчера подключений должен задать для поля sizeof(MOUNTDEV_NAME)
Сведения значение , а для поля Состояние — значение STATUS_BUFFER_OVERFLOW. Кроме того, клиент диспетчера подключений заполняет элемент NameLength структуры MOUNTDEV_NAME .
Комментарии
Рекомендуется, чтобы средство реализации не синхронизировало потоки и не должно выполнять блокирующие вызовы функций и (или) межпроцессного взаимодействия (IPC).
Дополнительные сведения см. в статье Поддержка запросов диспетчера подключений в драйвере класса хранения.
Требования
Требование | Значение |
---|---|
Заголовок | mountmgr.h (включая Mountmgr.h) |