?? rbccmd.h
字號:
BYTE Control;
} INQUIRY_SPC, *PINQUIRY_SPC;
typedef struct _STD_INQUIRYDATA {
BYTE DeviceType;// : 5;
BYTE Reserved0 ;//: 3;
BYTE Reserved1 ;//: 7;
BYTE RemovableMedia;// : 1;
BYTE Reserved2;
BYTE Reserved3 ;//: 5;
BYTE NormACA ;//: 1;
BYTE Obsolete0 ;//: 1;
BYTE AERC ;//: 1;
BYTE Reserved4[3];
BYTE SoftReset ;//: 1;
BYTE CommandQueue ;// 1;
BYTE Reserved5 ;// 1;
BYTE LinkedCommands ;// 1;
BYTE Synchronous ;// 1;
BYTE Wide16Bit ;// 1;
BYTE Wide32Bit ;// 1;
BYTE RelativeAddressing ;// 1;
BYTE VendorId[8];
BYTE ProductId[16];
BYTE ProductRevisionLevel[4];
/*
// Above is 36 bytes
// can be tranmitted by Bulk
*/
BYTE VendorSpecific[20];
BYTE InfoUnitSupport ;// 1;
BYTE QuickArbitSupport ;// 1;
BYTE Clocking ;// 2;
BYTE Reserved6 ;// 4;
BYTE Reserved7 ;
INT16 VersionDescriptor[8] ;
BYTE Reserved8[22];
} STD_INQUIRYDATA, *PSTD_INQUIRYDATA;
typedef struct _SERIALNUMBER_PAGE {
BYTE DeviceType ;// 5;
BYTE DeviceTypeQualifier ;// 3;
BYTE PageCode ;
BYTE Reserved0 ;
BYTE PageLength ;
BYTE SerialNumber[24] ;
}VPD_SERIAL_PAGE,* PVPD_SERIAL_PAGE;
#define ASCII_ID_STRING 32
typedef struct _ID_DESCRIPTOR {
BYTE CodeSet ;// 4;
BYTE Reserved0 ;// 4;
BYTE IDType ;// 4;
BYTE Association ;// 2;
BYTE Reserved1 ;// 2;
BYTE Reserved2;
BYTE IDLength ;
BYTE AsciiID[ASCII_ID_STRING];
} ASCII_ID_DESCRIPTOR,* PASCII_ID_DESCRIPTOR;
typedef struct _DEVICE_ID_PAGE
{
BYTE DeviceType ;// 5;
BYTE DeviceTypeQualifier ;// 3;
BYTE PageCode ;
BYTE Reserved0 ;
BYTE PageLength ;
ASCII_ID_DESCRIPTOR AsciiIdDescriptor[1];
} VPD_DEVICE_ID_PAGE, * PVPD_DEVICE_ID_PAGE;
/*
// Mode Select
*/
typedef struct _MODE_SELECT_SPC {
BYTE OperationCode; /* 15H */
BYTE SavePage ;// 1 ;
BYTE Reseved0 ;// 3 ;
BYTE PageFormat ;// 1 ;
BYTE Reserved1 ;// 3 ;
BYTE Reserved2[2];
BYTE ParameterLen;
BYTE Control;
} MODE_SELECT_SPC, * PMODE_SELECT_SPC;
typedef struct _MBR_BLOCK {
BYTE Res[454];
INT32 StartSector;
INT32 TotalSector;
BYTE Res1[50];
} MBR_BLOCK,* PMBR_BLOCK;
typedef struct _BPB_BLOCK {
BYTE BS_jmpBoo[3];
BYTE BS_OEMName[8];
INT16 BPB_BytesPerSec;
BYTE BPB_SecPerClus;
BYTE BPB_RsvdSecCn[2];
BYTE BPB_NumFATs;
INT16 BPB_RootEntCnt;
INT16 BPB_TotSec16;
BYTE BPB_Media;
INT16 BPB_FATSz16;
INT16 BPB_SecPerTrk;
INT16 BPB_NumHeads;
unsigned long BPB_HiddSec;
unsigned long BPB_TotSec32;
BYTE BS_DrvNum;
BYTE BS_Reserved1;
BYTE BS_BootSig;
BYTE BS_VolID[4];
BYTE BS_VolLab[11];
BYTE BS_FilSysType[8];
BYTE ExecutableCode[448];
BYTE Marker[2];
} * PBPB_BLOCK;//,* PBPB_BLOCK;
typedef struct _SYS_INFO_BLOCK{
unsigned long StartSector;
unsigned long TotalSector;
//BYTE BS_jmpBoo[3];
//BYTE BS_OEMName[8];
INT16 BPB_BytesPerSec;
BYTE BPB_SecPerClus;
INT16 BPB_RsvdSecCn;//保留扇區數,從DBR到FAT
BYTE BPB_NumFATs;
INT16 BPB_RootEntCnt;
INT16 BPB_TotSec16;
BYTE BPB_Media;
INT16 BPB_FATSz16;
INT16 BPB_SecPerTrk;
INT16 BPB_NumHeads;
unsigned long BPB_HiddSec;
unsigned long BPB_TotSec32;
BYTE BS_DrvNum;
//BYTE BS_Reserved1;
BYTE BS_BootSig;
BYTE BS_VolID[4];
BYTE BS_VolLab[11];
BYTE BS_FilSysType[8];
//BYTE ExecutableCode[448];
//BYTE Marker[2];
///////////////////////////////
unsigned long FatStartSector;
unsigned long RootStartSector;
unsigned long DataStartSector;
unsigned long FirstDataSector;
//unsigned long FirstSectorofCluster;
} SYS_INFO_BLOCK,* PSYS_INFO_BLOCK;
typedef struct _FILE_INFO{
unsigned char bFileOpen;
unsigned int StartCluster;
unsigned long LengthInByte;
unsigned int ClusterPointer;
unsigned long SectorPointer;
unsigned int OffsetofSector;
unsigned char SectorofCluster;
unsigned long pointer;
unsigned int FatSectorPointer;
} FILE_INFO, * PFILE_INFO;
typedef struct _DIR_INFO{
unsigned char name[8];
unsigned char extension[3];
unsigned char attribute;
unsigned char Reserved[10];
unsigned int lastUpdateDate;
unsigned int lastUpdateTime;
unsigned int startCluster;
unsigned long length;
} DIR_INFO,* PDIR_INFO;
/*
// Mode Sense
*/
typedef struct _MODE_SENSE_SPC {
BYTE OperationCode; /* 1AH */
BYTE Reseved0 ;// 3 ;
BYTE DisableBlockDescriptor ;// 1 ;
BYTE Reserved0 ;// 4 ;
BYTE PageCode;//6 ;
BYTE PageControl ;// 2 ;
BYTE Reserved1;
BYTE ParameterLen;
BYTE Control;
} MODE_SENSE_SPC, * PMODE_SENSE_SPC;
typedef struct _MODE_PARAMETER_HEAD {
BYTE DataLen;
BYTE MediumType;
BYTE DeviceParameter;
BYTE BlockDescriptorLen;
} MODE_PARAMETER_HEAD, * PMODE_PARAMETER_HEAD;
/*
// Define Device Capabilities page.
*/
typedef struct _MODE_RBC_DEVICE_PARAMETERS_PAGE {
BYTE PageCode ;// 6;
BYTE Reserved ;// 1;
BYTE PageSavable ;// 1;
BYTE PageLength;
BYTE WriteCacheDisable ;// 1;
BYTE Reserved1 ;// 7;
BYTE LogicalBlockSize[2];
BYTE NumberOfLogicalBlocks[5];
BYTE PowerPerformance;
BYTE Lockable ;// 1;
BYTE Formattable ;// 1;
BYTE Writable ;// 1;
BYTE Readable ;// 1;
BYTE Reserved2 ;// 4;
BYTE Reserved3;
}MODE_RBC_DEVICE_PARAMETERS_PAGE, *PMODE_RBC_DEVICE_PARAMETERS_PAGE;
/*
// prevent/allow medium removal
*/
typedef struct _MEDIA_REMOVAL_SPC {
BYTE OperationCode; /* 1EH */
BYTE Reserved0[3];
BYTE Prevent;
//BYTE Reserved1:6 ;
//BYTE Control;
} MEDIA_REMOVAL_SPC, *PMEDIA_REMOVAL_SPC;
/*
// Request Sense
*/
typedef struct _REQUEST_SENSE_SPC {
BYTE OperationCode; /* 03H */
BYTE Reserved[3];
BYTE AllocationLen;
BYTE Control;
} REQUEST_SENSE_SPC, *PREQUEST_SENSE_SPC;
typedef struct _REQUEST_SENSE_DATA {
BYTE ResponseCode ;// 7;
BYTE Valid ;// 1;
BYTE SegmentNum;
BYTE SenseKey ;// 4;
BYTE Reserved0 ;// 1;
BYTE WrongLenIndicator ;// 1;
BYTE EndofMedium ;// 1;
BYTE FileMark ;// 1;
BYTE Info_0;
BYTE Info_1;
BYTE Info_2;
BYTE Info_3;
BYTE AdditionalSenseLen;
BYTE CommandSpecInfo_0;
BYTE CommandSpecInfo_1;
BYTE CommandSpecInfo_2;
BYTE CommandSpecInfo_3;
BYTE ASC;
BYTE ASCQ;
BYTE FieldReplacableUnitCode;
BYTE SenseKeySpec_0 ;// 7;
BYTE SenseKeySpecValid ;// 1;
BYTE SenseKeySpec_1;
BYTE SenseKeySpec_2;
} REQUEST_SENSE_DATA, *PREQUEST_SENSE_DATA;
/*
// Test Unit Ready
*/
typedef struct _TEST_UNIT_SPC {
BYTE OperationCode; /* 00H */
BYTE Reserved[4];
BYTE Control;
} TEST_UNIT_SPC, *PTEST_UNIT_SPC;
/*
// Write Buffer
*/
typedef struct _WRITE_BUFFER_SPC {
BYTE OperationCode; /* 3BH */
BYTE Mode;//4 ;
BYTE Reserved0;//4 ;
BYTE BufferID;
BYTE BufferOff_2;
BYTE BufferOff_1;
BYTE BufferOff_0;
BYTE ParameterLen_2;
BYTE ParameterLen_1;
BYTE ParameterLen_0;
BYTE Control;
} WRITE_BUFFER_SPC, *PWRITE_BUFFER_SPC;
typedef union _CDB_RBC {
GENERIC_CDB Cdb_Generic;
// RBC commands
GENERIC_RBC RbcCdb_Generic;
FORMAT_RBC RbcCdb_Format;
READ_RBC RbcCdb_Read;
READ_CAPACITY_RBC RbcCdb_ReadCapacity;
START_STOP_RBC RbcCdb_OnOffUnit;
SYNCHRONIZE_CACHE_RBC RbcCdb_SyncCache;
VERIFY_RBC RbcCdb_Verify;
WRITE_RBC RbcCdb_Write;
// SPC-2 commands
INQUIRY_SPC SpcCdb_Inquiry;
MODE_SELECT_SPC SpcCdb_ModeSelect;
MODE_SENSE_SPC SpcCdb_ModeSense;
MEDIA_REMOVAL_SPC SpcCdb_Remove;
REQUEST_SENSE_SPC SpcCdb_RequestSense;
TEST_UNIT_SPC SpcCdb_TestUnit;
WRITE_BUFFER_SPC SpcCdb_WriteBuffer;
// ATAPI Commands
READ_10 CmdRead10;
WRITE_10 CmdWrite10;
MODE_SELECT_10 CmdModeSel10;
MODE_SENSE_10 CmdModeSen10;
//////////////////////////////////////
READ_LONG_CMD SpcCdb_ReadLong;
} CDB_RBC, *PCDB_RBC;
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -