⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scsidef.h

📁 采用Atmeag162单片机来制作的U盘程序源码
💻 H
字号:
#ifndef __RBC_COMMAND__
#define __RBC_COMMAND__

#define RBC_CMD_FORMT                     0x04
#define RBC_CMD_READ10                    0x28
#define RBC_CMD_READCAPACITY              0x25
#define RBC_CMD_STARTSTOPUNIT             0x1B
#define RBC_CMD_SYNCACHE                  0x35
#define RBC_CMD_VERIFY10                  0x2F
#define RBC_CMD_WRITE10                   0x2A

#define SPC_CMD_INQUIRY                   0x12
#define SPC_CMD_MODESELECT6               0x15
#define SPC_CMD_MODESENSE6                0x1A
#define SPC_CMD_PERSISTANTRESERVIN        0x5E
#define SPC_CMD_PERSISTANTRESERVOUT       0x5F
#define SPC_CMD_PRVENTALLOWMEDIUMREMOVAL  0x1E
#define SPC_CMD_RELEASE6                  0x17
#define SPC_CMD_REQUESTSENSE              0x03
#define SPC_CMD_RESERVE6                  0x16
#define SPC_CMD_TESTUNITREADY             0x00
#define SPC_CMD_WRITEBUFFER               0x3B
#define SPC_CMD_FORMAT_CAPACITY           0x23

/////////////////RBC///////////////////////
typedef struct _INQUIRY_SPC{
    unsigned      OperationCode;
	unsigned      EVPD                   :1;
	unsigned      CMDDT                  :1;
	unsigned      Reserved0              :6;
	unsigned char PageCode;
	unsigned char Reserved1;
	unsigned char AllocationLength;
	unsigned char Control; 
}INQUIRY_SPC,*pINQUIRY_SPC;

typedef struct _STD_INQUIRY_DATA{
   unsigned       DeviceType             :5;
   unsigned       Reserved0              :3;
   unsigned       Reserved1              :7;
   unsigned       RemovableMedia         :1;
   unsigned char  Reserved2;
   unsigned       Reserved3              :5;
   unsigned       NormACA                :1;
   unsigned       Obsolete0              :1;
   unsigned       AERC                   :1;
   unsigned char  Reserved4[3];
   unsigned       SoftReset              :1;
   unsigned       CommandQueue           :1;
   unsigned       Reserved5              :1;
   unsigned       LinkedCommands         :1;
   unsigned       Synchronous            :1;
   unsigned       Wide16Bit              :1;
   unsigned       Wide32Bit              :1;
   unsigned       RelativeAddressing     :1;
   unsigned char  VendorId[8];
   unsigned char  ProductId[16];
   unsigned char  productRevisionLevel[4];
}STD_INQUIRY_DATA,*pSTD_INQUIRY_DATA;

typedef struct _MODE_SENSE_SPC{
   unsigned char  OperationCode;
   unsigned       Reserved0                :3;
   unsigned       DisableBlockDescriptor   :1;
   unsigned       Reserved1                :4;
   unsigned       PageCode                 :6;
   unsigned       PageControl              :2;
   unsigned char  Reserved2;
   unsigned char  ParameterLength;
   unsigned char  Control; 
}MODE_SENSE_SPC,*pMODE_SENSE_SPC;

typedef struct _MODE_DATA{
   unsigned char  OperationCode;
   unsigned char  Reserved0;
   unsigned       Reserved1               :7;
   unsigned       WP                      :1;   
   unsigned char  Reserved2;   
}MODE_DATA,*pMODE_DATA;

typedef struct _READ10_RBC{
    unsigned char OperationCode;
	unsigned char Reserved0;
	unsigned char LogicalBlockAddress[4];
	unsigned char Reserved1;
	unsigned char TransferLength[2];
	unsigned char Control;
}READ10_RBC,*pREAD10_RBC;

typedef struct _READ_CAPACITY_DATA{
    unsigned char LogicalBlockAddress[4];
	unsigned char LogicalLength[4];
}READ_CAPACITY_DATA,*pREAD_CAPACITY_DATA;

typedef struct _READ_CAPACITY_RBC{
    unsigned char OperationCode;
	unsigned char Reserved0[8];
	unsigned char Control;
}READ_CAPACITY_RBC,*pREAD_CAPACITY_RBC;

typedef struct _CAPACITYLIST_HEAD{
    unsigned char Reserved0[3];
	unsigned char CapacityLength;
}CAPACITYLIST_HEAD,*pCAPACITYLIST_HEAD;

typedef struct _CM_FORMAT_CAPACITY_DATA{
    unsigned char LogicalBlockAddress[4];
	unsigned      DescriptorCode                  :2;
	unsigned      Reserved0                       :6;
	unsigned char LogicalLength[3];
}CM_FORMAT_CAPACITY_DATA,*pCM_FORMAT_CAPACITY_DATA;

typedef struct _READ_FORMAT_CAPACITY_RBC{
    unsigned char OperationCode;
	unsigned char Reserved0[5];
	unsigned char AllocationLength[2];
	unsigned char Reserved1[3];
}READ_FORMAT_CAPACITY_RBC,*pREAD_FORMAT_CAPACITY_RBC;

typedef struct _TEST_UNIT_SPC{
  unsigned char  OperationCode;
  unsigned char  Reserved0[4];
  unsigned       Control;
}TEST_UNIT_SPC,*pTEST_UNIT_SPC;

typedef struct _VERIFY_RBC{
    unsigned      OperationCode;
	unsigned char Reserved0;
	unsigned char LogicalBlockAddress[4];
	unsigned char Reserved1;
	unsigned char  TransferLength[2];
	unsigned char Control;
}VERIFY_RBC,*pVERIFY_RBC;

typedef struct _WRITE10_RBC{
    unsigned char OperationCode;
	unsigned      Reserved0              :3; 
	unsigned      FUA                    :1;
	unsigned      Reserved1              :4;
	unsigned char LogicalBlockAddress[4];
	unsigned char Reserved2;
	unsigned char TransferLength[2];
	unsigned char Control;
}WRITE10_RBC,*pWRITE10_RBC;

typedef struct _MEDIA_REMOVAL_SPC{
   unsigned char  OperationCode;
   unsigned char  Reserved0[3];
   unsigned       Prevent                    :2;
   unsigned       Reserved1                  :6;
   unsigned       Control;
}MEDIA_REMOVAL_SPC,*pMEDIA_REMOVAL_SPC;


typedef struct _GENERIC_RBC{
 unsigned char OperationCode;
 unsigned char Reserved0[15];  
}GENERIC_RBC,*pGENERIC_RBC;

typedef union _CDB_RBC{

  GENERIC_RBC   RbcCdb_Generic;
  
  INQUIRY_SPC              SpcCdb_Inquiry;
  MODE_SENSE_SPC           SpcCdb_ModeSense;
  READ10_RBC               RbcCdb_Read10;
  READ_CAPACITY_RBC        RbcCdb_ReadCapacity; 
  READ_FORMAT_CAPACITY_RBC RbcCdb_ReadFormatCapacity;
  TEST_UNIT_SPC            SpcCdb_TestUnit;
  VERIFY_RBC               RbcCdb_Verify;
  WRITE10_RBC              RbcCdb_Write10;
  MEDIA_REMOVAL_SPC        SpcCdb_Removeal;
}CDB_RBC,*pCDB_RBC;       

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -