IRP_MN_QUERY_BUS_INFORMATION
Диспетчер PnP использует этот IRP для запроса типа и номера экземпляра родительской шины устройства.
Водители автобусов должны обработать этот запрос для своих дочерних устройств (PDO). Драйверы функций и фильтров не обрабатывают этот IRP.
Значение
0x15
Основной код
При отправке
Диспетчер PnP отправляет этот IRP при перечислении устройства.
Диспетчер PnP отправляет этот IRP в IRQL PASSIVE_LEVEL в произвольном контексте потока.
Входные параметры
Нет
Выходные параметры
Возвращается в блоке состояния ввода-вывода.
Блок состояния ввода-вывода
Драйвер шины задает Irp-IoStatus.Status> значение STATUS_SUCCESS или соответствующее состояние ошибки.
При успешном выполнении драйвер шины задает Irp-IoStatus.Information> указатель на завершенную структуру PNP_BUS_INFORMATION. (Дополнительные сведения см. в разделе "Операция".) При возникновении ошибки драйвер шины устанавливает для Irp-IoStatus.Information> нулевое значение.
Драйверы функций и фильтров не обрабатывают этот IRP.
Операция
Сведения, возвращаемые в ответ на этот IRP, доступны для функций и фильтров для устройств в шине. Драйверы функций и фильтров могут вызывать IoGetDeviceProperty для запроса DevicePropertyBusTypeGuid, DevicePropertyLegacyBusType или DevicePropertyBusNumber. Драйверы функций и фильтров, которые поддерживают устройства в нескольких шинах, могут использовать эти сведения, чтобы определить, в какой шине находится конкретное устройство.
Если водитель шины возвращает информацию в ответ на этот IRP, он выделяет структуру PNP_BUS_INFORMATION из страничной памяти. Диспетчер PnP освобождает структуру, когда она больше не нужна.
Структура PNP_BUS_INFORMATION имеет следующий формат:
typedef struct _PNP_BUS_INFORMATION {
GUID BusTypeGuid;
INTERFACE_TYPE LegacyBusType;
ULONG BusNumber;
} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;
Члены структуры определяются следующим образом:
BusTypeGuid
Драйвер шины задает Для BusTypeGuid идентификатор GUID для типа шины, в которой находится устройство. Идентификаторы GUID для стандартных типов шин перечислены в Wdmguid.h. Средства записи драйверов должны создавать идентификаторы GUID для других типов шин с помощью Uuidgen.
LegacyBusType
Драйвер шины PnP задает LegacyBusTypeINTERFACE_TYPE родительской шины. Типы интерфейса определяются в Wdm.h. Некоторые автобусы имеют определенное значение INTERFACE_TYPE , например PCMCIABus, PCIBus или PNPISABus. Для других автобусов, особенно новых автобусов, таких как USB, водитель автобуса устанавливает для этого элемента PNPBus.
LegacyBusType указывает интерфейс, используемый для взаимодействия с устройством. Это может соответствовать типу родительской шины. Например, интерфейсом для карта CardBus, подключенного к контроллеру PCI CardBus, является PCIBus. Однако интерфейсом для карта PCMCIA на контроллере PCI CardBus является PCMCIABus.
BusNumber
Водитель автобуса присваивает номеру BusNumber число, отличающее автобус от других автобусов того же типа на компьютере. Схема нумерирования автобусов зависит от шины. Номера шины могут быть виртуальными, но должны соответствовать любым нумерам, используемым устаревшими интерфейсами, такими как IoReportResourceUsage.
Общие правила обработки Plug and Play незначительных irp см. в Plug and Play.
Отправка этого IRP
Зарезервировано для системного использования. Драйверы не должны отправлять этот IRP.
Вызовите IoGetDeviceProperty , чтобы получить сведения о шине, к которой подключено устройство.
Требования
Заголовок |
Wdm.h (включая Wdm.h, Ntddk.h или Ntifs.h) |