struct usb_device_id {
/* which fields to match against? */
__u16 match_flags; //说明使用哪种匹配方式
/* Used for product specific matches; range is inclusive */
__u16 idVendor; //供应商ID
__u16 idProduct;
//产品ID
__u16 bcdDevice_lo;
__u16 bcdDevice_hi;
/* Used for device class matches */
__u8 bDeviceClass; //设备类型
__u8 bDeviceSubClass;
//设备子类型
__u8 bDeviceProtocol;
//协议
/* Used for interface class matches */
__u8 bInterfaceClass; //接口类
__u8 bInterfaceSubClass;
//接口子类
__u8 bInterfaceProtocol;
//接口协议
/* not matched against */
kernel_ulong_t driver_info;
};
有几个宏可用来初始化这个结构:
USB_DEVICE(vendor, product)
创建一个 struct usb_device_id, 可用来只匹配特定供应商和产品 ID 值. 这是非常普遍用的, 对于需要特定驱动的 USB 设备.
USB_DEVICE_VER(vendor, product, lo, hi)
创建一个 struct usb_device_id, 用来在一个版本范围中只匹配特定供应商和产品 ID 值.
USB_DEVICE_INFO(class, subclass, protocol)
创建一个 struct usb_device_id, 可用来只匹配一个特定类的 USB 设备.
USB_INTERFACE_INFO(class, subclass, protocol)
创建一个 struct usb_device_id, 可用来只匹配一个特定类的 USB 接口.
struct usb_device_id 结构提供了这个驱动支持的一个不同类型 USB 设备的列表. 这个列表被USB 核心用来决定给设备哪个驱动, 并且通过热插拔脚本来决定哪个驱动自动加载, 当特定设备被插入系统时.
http://blog.csdn.net/u011310383/article/details/56553278
http://www.deansys.com/doc/ldd3/ch13s04.html
转载于:https://www.cnblogs.com/Dream-Chaser/p/7463119.html
相关资源:数据结构—成绩单生成器