Condividi tramite


IRP_MN_QUERY_BUS_INFORMATION

Il gestore PnP usa questo IRP per richiedere il tipo e il numero di istanza di un bus padre di un dispositivo.

I driver del bus devono gestire questa richiesta per i dispositivi figlio (PDO). I driver di funzione e filtro non gestiscono l'IRP.

Valore

0x15

Codice principale

IRP_MJ_PNP

Data di invio

La gestione PnP invia questo IRP quando un dispositivo viene enumerato.

Il gestore PnP invia l'IRP in IRQL PASSIVE_LEVEL in un contesto di thread arbitrario.

Parametri di input

Nessuno

Parametri di output

Restituito nel blocco di stato di I/O.

Blocco dello stato I/O

Un driver del bus imposta Irp-IoStatus.Status> su STATUS_SUCCESS o su uno stato di errore appropriato.

In caso di esito positivo, un driver del bus imposta Irp-IoStatus.Information> su un puntatore a una struttura di PNP_BUS_INFORMATION completata. Per altre informazioni, vedere la sezione "Operazione". In un errore, il driver del bus imposta Irp-IoStatus.Information> su zero.

I driver di funzione e filtro non gestiscono l'IRP.

Operazione

Le informazioni restituite in risposta a questa IRP sono disponibili per la funzione e filtrare i driver per i dispositivi nel bus. I driver di funzione e filtro possono chiamare IoGetDeviceProperty per richiedere un DispositivoPropertyBusTypeGuid, DevicePropertyLegacyBusType o DevicePropertyBusNumber. I driver di funzione e filtro che supportano i dispositivi su più bus possono usare queste informazioni per determinare il bus in cui risiede un determinato dispositivo.

Se un driver del bus restituisce le informazioni in risposta a questa IRP, alloca una struttura PNP_BUS_INFORMATION dalla memoria in pagina. Il gestore PnP libera la struttura quando non è più necessaria.

Una struttura PNP_BUS_INFORMATION ha il formato seguente:

typedef struct _PNP_BUS_INFORMATION {
    GUID BusTypeGuid;
    INTERFACE_TYPE LegacyBusType;
    ULONG BusNumber;
} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;

I membri della struttura sono definiti come segue:

BusTypeGuid
Un driver del bus imposta BusTypeGuid sul GUID per il tipo del bus in cui risiede il dispositivo. I GUID per i tipi di bus standard sono elencati in Wdmguid.h. I writer di driver devono generare GUID per altri tipi di bus usando Uuidgen.

LegacyBusType
Un driver del bus PnP imposta LegacyBusType sul INTERFACE_TYPE del bus padre. I tipi di interfaccia sono definiti in Wdm.h. Alcuni autobus hanno un valore INTERFACE_TYPE specifico, ad esempio PCMCIABus, PCIBus o PNPISABus. Per altri autobus, soprattutto autobus più recenti come USB, il driver del bus imposta questo membro su PNPBus.

LegacyBusType specifica l'interfaccia usata per comunicare con il dispositivo. Questo può o non corrispondere al tipo del bus padre. Ad esempio, l'interfaccia per una scheda CardBus collegata a un controller PCI CardBus è PCIBus. Tuttavia, l'interfaccia per una scheda PCMCIA in un controller PCI CardBus è PCMCIABus.

BusNumber
Un driver del bus imposta BusNumber su un numero che distingue il bus da altri autobus dello stesso tipo nel computer. Lo schema di numerazione del bus è specifico del bus. I numeri di bus possono essere virtuali, ma devono corrispondere a qualsiasi numerazione utilizzata dalle interfacce legacy, ad esempio IoReportResourceUsage.

Vedere Plug and Play per le regole generali per la gestione degli IRP secondari Plug and Play.

Invio di questo IRP

Riservato per l'utilizzo nel sistema. I driver non devono inviare questo IRP.

Chiamare IoGetDeviceProperty per ottenere informazioni sul bus a cui è collegato un dispositivo.

Requisiti

Intestazione

Wdm.h (include Wdm.h, Ntddk.h o Ntifs.h)

Vedi anche

IoGetDeviceProperty