【问题标题】:Determine Physical Location of a PCI Adapter确定 PCI 适配器的物理位置
【发布时间】:2010-09-24 13:08:39
【问题描述】:

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

事实上,该软件通常在配备 ExpressCard 和/或 PC 卡适配器的笔记本电脑上运行。因此,用户可以例行地移除适配器。此外,我们的客户可能拥有比一台笔记本电脑更多的适配器。因此,您可以想象有人在笔记本电脑中安装适配器 A(PC 卡)和 B(ExpressCard)并配置我们的软件。他们现在希望歌手的麦克风连接到 PC 卡适配器,而吉他麦克风连接到 ExpressCard 适配器。然后他们回到办公室,取出适配器,将它们与所有其他适配器放在一起。第二天,当他们使用该软件时,他们会拿起适配器 C(PC 卡)和 D(ExpressCard)。当他们将这些卡插入系统时,我们希望能够知道适配器 C 与适配器 A 位于同一位置,因此连接到歌手的麦克风,而 D 与 B 位于同一位置因此与吉他挂钩。

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

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

我希望它可以在 Windows XP 及更高版本上运行。请注意,我们确实控制着硬件驱动程序,因此我们可以在必要时进行更改。

【问题讨论】:

    标签: winapi windows-xp driver wdk pci-bus


    【解决方案1】:

    事实证明,PCI 位置信息位于

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

    PCI 设备的位置类似于 PCI\\

    在 Windows XP 下,这将告诉您总线编号、设备编号和功能编号。这可能与史蒂夫提到的来自http://support.microsoft.com/kb/253232 的信息相同。使用此注册表位置的优点是无需修改驱动程序(包括 API 更改)。

    【讨论】:

      【解决方案2】:

      我认为this KB article 是您所需要的。

      本文介绍了如何获得 配置和位置 信息(例如 BusNumber, DeviceNumber 和功能编号)的 外围组件互连 驱动程序中的 (PCI) 设备 目标设备的驱动程序堆栈 作为函数或过滤器驱动程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-22
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多