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

📄 scsi.h

📁 台湾凌阳方案300万数码相机源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
        } BYTE2;

        struct
        {
				//richie switch order
                UCHAR   responseDataFormat:4;
                UCHAR   reserved:4;
        } BYTE3;

        UCHAR   additionalLength; //0x1f                              
        UCHAR   reserved0[3];
        UCHAR   vendorInformation[8];
        UCHAR   productIdentification[16];
        UCHAR   productRevisionLevel[4];
} SCSIDATA_INQUIRY, *PSCSIDATA_INQUIRY;

//MODE SENSE 06
//MODE SELECT 06
//Mode Parameter Header
//patch4.5@richie@wp xp begin
#define SCSIDATA_MODE06_PARAMETER_HEADER_SIZE             0x04
typedef struct _SCSIDATA_MODE06_PARAMETER_HEADER
{
        UCHAR	modeDataLength;
        UCHAR   mediumTypeCode;
        struct
        {
		//richie
                UCHAR   reserved1:4;
                UCHAR   DPOFUA:1;
                UCHAR   reserved0:2;
                UCHAR   WP:1;
        } BYTE3;
        UCHAR reserved;
} SCSIDATA_MODE06_PARAMETER_HEADER, *PSCSIDATA_MODE06_PARAMETER_HEADER;

//Mode Parameter Header
#define SCSIDATA_MODE10_PARAMETER_HEADER_SIZE             0x08
typedef struct _SCSIDATA_MODE10_PARAMETER_HEADER
{
        USHORT  modeDataLength;
        UCHAR   mediumTypeCode;
        struct
        {
		//richie
                UCHAR   reserved1:4;
                UCHAR   DPOFUA:1;
                UCHAR   reserved0:2;
                UCHAR   WP:1;
        } BYTE3;
        UCHAR reserved[4];
} SCSIDATA_MODE10_PARAMETER_HEADER, *PSCSIDATA_MODE10_PARAMETER_HEADER;
//patch4.5@richie@wp xp end

//Read-Write Error Recovery Page (0x01)
#define SCSIDATA_MODE_RW_ERR_RECOVERY_PAGE_SIZE         0x0c
typedef struct _SCSIDATA_MODE_RW_ERR_RECOVERY_PAGE
{
        struct
        {
				//richie switch order
                UCHAR   pageCode:6;
                UCHAR   reserved:1;
                UCHAR   PS:1;
        } BYTE0;

        UCHAR   pageLength;

        struct
        {
				//richie switch order
                UCHAR   DCR:1;
                UCHAR   reserved2:1;
                UCHAR   PER:1;
                UCHAR   reserved1:1;
                UCHAR   RC:1;
                UCHAR   reserved0:2;
                UCHAR   AWRE:1;
        } BYTE2;

        UCHAR   readRetryCount;
        UCHAR   reserved0;
        UCHAR   writeRetryCount;
        UCHAR   reserved1;
} SCSIDATA_MODE_RW_ERR_RECOVERY_PAGE, *PSCSIDATA_MODE_RW_ERR_RECOVERY_PAGE;

//Flexible Disk Page (0x05)
#define SCSIDATA_MODE_FLEXIBLE_DISK_PAGE_SIZE           0x20
typedef struct _SCSIDATA_MODE_FLEXIBLE_DISK_PAGE
{
        struct
        {
				//richie switch order
                UCHAR   pageCode:6;
                UCHAR   reserved:1;
                UCHAR   PS:1;
        } BYTE0;

        UCHAR   pageLength;
        USHORT  transferRate;
        UCHAR   numberOfHeads;
        UCHAR   sectorsPerTrack;
        USHORT  dataBytesPerSector;
        USHORT  numberOfCylinders;
        UCHAR   reserved0[9];
        UCHAR   motorOnDelay;
        UCHAR   motorOffDelay;
        UCHAR   reserved1[7];
        USHORT  mediumRotationRate;
        UCHAR   reserved2[2];
} SCSIDATA_MODE_FLEXIBLE_DISK_PAGE, *PSCSIDATA_MODE_FLEXIBLE_DISK_PAGE;

//Removable Block Access Capabilities Page (0x1b)
#define SCSIDATA_MODE_REM_BLK_ACC_CAP_PAGE_SIZE         0x0c
typedef struct _SCSIDATA_MODE_REM_BLK_ACC_CAP_PAGE
{
        struct
        {
				//richie switch order
                UCHAR   pageCode:6;
                UCHAR   reserved:1;
                UCHAR   PS:1;
        } BYTE0;

        UCHAR   pageLength;

        struct
        {
				//richie switch order
                UCHAR   reserved:6;
                UCHAR   SRFP:1;
                UCHAR   SFLP:1;
        } BYTE2;

        struct
        {
				//richie switch order
                UCHAR   TLUN:3;
                UCHAR   reserved:3;
                UCHAR   SML:1;
                UCHAR   NCD:1;
        } BYTE3;

        UCHAR   reserved[8];
} SCSIDATA_MODE_REM_BLK_ACC_CAP_PAGE, *PSCSIDATA_MODE_REM_BLK_ACC_CAP_PAGE;

//Timer and Protect Page (0x1c)
#define SCSIDATA_MODE_TIMER_AND_PROTECT_PAGE_SIZE       0x08
typedef struct _SCSIDATA_MODE_TIMER_AND_PROTECT_PAGE
{
        struct
        {
		//richie
                UCHAR   pageCode:6;
                UCHAR   reserved:1;
                UCHAR   PS:1;
        } BYTE0;

        UCHAR   pageLength;
        UCHAR   reserved0;

        struct
        {
		//richie
                UCHAR   inactivityTimeMultiplier:4;
                UCHAR   reserved:4;
        } BYTE3;

        struct
        {
		//richie
                UCHAR   SWPP:1;
                UCHAR   DISP:1;
                UCHAR   reserved:6;
        } BYTE4;

        UCHAR   reserved1[3];
} SCSIDATA_MODE_TIMER_AND_PROTECT_PAGE, *PSCSIDATA_MODE_TIMER_AND_PROTECT_PAGE;

//READ CAPACITY
#define SCSIDATA_READ_CAPACITY_SIZE                     0x08
typedef struct _SCSIDATA_READ_CAPACITY
{
        ULONG   lastLogicalBlockAddress;
        ULONG   blockLengthInBytes;
} SCSIDATA_READ_CAPACITY, *PSCSIDATA_READ_CAPACITY;

//------------------------------------------------------------------------------
//External Link
//------------------------------------------------------------------------------
extern  code    UCHAR   K_VendorInformation[];
extern  code    UCHAR   K_ProductIdentification[];
extern  code    UCHAR   K_ProductRevisionLevel[];

//------------------------------------------------------------------------------
//Function Prototype
//------------------------------------------------------------------------------
UCHAR SCSICMD_TestUnitReady(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_RezeroUnit(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_RequestSense(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_FormatUnit(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Inquiry(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_ModeSelect06(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_ModeSense06(PUCHAR pSCSI, PULONG pSize);
ULONG SCSICMD_ModePage01(PUCHAR pPage);
ULONG SCSICMD_ModePage1b(PUCHAR pPage);
ULONG SCSICMD_ModePage1c(PUCHAR pPage);
//patch4.5@richie@wp xp begin
ULONG SCSICMD_Mode06ParameterHeader(PUCHAR pPage, ULONG size);
ULONG SCSICMD_Mode10ParameterHeader(PUCHAR pPage, ULONG size);
//patch4.5@richie@wp xp end
UCHAR SCSICMD_StartStopUnit(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_SendDiagnostic(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_PreventAllowMediumRemoval(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_ReadCapacity(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Read10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Write10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Seek10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_WriteAndVerify10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Verify10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_ModeSelect10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_ModeSense10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Read12(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Write12(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSIDATA_FormatUnit(PUCHAR pSCSI);
UCHAR SCSIDATA_ModeSelect06(PUCHAR pSCSI);
UCHAR SCSIDATA_ModeSelect10(PUCHAR pSCSI);
UCHAR SCSICMD_Read12(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSIDATA_ReadFormatCapacities(PUCHAR pSCSI, PULONG pSize);

//richie@1129
//READ FORMAT CAPACITY

#define SCSIDATA_READ_FORMAT_CAPACITY_LIST_HEADER_SIZE          0x04
typedef struct _SCSIDATA_READ_CAPACITY_LIST_HEADER
{
        UCHAR   reserved0;
        UCHAR   reserved1;
        UCHAR   reserved2;
        UCHAR   capacityListLength;
} SCSIDATA_READ_CAPACITY_LIST_HEADER, *PSCSIDATA_READ_CAPACITY_LIST_HEADER;


#define SCSIDATA_READ_FORMAT_MAXIMUM_SIZE                        0x08
typedef struct _SCSIDATA_READ_FORMAT_MAXIMUM
{
        ULONG   numberOfBlocks;

        struct
        {
				//richie switch order
                UCHAR   descCode:2;
                UCHAR   reserved:6;
        } BYTE4;
        
		UCHAR   blockLength[3];
} SCSIDATA_READ_FORMAT_MAXIMUM, *PSCSIDATA_READ_FORMAT_MAXIMUM;


⌨️ 快捷键说明

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