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


IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO IOCTL (avc.h)

Код элемента управления IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO ввода-вывода управляет перечислением виртуальных вложенных элементов. Он доступен как для пользовательского режима, так и для компонентов режима ядра через диспетчеризацию IRP_MJ_DEVICE_CONTROL. Для обмена данными между драйверами это METHOD_BUFFERED IOCTL, поэтому задайте поля IRP соответствующим образом (IrpStack-Parameters.DeviceIoControl.InputBufferLength> и Irp-AssociatedIrp.SystemBuffer>).

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO используется для добавления или удаления идентификаторов подсоединений одного типа. Последовательные вызовы с другой частью идентификатора адреса подсоединения приводят к изменению количества перечисленных идентификаторов. Обратите внимание, что avc.sys добавляет или удаляет только самые высокие идентификаторы. Это ограничение спецификации AV/C, а не реализация драйвера.

Этот IOCTL использует структуру AVC_SUBUNIT_ADDR_SPEC.

Основной код

IRP_MJ_DEVICE_CONTROL

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

В случае успешного выполнения драйвер протокола AV/C устанавливает Irp-IoStatus.Status>в STATUS_SUCCESS.

Возможные другие возвращаемые значения:

Возвращаемое значение Описание
STATUS_INSUFFICIENT_RESOURCES Буфер не передан или недостаточно ресурсов для выполнения запроса в реестре.
STATUS_INVALID_BUFFER_SIZE Буфер, передаваемый в Irp->AssociatedIrp.SystemBuffer, должен быть не меньше размера sizeof(AVC_SUBUNIT_ADDR_SPEC), который включает однобайтовый адрес подсоединителя, но ограничен 32-байтным адресом подсоединителя.
STATUS_INVALID_PARAMETER Адрес подсоединия был указан неправильно.
STATUS_ACCESS_DENIED Текущий пользователь имеет недостаточно прав доступа к реестру, чтобы сделать обновление постоянным.

Комментарии

Должен вызываться по адресу IRQL = PASSIVE_LEVEL.

Требования

Требование Значение
Заголовок avc.h (включая Avc.h)

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

AVC_SUBUNIT_ADDR_SPEC

IOCTL_AVC_BUS_RESET

IOCTL_AVC_CLASS

IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO