如何始终如一地识别音频控制器 PCI 设备?

问题描述

在我的应用程序中,我检索机器 PCI 空间中的所有设备,然后过滤其中的音频控制器,以便将其用于某些测试。到目前为止,我们过去常常通过检查其类代码和子类代码来识别音频控制器,这些代码之前在 PCI 配置空间 (https://wiki.osdev.org/Intel_High_Definition_Audio) 中的寄存器中读取。作为参考,我们可以通过查看Windows设备管理器中High Definition Audio Controller设备的“PCI基类”和“PCI“子类”属性,手动确认分别为4和3。

问题是我们发现在某些机器上这不起作用,因为它们的音频控制器(在设备管理器中命名为 Intel(R) Smart Sound Technology(Intel(R) SST)Audio Controller)PCI 基类和 PCI 子类属性实际上是 4 和 1。

我找到了一些证实这一点的来源 (https://wiki.osdev.org/PCI#Class_Codes),但无论如何,我如何识别这些案例?有没有办法事先知道子类代码应该是 3 还是 1(如系统调用或 wmi 查询),或者我应该只检查这两个代码(如果没有带有类的 PCI 设备代码 4 和子类 1,寻找一个带有类代码 4 和子类代码 3 的)。这是一个 C++ 应用程序,以防万一。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)