我需要使用 C/C++(允许内联汇编)从 Linux 获取所有 PCI 总线设备的供应商 ID 和设备 ID,但我什至不明白从哪里开始。
请给我一些建议或代码部分。
如何获取所有PCI设备的Vendor ID和Device ID?
简而言之,您必须编写一个 C 程序来执行以下操作:
grep PCI_ID /sys/bus/pci/devices/*/uevent
Run Code Online (Sandbox Code Playgroud)
示例输出行:
/sys/bus/pci/devices/0000:00:00.0/uevent:PCI_ID=1022:14E8
/sys/bus/pci/devices/0000:00:00.2/uevent:PCI_ID=1022:14E9
/sys/bus/pci/devices/0000:00:01.0/uevent:PCI_ID=1022:14EA
/sys/bus/pci/devices/0000:00:02.0/uevent:PCI_ID=1022:14EA
Run Code Online (Sandbox Code Playgroud)
=并提取前后相关数据:。
所以你要做的是:
/sys/bus/pci/deviceswith中的目录readdir_rPCI_ID找到sscanf(line, "PCI_ID=%4x:%4x\n", &vendor_id, &device_id)我找不到任何有关ueventinside 的文档/sys/bus/pci/devices。这个答案基于逆向工程busybox lspci.c 来源。