Linux是否有相当于SetupDiGetClassDevs函数的Linux

时间:2019-02-18 11:05:10

标签: c++ linux windows

我编写了一个c ++程序,用于使用HDEVINFO对象和SetupDiGetClassDevs函数在Windows中搜索PCI设备。

这些功能是否有Linux等效产品? 我将使用Kubuntu,因此特定于KDE和/或特定于Ubuntu的解决方案很好。 一个示例代码片段将受到更多的赞赏;-)

谢谢

1 个答案:

答案 0 :(得分:2)

通过遍历/ sys / devices / pci *目录,您可以获得有关已连接PCI设备的几乎所有信息。

例如

cat /sys/devices/pci0000:00/0000:00:00.0/subsystem_vendor

将返回该设备的供应商ID。

总体而言,我建议您查看/ proc和/ sys文件系统的内容,这几乎是您可以在用户空间中使用的所有内容。对于一些更有趣的东西,可以考虑编写内核模块(这不是SO问题的主题,我建议阅读最新版本的Linux设备驱动程序)。

UPD1:是的,正如有人肯定会指出的那样,这实际上并不是一个功能,但是读写这些文件似乎并不困难,只是与Windows相比有一种不同的方法。

UPD2:对于内核模块方法,我建议对pci_register_driver函数及其附带的所有信息进行谷歌搜索。

UPD3:更多,对于用户空间,通常有一种直接使用PCI设备资源的方法-只需打开/sys/devices/pci0000:00/0000:00:00.0/resourceX,其中X是相应BAR的数量。只要知道正确的偏移量,就可以随意读取和写入这些文件。