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