Win10 x64使用BOT规范UFI命令虚拟U盘(USB3.0)演示
2022-04-28
2454
1
为了学习U盘的UFI命令,使用Windows驱动虚拟了一个USB设备,该USB设备实现UFI命令支持的U盘。
虚拟U盘原理
大概框架如下:
我们通过一个WDM驱动实现一个虚拟的总线驱动,创建一个U盘的PDO,让系统自带的usbstor.sys创建FDO并附加在我们的PDO上。而关于U盘的读写USBSTOR.SYS会通过URB使用批量传输的输入和输出端点进行数据传输,其遵循BOT规范,使用的命令是UFI命令。
而虚拟的这个U盘真实的数据读写,我们这里重定向一个真实的IMG文件中,进行数据的持久化。
这样当然们的驱动在加载后,会自带加载这个IMG文件,在磁盘中显示我们的虚拟磁盘。
虚拟参数及演示效果
这里我们虚拟了一个8M大小的U盘,参数为4096字节一个LBA,总共2046个LBA,采用的是USB3.0的端点,输入输出的端点描述符都为0x400个字节。
编译后的驱动及相关文件如下:
2022/04/29 14:57 8,384,512 8MDISK.IMG
2019/03/18 19:14 81,920 devcon.exe
2022/04/25 15:04 68 install.bat
2022/04/28 15:13 784 UsbzhVDisk.cer
2022/04/28 15:12 1,539 UsbzhVDisk.inf
2022/04/28 15:13 569,344 UsbzhVDisk.pdb
2022/04/28 15:13 48,944 UsbzhVDisk.sys
7 个文件 9,087,111 字节
使用install.bat批处理安装驱动,安装后在系统中显示如下:
我们在资源理理器中打开U盘,可以正常读写和格式化:
卸载驱动后,重新加载驱动,打开盘,数据并没有丢失。
虚拟U盘工程
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936