如何在Linux内核中截取发送到USB闪存驱动器的数据?

如何在Linux内核中截取发送到USB闪存驱动器的数据?,linux,linux-kernel,usb,storage,driver,Linux,Linux Kernel,Usb,Storage,Driver,在Linux内核源代码中,我可以在哪里找到处理向USB闪存驱动器发送数据的函数?所谓“数据”,我指的是实际的文件内容。例如,当我将“Report.docx”拖放到USB thumb驱动器时,我需要能够截获此数据,以便在将文件写入USB thumb驱动器之前修改其内容 我知道USB存储模块(drivers/USB/storage)是处理USB大容量存储设备(如thumb Drive)的地方,但我没有找到合适的位置查看。我四处查看了transfer.c,但我的调试尝试只显示了无论我是否正在传输任何文

在Linux内核源代码中,我可以在哪里找到处理向USB闪存驱动器发送数据的函数?所谓“数据”,我指的是实际的文件内容。例如,当我将“Report.docx”拖放到USB thumb驱动器时,我需要能够截获此数据,以便在将文件写入USB thumb驱动器之前修改其内容

我知道USB存储模块(
drivers/USB/storage
)是处理USB大容量存储设备(如thumb Drive)的地方,但我没有找到合适的位置查看。我四处查看了
transfer.c
,但我的调试尝试只显示了无论我是否正在传输任何文件,函数都会被调用。而且,从我的理解来看,所有的事情都与城市有关,我不清楚如何处理这些问题。我找对地方了吗


为了我的项目,我需要修改驱动程序(不使用任何第三方库或用户空间代码)。我使用的是Linux 3.12.0。

不是usb子系统方面的专家,但我会先看看
drivers/usb/storage/transport.c::usb\u stor\u bulk\u transfer\u buf()

Linux磁盘访问使用了很多层。文件系统对USB闪存驱动器一无所知。USB存储驱动程序对文件一无所知。最好的选择是创建一个覆盖文件系统,让用户将文件拖到其中。这可以通过更改USB驱动器的安装位置,然后将覆盖层安装到用户希望使用的位置来实现。例如,您可能会从长期存在的注释中注意到,这不太可能是实现上述“修改文件内容”目标的非常有效的方法