1、根据Universal Serial BusMass Storage ClassBulk-Only Transport数据手册中可以得知usb大容量存储设备的传输过程如下如所示:
CBW(Command Block Wrapper)命令块包的格式如下:
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
struct CBW
{
DWORD dCBWSignature;
//CBW的标识,固定值:43425355h (小端模式)。
DWORD dCBWTag;
//主机发送的一个命令块标识,设备需要原样作为dCSWTag(CSW中的一部分)再发送给Host;主要用于关联CSW到对应的CBW。
DWORD dCBWDataTransferLength;
//CBW命令要求在命令与回应之间传输的字节数。如果为0,则不传输数据。
BYTE bmCBWFlags;
//反映数据传输的方向,0x00 表示来自Host,0x80 表示发至Host。
BYTE bCBWLUN;
//对于有多个LUN逻辑单元的设备,用来选择具体目标。如果没有多个LUN,则写0。
BYTE bCBWCBLength;
// 命令的长度,范围在0~16。
BYTE CBWCB[16];
//传输的具体命令
};
C