IOCTL_AVC_BUS_RESET IOCTL (avc.h)

Код элемента управления IOCTL_AVC_BUS_RESET ввода-вывода позволяет вызывающей объекту выполнять все предыдущие IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO и IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO запросы управления, которые не использовали флаг AVC_SUBUNIT_ADDR_TRIGGERBUSRESET. Он доступен как для пользовательского режима, так и для компонентов режима ядра через диспетчеризацию IRP_MJ_DEVICE_CONTROL.

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

Этот запрос приводит к тому, чтоavc.sys делает недействительными отношения между устройствами, в результате чего диспетчер PnP запрашивает обновленный список дочерних объектов устройства (виртуальных вложенных элементов). Если нет новых или удаленных дочерних объектов устройства, никаких действий выполняться не будет. Если есть новые или удаленные дочерние объекты устройства, их драйверы будут загружены или выгружены, а сброс шины 1394 будет активирован для каждого PDO при запуске или удалении каждого из них.

Основной код

IRP_MJ_DEVICE_CONTROL

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

Irp-IoStatus.Status> имеет значение STATUS_SUCCESS, если запрос выполнен успешно.

В противном случае — Состояние до соответствующего условия ошибки в виде кода NTSTATUS.

Дополнительные сведения см. в разделе Значения NTSTATUS.

Комментарии

Должен вызываться в IRQL = PASSIVE_LEVEL

Требования

Требование Значение
Заголовок avc.h

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

AVC_SUBUNIT_ADDR_SPEC

IOCTL_AVC_CLASS

IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO