獲取PCI總線上任何配置頭信息

這個定義來自于以下結構圖

當然,如果不喜歡定義結構,那么得定義一個宏如下
#define CONFIG_ADDRESS(f, Bus, Device, Function, Registery)
((f<<31) | (Bus<<24) | (Device<<16) | (Function<<8) | (Registry<<2))
關于這幾個參數的含義:
主站蜘蛛池模板:
宝兴县|
安平县|
松原市|
恩平市|
宿州市|
新邵县|
正宁县|
福安市|
鄱阳县|
惠水县|
福泉市|
惠州市|
江北区|
商洛市|
蕉岭县|
乐安县|
怀远县|
罗城|
房山区|
满城县|
博湖县|
鹤庆县|
旌德县|
疏附县|
新安县|
高邮市|
云浮市|
体育|
凤庆县|
永年县|
蓬溪县|
长治市|
竹山县|
平昌县|
秦皇岛市|
东海县|
繁昌县|
滕州市|
淮北市|
泗水县|
泰州市|
Bus Number(總線):
本文引用地址:http://www.104case.com/article/201612/330385.htm有256個Bus可供查詢.當掃描硬件時,最好掃描256個Bus(從0開始編號)
Device Number:
掛載在Bus上的設備,可以是顯卡,聲卡,北橋等.一個Bus最多被掛載32個設備.(從0開始編號)
Function Number:
每個Device至少含有1個或者多個Function.(從0開始編號)
Register Number:
最多有256個注冊標識.
好了,一切準備就緒后就可以開始PCI配置信息獲取和顯示了。
先看看應用程序中調用獲取和現實兩個函數的代碼,包括了如何填寫_PCI_SLOT_NUMBER結構
注釋很清楚,ConfigData存放的是數據,不是數據指針,大家要小心!Out_32和In_32是用C語言和匯編混編的函數,大家參考《windows驅動開發技術詳解》里面的代碼。
然后便是DisplayPciCommonConfig函數代碼
如果有閑心,可以完成一個類型1,類型2,類型0三種配置頭的信息顯示。
最后來看看顯示結果:(正如前面聲明的,bus=0,device=0,function=0,enable=1,register=0)
關鍵詞:
PCI總線配置頭信
評論