私は単純なデバイス ドライバーを作成しようとしてきました。このドライバーでは、ベンダー ID と製品 ID をプログラムで取得することが想定されています。必要なヘッダー ファイルのほとんどすべてを調べた結果、 USBデバイスのベンダー ID、製品 ID、および製造元の詳細に構造体を通じてアクセスできるという結論に達しました。struct usb_device{}
これには member がありstruct usb_device_descriptor{}
ます。このネストされた構造にはidVendor, idProduct
、iManufacturer
およびその他のメンバーがあります。
しかし、何らかの理由でこれらのメンバーにアクセスできないためdmesg
、モジュールを挿入した後に a を実行すると、ガベージ値が出力されます。ヘルプやヒント、または応答を受け取ることができてうれしいです。これまでに書いたコードは次のとおりです。
PS: 必要な組み込みが行われました。
必要なヘッダー ファイルのほとんどすべてを確認した結果、USB デバイスのベンダ ID、製品 ID、および製造元の詳細に構造体を通じてアクセスできることがわかりました。struct usb_device{}
これには member がありstruct 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");