我感觉第一种和第二种原因不大,因为我也用买的U盘测试了,即使拷贝的文件是一个整体,命令封装包CBW包中的CBW.dDataLength和Write(10)中的传输长度中的长度大小也不会超过0x10000,所以第一种原因不对。第二种,我是写入到U盘中,和应用程序关系不大。 对于第三中原因,mass storage的内核驱动是指我自己写的主控芯片内的固件程序吗,这是我自己控制的啊,我想知道的问题是命令封装包CBW包中的CBW.dDataLength和Write(10)中的传输长度中的长度大小如何能超过0x10000? 而且我看了你说的比如1个文件占用了lba第1,2,3,4,6,7,8扇区(第5扇区被其它占用),这种情况会发生吗?因为我是这样想的,既然命令封装包CBW包中的CBW.dDataLength和Write(10)中的传输长度中的长度大小一般是0x10000,并不是每次依次递减一个扇区,故我怀疑难道USB协议最小写的大小是0x10000,即每次至少连续写入0x10000大小,才可以换地址再写。@john_lee ,你可以用个U盘测试试试,看看这样分析对不??
|