新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 獲取PCI總線上任何配置頭信息

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

作者: 時(shí)間:2016-12-15 來源:網(wǎng)絡(luò) 收藏

這個(gè)定義來自于以下結(jié)構(gòu)圖

當(dāng)然,如果不喜歡定義結(jié)構(gòu),那么得定義一個(gè)宏如下
#define CONFIG_ADDRESS(f, Bus, Device, Function, Registery)
((f<<31) | (Bus<<24) | (Device<<16) | (Function<<8) | (Registry<<2))
關(guān)于這幾個(gè)參數(shù)的含義:

Bus Number(總線):

本文引用地址:http://m.butianyuan.cn/article/201612/330385.htm

有256個(gè)Bus可供查詢.當(dāng)掃描硬件時(shí),最好掃描256個(gè)Bus(從0開始編號(hào))

Device Number:

掛載在Bus上的設(shè)備,可以是顯卡,聲卡,北橋等.一個(gè)Bus最多被掛載32個(gè)設(shè)備.(從0開始編號(hào))

Function Number:

每個(gè)Device至少含有1個(gè)或者多個(gè)Function.(從0開始編號(hào))

Register Number:

最多有256個(gè)注冊(cè)標(biāo)識(shí).0-3F用于PCI總線的特殊用途;40-FF用于自定義.

好了,一切準(zhǔn)備就緒后就可以開始PCI配置信息獲取和顯示了。

先看看應(yīng)用程序中調(diào)用獲取和現(xiàn)實(shí)兩個(gè)函數(shù)的代碼,包括了如何填寫_PCI_SLOT_NUMBER結(jié)構(gòu)



現(xiàn)在給出DisplayPciCommonConfig的代碼(devicename由GetInterfaceName函數(shù)得來,關(guān)于這個(gè)函數(shù)的實(shí)現(xiàn),參考之前的獲取WDM接口名稱方法博文)


注釋很清楚,ConfigData存放的是數(shù)據(jù),不是數(shù)據(jù)指針,大家要小心!Out_32和In_32是用C語言和匯編混編的函數(shù),大家參考《windows驅(qū)動(dòng)開發(fā)技術(shù)詳解》里面的代碼。

然后便是DisplayPciCommonConfig函數(shù)代碼



如果有閑心,可以完成一個(gè)類型1,類型2,類型0三種配置頭的信息顯示。

最后來看看顯示結(jié)果:(正如前面聲明的,bus=0,device=0,function=0,enable=1,register=0)




上一頁 1 2 下一頁

關(guān)鍵詞: PCI總線配置頭信

評(píng)論


技術(shù)專區(qū)

關(guān)閉