2010-09-24 67 views
0

我們有一個可以使用多個PCI適配器的Windows應用程序。這些適配器都具有與其他硬件或電纜的外部物理連接。我們的軟件配置爲知道每個卡上的物理連接連接到什麼。想象一下支持多種聲音輸入和輸出的音頻軟件。音頻軟件被配置爲知道適配器1上的麥克風是主唱,而適配器2上的麥克風是吉他。確定PCI適配器的物理位置

碰巧,該軟件通常運行在帶有ExpressCard和/或PC卡適配器的筆記本電腦上。這樣,用戶可以定期移除適配器。此外,我們的客戶可能擁有比適合一臺筆記本電腦更多的適配器。因此,您可以想象有人在筆記本電腦中安裝了適配器A(PC卡)和B(ExpressCard)並配置了我們的軟件。他們現在期望歌手的麥克風連接到PC卡適配器,吉他麥克風連接到ExpressCard適配器。然後,他們回到辦公室,拿出適配器,並將其與所有其他適配器一起堆放。第二天,當他們去使用軟件時,他們抓住適配器C(PC Card)和D(ExpressCard)。當他們將這些卡插入系統時,我們希望能夠知道適配器C與適配器A位於同一個位置,因此連接到歌手的麥克風,並且D與B處於同一位置因此連接到吉他。

如果沒有此功能,用戶每次換卡時都必須重新配置我們的軟件,這不是特別方便用戶使用。

有什麼辦法可以確定Windows中硬件適配器的PCI鏈路中的位置嗎?有沒有其他方法可以實現這個目標?

我想在Windows XP及更高版本上使用它。請注意,我們確實控制硬件驅動程序,因此如有必要,我們可以在那裏進行更改。

回答

1

事實證明,PCI位置信息,請

HKLM\SYSTEM\CurrentControlSet\Enum\<PnP ID>\LocationInformation 

凡PCI設備下像PCI \\

在Windows XP中,這將告訴你的總線編號,設備數量和功能號碼。這可能與Steve提到的http://support.microsoft.com/kb/253232的信息相同。使用此註冊表位置的優點是不需要驅動程序修改(包括API更改)。

1

我認爲this KB article是你需要的。

本文介紹瞭如何可以得到 配置和位置 信息(如BusNumber, DeviceNumber和功能編號)的 外圍組件互連 (PCI)的驅動裝置是部分 的目標設備的驅動程序堆棧 作爲函數或過濾器驅動程序。