我是试深入了解如何在 USB 插入时拦截,以便您可以完全定制插入和使用它的体验。在没有发生任何其他事情的情况下。也就是说,USB 设备无需调用某些驱动程序的某些功能或类似的功能。我想手动调用此过程,并以其他方式阻止它。
我读过这篇文章,这非常有帮助:
其中写道:
usb_driver
USB 驱动程序由包含一些函数回调和标识 USB 驱动程序的变量的结构体表示。当通过程序加载模块时insmod
,__init usb_ml_init(void)
将执行向 USB 子系统注册驱动程序的函数。当模块被卸载时,__exit usb_ml_exit(void)
调用从 USB 子系统取消注册驱动程序。和__init
标记__exit
表示这些函数仅在初始化和退出时调用。加载模块后,将设置探测和断开连接函数回调。在插入设备时调用的探测函数回调中,驱动程序初始化用于管理 USB 设备的所有本地数据结构。例如,它为 struct usb_ml 分配内存,其中包含有关所连接设备的运行时状态信息。
听起来好像是 Linux 内核自动调用probe
所有连接的 USB 设备。我基本上想知道如何防止probe
调用所有其他潜在驱动程序的功能,以便唯一被调用的是我的驱动程序。然后,我的驱动程序可以从那里手动选择其他驱动程序之一,并安装它和所有内容。
在linux源代码中哪里可以找到如何处理防止在除我自己的驱动程序之外的所有驱动程序上调用探测器的问题,或者如何以其他方式实现此目的?