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

📄 rbccmd.h

📁 D12 USB源代码 硬盘
💻 H
📖 第 1 页 / 共 2 页
字号:
        struct
        {
            INT8 MediumState    : 2;
            INT8 Reserved3      : 2;
            INT8 PowerConditions: 4;
        } bits1;
    } Flags;
    INT8 Control;
} START_STOP_RBC, *PSTART_STOP_RBC;

/*
// Synchronize Cache
*/
typedef struct _SYNCHRONIZE_CACHE_RBC {

	INT8 OperationCode;    /* 0x35 */
	INT8 Reserved[8];
	INT8 Control;

} SYNCHRONIZE_CACHE_RBC, *PSYNCHRONIZE_CACHE_RBC;

/*
// Write Command
*/
typedef struct _WRITE_RBC {
    INT8 OperationCode;	/* 2AH      */
    INT8 Reserved0 : 3;
	INT8 FUA : 1;
	INT8 Reserved1 : 4;
    union{
        struct
        {
	        INT8 LBA_3;
	        INT8 LBA_2;
	        INT8 LBA_1;
	        INT8 LBA_0;
        } LBA_W8 ;

       INT32 LBA_W32;
    }   LBA;
	INT8 Reserved2;
    INT8 XferLength_1;
	INT8 XferLength_0;
    INT8 Control;
} WRITE_RBC, *PWRITE_RBC;

/*
// VERIFY Command
*/
typedef struct _VERIFY_RBC {
    INT8 OperationCode;	/* 2FH */
    INT8 Reserved0;
	INT8 LBA_3;			/* Big Endian */
	INT8 LBA_2;
	INT8 LBA_1;
	INT8 LBA_0;
	INT8 Reserved1;
    INT8 VerifyLength_1;		/* Big Endian */
	INT8 VerifyLength_0;
	INT8 Control;
} VERIFY_RBC, *PVERIFY_RBC;


/*
//***********************************************************************************
// SPC-2 of SCSI-3 commands
//***********************************************************************************
*/

/*
// INQUIRY Command
*/
typedef struct _INQUIRY_SPC {
	INT8 OperationCode;	/* 12H */
	INT8 EnableVPD:1 ;
    INT8 CmdSupportData:1 ;
	INT8 Reserved0:6 ;
	INT8 PageCode;
	INT8 Reserved1;
	INT8 AllocationLen;
    INT8 Control;
} INQUIRY_SPC, *PINQUIRY_SPC;


typedef struct _STD_INQUIRYDATA {
    INT8 DeviceType : 5;
    INT8 Reserved0 : 3;

    INT8 Reserved1 : 7;
    INT8 RemovableMedia : 1;

    INT8 Reserved2;

    INT8 Reserved3 : 5;
    INT8 NormACA : 1;
    INT8 Obsolete0 : 1;
    INT8 AERC : 1;

    INT8 Reserved4[3];

    INT8 SoftReset : 1;
    INT8 CommandQueue : 1;
	INT8 Reserved5 : 1;
	INT8 LinkedCommands : 1;
	INT8 Synchronous : 1;
	INT8 Wide16Bit : 1;
	INT8 Wide32Bit : 1;
	INT8 RelativeAddressing : 1;

	INT8 VendorId[8];

	INT8 ProductId[16];

	INT8 ProductRevisionLevel[4];

/*
//  Above is 36 bytes
//  can be tranmitted by Bulk
*/

    INT8 VendorSpecific[20];
    INT8 InfoUnitSupport : 1;
    INT8 QuickArbitSupport : 1;
    INT8 Clocking : 2;
    INT8 Reserved6 : 4;

    INT8  Reserved7 ;
    INT16 VersionDescriptor[8] ;

    INT8 Reserved8[22];
    
} STD_INQUIRYDATA, *PSTD_INQUIRYDATA;

typedef struct _SERIALNUMBER_PAGE {
    INT8 DeviceType : 5;
    INT8 DeviceTypeQualifier : 3;

    INT8 PageCode ;
    INT8 Reserved0 ;

    INT8 PageLength ;
    INT8 SerialNumber[24] ;

}VPD_SERIAL_PAGE,* PVPD_SERIAL_PAGE;

#define ASCII_ID_STRING 32
typedef struct _ID_DESCRIPTOR {
	INT8   CodeSet : 4;
	INT8   Reserved0 : 4;

	INT8   IDType : 4;
    INT8   Association : 2;
    INT8   Reserved1 : 2;

    INT8   Reserved2;

	INT8   IDLength ;
	INT8   AsciiID[ASCII_ID_STRING];
} ASCII_ID_DESCRIPTOR,* PASCII_ID_DESCRIPTOR;

typedef struct _DEVICE_ID_PAGE
{
    INT8 DeviceType : 5;
    INT8 DeviceTypeQualifier : 3;

    INT8 PageCode ;
    INT8 Reserved0 ;

    INT8 PageLength ;

    ASCII_ID_DESCRIPTOR   AsciiIdDescriptor[1];
} VPD_DEVICE_ID_PAGE, * PVPD_DEVICE_ID_PAGE;



/*
// Mode Select
*/
typedef struct _MODE_SELECT_SPC {
	INT8 OperationCode;	/* 15H */
	INT8 SavePage : 1 ;
	INT8 Reseved0 : 3 ;
	INT8 PageFormat : 1 ;
	INT8 Reserved1 : 3 ;
	INT8 Reserved2[2];
	INT8 ParameterLen;
	INT8 Control;
} MODE_SELECT_SPC, * PMODE_SELECT_SPC;

/*
// Mode Sense
*/
typedef struct _MODE_SENSE_SPC {
    INT8 OperationCode;	/* 1AH */
    INT8 Reseved0 : 3 ;
    INT8 DisableBlockDescriptor : 1 ;
    INT8 Reserved0 : 4 ;
    INT8 PageCode:6 ;
    INT8 PageControl : 2 ;
    INT8 Reserved1;
    INT8 ParameterLen;
    INT8 Control;
} MODE_SENSE_SPC, * PMODE_SENSE_SPC;

typedef struct _MODE_PARAMETER_HEAD {
    INT8 DataLen;
    INT8 MediumType;
    INT8 DeviceParameter;
    INT8 BlockDescriptorLen;
} MODE_PARAMETER_HEAD, * PMODE_PARAMETER_HEAD;

/*
// Define Device Capabilities page.
*/
typedef struct _MODE_RBC_DEVICE_PARAMETERS_PAGE {
    INT8 PageCode : 6;
	INT8 Reserved : 1;
    INT8 PageSavable : 1;
    INT8 PageLength;
    INT8 WriteCacheDisable : 1;
    INT8 Reserved1 : 7;
    INT8 LogicalBlockSize[2];
    INT8 NumberOfLogicalBlocks[5];
    INT8 PowerPerformance;
    INT8 Lockable : 1;
    INT8 Formattable : 1;
    INT8 Writable : 1;
    INT8 Readable : 1;
    INT8 Reserved2 : 4;
    INT8 Reserved3;
}MODE_RBC_DEVICE_PARAMETERS_PAGE, *PMODE_RBC_DEVICE_PARAMETERS_PAGE;

/*
// prevent/allow medium removal
*/
typedef struct _MEDIA_REMOVAL_SPC {
	INT8 OperationCode;    /* 1EH */
	INT8 Reserved0[3];
	INT8 Prevent:2 ;
	INT8 Reserved1:6 ;
	INT8 Control;
} MEDIA_REMOVAL_SPC, *PMEDIA_REMOVAL_SPC;

/*
// Request Sense
*/
typedef struct _REQUEST_SENSE_SPC {
    INT8 OperationCode;    /* 03H */
	INT8 Reserved[3];
    INT8 AllocationLen;
    INT8 Control;
} REQUEST_SENSE_SPC, *PREQUEST_SENSE_SPC;

typedef struct _REQUEST_SENSE_DATA {
    INT8 ResponseCode : 7;
    INT8 Valid : 1;

    INT8 SegmentNum;

    INT8 SenseKey : 4;
    INT8 Reserved0 : 1;
    INT8 WrongLenIndicator : 1;
    INT8 EndofMedium : 1;
    INT8 FileMark : 1;

    INT8 Info_0;
    INT8 Info_1;
    INT8 Info_2;
    INT8 Info_3;

    INT8 AdditionalSenseLen;

    INT8 CommandSpecInfo_0;
    INT8 CommandSpecInfo_1;
    INT8 CommandSpecInfo_2;
    INT8 CommandSpecInfo_3;

    INT8 ASC;
    INT8 ASCQ;
    INT8 FieldReplacableUnitCode;
    INT8 SenseKeySpec_0 : 7;
    INT8 SenseKeySpecValid : 1;
    INT8 SenseKeySpec_1;
    INT8 SenseKeySpec_2;

} REQUEST_SENSE_DATA, *PREQUEST_SENSE_DATA;

/*
// Test Unit Ready
*/
typedef struct _TEST_UNIT_SPC {
	INT8 OperationCode;    /* 00H */
	INT8 Reserved[4];
	INT8 Control;
} TEST_UNIT_SPC, *PTEST_UNIT_SPC;

/*
// Write Buffer
*/
typedef struct _WRITE_BUFFER_SPC {
    INT8 OperationCode;    /* 3BH */
    INT8 Mode:4 ;
    INT8 Reserved0:4 ;
	INT8 BufferID;
    INT8 BufferOff_2;
    INT8 BufferOff_1;
    INT8 BufferOff_0;
    INT8 ParameterLen_2;
    INT8 ParameterLen_1;
	INT8 ParameterLen_0;
    INT8 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;

} CDB_RBC, *PCDB_RBC;


#endif

⌨️ 快捷键说明

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