但不知何故,由于某种原因,我无法访问这些成员,所以当我插入我的模块后执行dmesg时,它会打印一些垃圾值.我很乐意收到帮助或提示或任何回复.以下是我到目前为止编写的代码:
P.S.:已经制作了必要的夹杂物.
经过几乎所有必要的头文件后,我知道我可以通过以下结构访问USB设备的供应商ID,其中包含成员结构usb_device_descriptor {}.这个嵌套结构有IDvendor,IDProduct和iManufacturer以及其他一些成员.
//*******************************************struct usb_device udev;struct usb_bus *bus;ssize_t ret;static int __init usb_fun_init(voID){ int result; __le16 IDvendor = 0; __le16 IDProduct = 0; __u8 iManufacturer = 0; printk(KERN_INFO "\n************************************ in init\n"); List_for_each_entry(bus,&usb_bus_List,bus_List){ printk(KERN_INFO "***************** Begins ****************"); printk(KERN_INFO "\nvendor ID = %d",udev.descriptor.IDvendor); printk(KERN_INFO "\nProduct ID = %d",udev.descriptor.IDProduct); printk(KERN_INFO "\nManufacturer = %s",udev.descriptor.iManufacturer); return 0;}static int __exit usb_fun_exit(voID){ printk(KERN_INFO "\n************************************ in exit\n");}module_init(usb_fun_init);module_exit(usb_fun_exit);MODulE_liCENSE("GPL");解决方法 我想,上面是你的内核模块的完整代码.无论如何,您使用的是正确的结构和供应商ID,设备描述符中将提供设备ID. Refer有关描述符的更多详细信息.
我建议你参考内核代码here.
更新1:
以下程序将为您提供有关系统中可用的HUB的信息. 3.2.0内核版本不支持usb_hub_for_each_child宏,但最新3.7.x版本支持.
usb_bus_List在#include< linux / usb / hcd.h>中声明.
#include <linux/module.h>#include <linux/kernel.h>#include <linux/usb.h>#include <linux/usb/hcd.h>#include <linux/List.h>MODulE_liCENSE("GPL");int ourinitmodule(voID){int chix = 0;struct usb_device *dev,*childdev = NulL;struct usb_bus *bus = NulL;List_for_each_entry(bus,bus_List){ printk("\n USB Bus : %d",bus->busnum); dev = bus->root_hub; printk("\n vendor ID:%x,Product ID:%x\n",dev->descriptor.IDvendor,dev->descriptor.IDProduct);#if 0 //usb_hub_for_each_child macro not supported in 3.2.0,so trying with 3.7.6. usb_hub_for_each_child(dev,chix,childdev) { if(childdev) { printk("\n vendor ID:%x,childdev->descriptor.IDvendor,childdev->descriptor.IDProduct); } }#endif} printk(KERN_ALERT "\n Hello Jay,Welcome to sample application.... \n");return 0;}voID ourcleanupmodule(voID){printk(KERN_ALERT "\n Hello Jay,Thanks....Exiting Application. \n");return;}module_init(ourinitmodule);module_exit(ourcleanupmodule);
输出是
USB Bus :4vendor ID:1d6B,Product ID:3USB Bus :3vendor ID:1d6B,Product ID:2USB Bus :2vendor ID:1d6B,Product ID:2USB Bus :1vendor ID:1d6B,Product ID:2总结
以上是内存溢出为你收集整理的以编程方式获取Linux平台上USB设备的供应商ID,产品ID全部内容,希望文章能够帮你解决以编程方式获取Linux平台上USB设备的供应商ID,产品ID所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)