📄 ufi.h
字号:
#ifndef _UFI_H
#define _UFI_H
#include "DataType.h"
#define CBW_SIGNATURE 0x43425355
#define CSW_SIGNATURE 0x53425355
//******************************************************************************
//The macroinstruction of USB Mass Storage Class -UFI Command Specification
//*****************************************************************************
#define UFI_CMD_FORMAT 0x04
#define UFI_CMD_INQUIRY 0x12
#define UFI_CMD_MODESELECT 0x15
#define UFI_CMD_MODESENSE6 0x1A
#define UFI_CMD_LOCKORNOT 0x1E
#define UFI_CMD_READ 0x28
#define UFI_CMD_READCAPACITY 0x25
#define UFI_CMD_REQUESTSENSE 0x03
#define UFI_CMD_STARTSTOPUNIT 0x1B
#define UFI_CMD_TESTUNITREADY 0x00
#define UFI_CMD_VERIFY 0x2F
#define UFI_CMD_WRITE 0x2A
/////////////////////////////////////////////////////////////////////
typedef struct _GENERIC_CDB {
U8 OperationCode;
U8 Reserved[15];
} GENERIC,*PGENERIC;
typedef struct _READ {
BYTE Reserved1;
BYTE L3;
BYTE L2;
BYTE L1;
BYTE L0;
BYTE Reserved2;
WORD ReadLength;
BYTE Reserved3;
} READ, * PREAD;
//////////////////////////////////////////////////////
typedef struct _WRITE {
BYTE Reserved1;
BYTE L3;
BYTE L2;
BYTE L1;
BYTE L0;
BYTE Reserved2;
U16 WriteLength;
BYTE Reserved3;
} WRITE, *PWRITE;
///////////////////////////////////////////
typedef struct _READ_CAPACITY {
BYTE Resverd2[8];
BYTE Rseverd1;
} READ_CAPACITY, *PREAD_CAPACITY;
//////////////////////////////////////////////////////
typedef struct _INQUIRY {
BYTE Reserved0 ;
BYTE PageCode;
BYTE Reserved1;
BYTE AllocationLen;
BYTE Resverd2;
} INQUIRY, *PINQUIRY;
/////////////////////////////////////////////////////
typedef struct _REQUEST_SENSE {
BYTE Reserved1[3];
BYTE AllocationLen;
BYTE Reserved2;
} REQUEST_SENSE, *PREQUEST_SENSE;
///////////////////////////////////////////////////
typedef struct _TEST_UNIT {
BYTE Reserved[4];
BYTE Reserved1;
} TEST_UNIT, *PTEST_UNIT;
///////////////////////////////////////////////////////
typedef union _CBWCB{
GENERIC ufi_GenRic;
READ Ufi_Read;
READ_CAPACITY Ufi_ReadCapacity;
WRITE Ufi_Write;
INQUIRY Ufi_Inquiry;
REQUEST_SENSE Ufi_RequestSense;
TEST_UNIT Ufi_TestUnit;
} CBWCB, *PCBWCB;
//**********************************************************************************
//Defined the USB bulk transcation.
//the structure of CBW( command Block Wrapper)and CSW(Command Status Wrapper)
//all the USB's packet are transferd by CBW,and the status are returned by
//CSW.
//**********************************************************************************
typedef struct _COMMAND_BLOCK_WRAPPER{
U32 dCBW_Signature;
U32 dCBW_Tag;
U32 dCBW_DataXferLen;
BYTE bCBW_Flag;
BYTE bCBW_LUN;
BYTE bCBW_CDBLen;
BYTE OperationCode;
CBWCB CBWCommand;
} CBW, *PCBW;
////////////////////////////////////////////////
typedef struct _COMMAND_STATUS_WRAPPER{
U32 dCSW_Signature;
U32 dCSW_Tag;
U32 dCSW_DataResidue;
BYTE bCSW_Status;
} CSW, *PCSW;
//////////////////////////////////////////////
typedef union _Block{
CBW CbwBlock;
CSW CswBlock;
} BLOCK, * PBLOCK;
//**********************************************************************************
//Functions
//
//**********************************************************************************
BYTE BulkOut(BYTE *pbBuffer,U16 len);
BYTE BulkIn(BYTE *pbBuffer,U16 len);
BYTE Inquiry(void);
BYTE TestUnit(void);
BYTE RequestSense(void);
BYTE ReadCapacity(void);
BYTE Read(DWORD dlba,BYTE blen,BYTE *pbBuffer);
BYTE Write(DWORD dlba,BYTE blen,BYTE *pbBuffer);
BYTE PollDisk(void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -