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.
Основной код
Блок состояния
В случае успешного выполнения драйвер протокола 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) |