在windows下查看PCI或PCIE設備的vendor ID和device ID

以Intel的網絡連接器為例

1、右鍵我的電腦,打開管理,打開網路界面卡


2、右鍵Intel(R) Ethernet Connection I217-v,打開內容子菜單,選擇詳細資料頁,在屬性中選擇硬體識別碼


3、上圖中的VEN_8086為vendor ID,DEV_153B為device ID。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这里提供一个简单的PCIe设备驱动代码样例和注释,请根据自己实际的硬件情况进行修改: ```c #include <linux/module.h> // 模块相关的头文件 #include <linux/pci.h> // PCIe相关的头文件 #include <linux/init.h> // 初始化相关的头文件 // 定义PCIe设备ID static struct pci_device_id pci_ids[] = { { 0x1234, 0x5678, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, { 0 } }; MODULE_DEVICE_TABLE(pci, pci_ids); // 定义PCIe设备的初始化函数 static int pcie_driver_probe(struct pci_dev *dev, const struct pci_device_id *id) { int err; // 停用设备 pci_disable_device(dev); // 分配设备资源 err = pci_enable_device(dev); if (err) return err; // 映射设备内存 void *hw_addr = pci_iomap(dev, 0, pci_resource_len(dev, 0)); if (!hw_addr) return -EIO; // 打印设备信息 pr_info("PCIe device found (%04x:%04x)\n", dev->vendor, dev->device); // TODO: 对设备进行初始化 return 0; } // 定义PCIe设备的卸载函数 static void pcie_driver_remove(struct pci_dev *dev) { // 解除映射设备内存 pci_iounmap(dev, pci_resource_len(dev, 0)); // 停用设备 pci_disable_device(dev); // 打印设备卸载信息 pr_info("PCIe device removed (%04x:%04x)\n", dev->vendor, dev->device); } // 定义PCIe设备驱动结构体 static struct pci_driver pcie_driver = { .name = "pcie_driver", .id_table = pci_ids, .probe = pcie_driver_probe, .remove = pcie_driver_remove }; // 注册PCIe设备驱动 static int __init pcie_driver_init(void) { return pci_register_driver(&pcie_driver); } // 注销PCIe设备驱动 static void __exit pcie_driver_exit(void) { pci_unregister_driver(&pcie_driver); } // 指定初始化函数和卸载函数 module_init(pcie_driver_init); module_exit(pcie_driver_exit); // 指定模块的信息 MODULE_LICENSE("GPL"); MODULE_AUTHOR("Your Name"); MODULE_DESCRIPTION("PCIe device driver example"); ``` 注释: - `pci_device_id` 结构体用于定义 PCIe 设备的厂商 ID、设备 ID、子系统厂商 ID、子系统 ID 等信息。使用 `MODULE_DEVICE_TABLE(pci, pci_ids)` 宏定义设备 ID 列表,供内核自动匹配设备使用。 - `pcie_driver_probe()` 函数是 PCI 设备驱动的初始化函数,当内核发现匹配的 PCIe 设备时,会调用此函数完成对设备的配置和初始化。在函数中,需要先停用设备,然后为设备分配资源(如内存和 I/O 端口),并将资源地址映射到内核虚拟地址空间。最后,对设备进行初始化,如设置寄存器值、清空中断等。如果初始化失败,需要返回错误码,否则返回 0 表示初始化成功。 - `pcie_driver_remove()` 函数是 PCI 设备驱动的卸载函数。当内核需要卸载 PCIe 设备驱动时,会调用此函数完成对设备的解除映射和停用操作。在函数中,需要先解除内核虚拟地址空间和设备资源的映射,然后停用设备。最后可以打印设备卸载信息(可选)。 - `pci_driver` 结构体用于定义 PCI 设备驱动的名字、设备 ID 列表、初始化函数和卸载函数。使用 `pci_register_driver()` 函数注册 PCI 设备驱动,使用 `pci_unregister_driver()` 函数注销设备驱动。 - `module_init()` 和 `module_exit()` 宏指定初始化函数和卸载函数。`MODULE_LICENSE()` 宏指定此模块的许可证,如 GPL 或 LGPL。其他常用的模块指定宏还包括 `MODULE_AUTHOR()`、`MODULE_DESCRIPTION()` 和 `MODULE_VERSION()`。 - 常用的 PCI 总线相关函数包括 `pci_enable_device()`、`pci_disable_device()`、`pci_resource_start()`、`pci_resource_len()` 和 `pci_iomap()` 等。函数的具体使用方式,请参考相关文档和例程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jimbo_Zhang

有钱的捧个钱场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值