识别 PCI 设备是 PCI 还是 PCIe

Identifying whether a PCI device is PCI or PCIe

我需要能够在运行时识别给定的 PCI 设备是快速的还是非快速的。 ID 的一种可能方法是获取配置 space 并检查扩展部分。如果存在扩展部分,则它是 PCIe 卡。具体来说,我会检查前四个字节,看它们是否符合规范要求的 0x100

这是验证所用卡片类型的最佳方式吗?我的假设是否正确?

我认为最好的方法是寻找 PCI Express 功能,它在常规功能 space 中,而不是在扩展 space 中。此功能的存在表示 PCIe 设备。能力 ID 是 0x10.