IRP_MN_QUERY_BUS_INFORMATION

PnP 管理員會使用此 IRP 來要求裝置父匯流排的類型和實例編號。

匯流排驅動程式應針對其子裝置處理此要求, (PDO) 。 函式和篩選驅動程式不會處理此 IRP。

0x15

主要程式碼

IRP_MJ_PNP

傳送時

當列舉裝置時,PnP 管理員會傳送此 IRP。

PnP 管理員會在任意執行緒內容中,在 IRQL PASSIVE_LEVEL傳送此 IRP。

輸入參數

輸出參數

在 I/O 狀態欄塊中傳回。

I/O 狀態欄塊

匯流排驅動程式會將 Irp-IoStatus.Status > 設定為STATUS_SUCCESS或適當的錯誤狀態。

成功時,匯流排驅動程式會將 Irp-IoStatus.Information > 設定為已完成 PNP_BUS_INFORMATION 結構的指標。 (如需詳細資訊,請參閱一節。) 發生錯誤時,匯流排驅動程式會將 Irp-IoStatus.Information > 設定為零。

函式和篩選驅動程式不會處理此 IRP。

作業

回應此 IRP 傳回的資訊可供匯流排上的裝置使用函式和篩選驅動程式。 函式和篩選驅動程式可以呼叫 IoGetDeviceProperty 來要求 DevicePropertyBusTypeGuidDevicePropertyLegacyBusTypeDevicePropertyBusNumber。 在多個匯流排上支援裝置的函式和篩選驅動程式,可以使用這項資訊來判斷特定裝置所在的匯流排。

如果匯流排驅動程式傳回信息以回應此 IRP,它會從分頁記憶體配置 PNP_BUS_INFORMATION 結構。 當不再需要 PnP 管理員時,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 中。 驅動程式寫入器應該使用 Uuidgen 為其他匯流排類型產生 GUID。

LegacyBusType
PnP 匯流排驅動程式會將 LegacyBusType 設定為父匯流排 的INTERFACE_TYPE 。 介面類別型定義于 Wdm.h 中。 某些公車有特定的 INTERFACE_TYPE 值,例如 PCMCIABusPCIBusPNPISABus。 對於其他匯流排,特別是 USB 等較新的匯流排,匯流排驅動程式會將此成員設定為 PNPBus

LegacyBusType會指定用來與裝置通訊的介面。 這可能不一定對應至父匯流排的類型。 例如,插入 PCI CardBus 控制器的 CardBus 卡介面是 PCIBus控制器。 不過,PCI CardBus 控制器上的 PCMCIA 卡片介面是 PCMCIABus

BusNumber
匯流排驅動程式會將 BusNumber 設定為數字,以區分該匯流排與電腦上相同類型之其他匯流排的數位。 匯流排編號配置是特定匯流排。 匯流排號碼可能是虛擬的,但必須符合舊版介面所使用的任何編號,例如 IoReportResourceUsage

如需處理隨插即用次要 IRP的一般規則,請參閱隨插即用

傳送此 IRP

保留供系統使用。 驅動程式不得傳送此 IRP。

呼叫 IoGetDeviceProperty 以取得裝置所連結之匯流排的相關資訊。

規格需求

標頭

Wdm.h (包括 Wdm.h、Ntddk.h 或 Ntifs.h)

另請參閱

IoGetDeviceProperty