我们有一个可以使用多个PCI适配器的Windows应用程序。这些适配器都具有与其他硬件或电缆的外部物理连接。我们的软件被配置为知道每张卡上的物理连接已连接到什么。想象一下支持多个声音输入和输出的音频软件。音频软件配置为知道适配器1上的麦克风是主唱,而适配器2上的麦克风是吉他。

碰巧的是,该软件通常是在带有ExpressCard和/或PC卡适配器的笔记本电脑上运行的。因此,用户可能会定期删除适配器。此外,我们的客户的适配器可能比在一台笔记本电脑中的适合度更高。因此,您可以想象有人在笔记本电脑中安装了适配器A(PC卡)和B(ExpressCard)并配置我们的软件。他们现在预计歌手的麦克风已连接到PC卡适配器上,并且吉他麦克风连接到Expresscard适配器上。然后,他们回到办公室,将适配器取出,然后将它们与所有其他适配器一起放在堆中。第二天,当他们使用软件时,他们会抓取适配器C(PC卡)和D(ExpressCard)。当它们将这些卡插入系统时,我们希望能够知道适配器C与适配器A处于同一位置,因此已连接到歌手的麦克风,并且D与B的位置相同因此被挂在吉他上。

如果没有此功能,用户将每次更改卡时都必须重新配置我们的软件,这不是特别用户友好。

有什么方法可以确定Windows中硬件适配器的PCI链中的位置?还有其他方法可以实现这一目标吗?

我希望这可以在Windows XP和稍后再使用。请注意,我们确实控制了硬件驱动程序,因此我们可以在必要时进行更改。

有帮助吗?

解决方案

事实证明,PCI位置信息可在下面获得

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

在哪里适用于PCI设备,例如PCI

在Windows XP下,这将告诉您总线号,设备号和功能号码。这可能是从中相同的信息 http://support.microsoft.com/kb/253232 如史蒂夫所述。使用此注册表位置的优点是不需要驱动程序修改(包括API更改)。

其他提示

我认为 这篇KB文章 是您需要的。

本文介绍了如何在驱动程序中获得外围组件互连(PCI)设备的配置和位置信息(例如Busnumber,DeviceNumber和功能编号)司机。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top