新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 獲取PCI總線上任何配置頭信息

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

        作者: 時間:2016-12-15 來源:網絡 收藏

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

        當然,如果不喜歡定義結構,那么得定義一個宏如下
        #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個注冊標識.0-3F用于PCI總線的特殊用途;40-FF用于自定義.

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

        先看看應用程序中調用獲取和現實兩個函數的代碼,包括了如何填寫_PCI_SLOT_NUMBER結構



        現在給出DisplayPciCommonConfig的代碼(devicename由GetInterfaceName函數得來,關于這個函數的實現,參考之前的獲取WDM接口名稱方法博文)


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

        然后便是DisplayPciCommonConfig函數代碼



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

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




        上一頁 1 2 下一頁

        關鍵詞: PCI總線配置頭信

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宝兴县| 安平县| 松原市| 恩平市| 宿州市| 新邵县| 正宁县| 福安市| 鄱阳县| 惠水县| 福泉市| 惠州市| 江北区| 商洛市| 蕉岭县| 乐安县| 怀远县| 罗城| 房山区| 满城县| 博湖县| 鹤庆县| 旌德县| 疏附县| 新安县| 高邮市| 云浮市| 体育| 凤庆县| 永年县| 蓬溪县| 长治市| 竹山县| 平昌县| 秦皇岛市| 东海县| 繁昌县| 滕州市| 淮北市| 泗水县| 泰州市|