IRP_MN_READ_CONFIG
具有設定空間之公車的匯流排驅動程式必須針對其子裝置處理此要求, (子 PDO) 。 篩選和函式驅動程式不會處理此要求。
值
0x0F
主要程式碼
傳送時
驅動程式或其他系統元件會傳送此 IRP 來讀取裝置父匯流排的設定空間。
驅動程式或其他系統元件會在任意執行緒內容中,在 IRQL < DISPATCH_LEVEL傳送此 IRP。
輸入參數
IO_STACK_LOCATION結構的Parameters.ReadWriteConfig成員本身是包含下列資訊的結構:
ULONG WhichSpace;
PVOID Buffer;
ULONG Offset;
ULONG Length
結構的成員可由不同的匯流排驅動程式以不同的方式解譯,但成員通常定義為:
WhichSpace
指定要存取的記憶體區域。 這個參數可採用下列值:
值 | 匯流排 | 意義 |
---|---|---|
PCI_WHICHSPACE_CONFIG |
PCI |
PCI 組態空間。 |
PCI_WHICHSPACE_ROM |
PCI |
唯讀記憶體。 |
PCCARD_COMMON_MEMORY PCCARD_COMMON_MEMORY_INDIRECT |
Pcmcia |
主要 PCCARD 記憶體。 |
PCCARD_ATTRIBUTE_MEMORY PCCARD_ATTRIBUTE_MEMORY_INDIRECT |
Pcmcia |
PCMCIA 屬性 (設定) 空間。 |
PCCARD_PCI_CONFIGURATION_SPACE |
Pcmcia |
PCI 組態空間。 |
PCI_XXX 值定義于 Wdm.h 中。 PCCARD_XXX 值定義于 Ntddpcm.h 中。
緩衝區
指向要傳回要求資訊的緩衝區。 傳送 IRP 的元件會從分頁記憶體配置此結構。 緩衝區的格式是匯流排特定的。
輸出參數
成功時,匯流排驅動程式會在 Parameters.ReadWriteConfig.Buffer 填入緩衝區,並包含要求的資料。
I/O 狀態欄塊
匯流排驅動程式會將 Irp-IoStatus.Status > 設定為STATUS_SUCCESS或適當的錯誤狀態,例如STATUS_INVALID_PARAMETER_、STATUS_NO_SUCH_DEVICE或STATUS_DEVICE_NOT_READY。
成功時,匯流排驅動程式會將 Irp-IoStatus.Information > 設定為傳回的位元組數目。
如果匯流排驅動程式無法立即完成此要求,它可以標示 IRP 擱置中、傳回STATUS_PENDING,並在稍後完成 IRP。
作業
匯流排驅動程式會為其子裝置處理此 IRP, (子 PDO) 。
函式和篩選驅動程式不會處理此 IRP;它們會將它傳遞至下一個較低驅動程式,但不會變更 Irp-IoStatus >。狀態和它們不會設定 IoCompletion 常式。
處理此要求的匯流排驅動程式應該檢查 WhichSpace 參數,以確保它包含驅動程式支援的值。
如需處理隨插即用次要 IRP的一般規則,請參閱隨插即用。
傳送此 IRP
一般而言,函式驅動程式會將此 IRP 傳送至所連結裝置堆疊中的頂端驅動程式,而 IRP 是由父匯流排驅動程式處理。
如需傳送 IRP 的相關資訊,請參閱 處理 IRP 。 下列步驟特別適用于此 IRP:
從分頁集區配置緩衝區,並將其初始化為零。
設定 IRP 下一個 I/O 堆疊位置中的值:將 MajorFunction 設定為 IRP_MJ_PNP、將 MinorFunction 設定為 IRP_MN_READ_CONFIG,然後在 Parameters.ReadWriteConfig中設定適當的值。
將 IoStatus.Status 初始化為 STATUS_NOT_SUPPORTED。
不再需要 IRP 和緩衝區時解除配置。
驅動程式必須從 IRQL < DISPATCH_LEVEL傳送此 IRP。
如果父匯流排驅動程式支援這類介面,則驅動程式可以透過匯流排界面常式,在DISPATCH_LEVEL存取匯流排的設定空間。 若要取得匯流排界面,驅動程式會將 IRP_MN_QUERY_INTERFACE 要求傳送至驅動程式連結所在的裝置堆疊。 然後,驅動程式會呼叫介面中傳回的適當常式。
例如,若要從DISPATCH_LEVEL讀取組態空間,驅動程式可以在驅動程式初始化期間呼叫 IRP_MN_QUERY_INTERFACE ,以從父匯流排驅動程式取得 BUS_INTERFACE_STANDARD 介面。 驅動程式會從 IRQL PASSIVE_LEVEL傳送查詢 IRP。 稍後,從 IRQL 的程式碼DISPATCH_LEVEL,驅動程式會呼叫介面中傳回的適當常式,例如 Interface.GetBusData 常式。
規格需求
標頭 |
Wdm.h (包括 Wdm.h、Ntddk.h 或 Ntifs.h) |