📄 scsi.h
字号:
/////////////////////////////////////////////////////////////////////////////7
// MODE SENSE(6)
/* Page Control */
#define SCSI_PAGE_CONTROL_CURRENT 0
#define SCSI_PAGE_CONTROL_CHANGEABLE 1
#define SCSI_PAGE_CONTROL_DEFAULT 2
#define SCSI_PAGE_CONTROL_SAVED 3
/* Mode Page Codes */
#define SCSI_MODE_CODE_RW_RECOVERY 0x01
#define SCSI_MODE_CODE_CONNECT 0x02
#define SCSI_MODE_CODE_FORMAT_DEVICE 0x03
#define SCSI_MODE_CODE_REGID_DISK 0x04
#define SCSI_MODE_CODE_FLEXIBLE_DISK 0x05
#define SCSI_MODE_CODE_VERIFY_RECOVER 0x07
#define SCSI_MODE_CODE_CACHING 0x08
#define SCSI_MODE_CODE_PERIPHERAL 0x09
#define SCSI_MODE_CODE_CONTROL 0x0a
#define SCSI_MODE_CODE_MEDIA_SUPPORT 0x0b
#define SCSI_MODE_CODE_NOTCH_PARTITION 0x0c
#define SCSI_MODE_CODE_ALL 0x3f
#pragma packed on
typedef struct __tag_scsi_command_MODE_SENSE6
{
unsigned char opcode; // must be 0x1a = MODE_SENSE6
unsigned char bLogicalUnit; // LogicalUnit:3, Reserved1:1, DBD:1, Reserved2:3
unsigned char bPageCode; // PC:2, PageCode:6
unsigned char bReserved3;
unsigned char bAllocationLength;
unsigned char bControl;
} SCSI_COMMAND_MODE_SENSE6;
#pragma packed off
#pragma packed on
typedef struct __tag_scsi_MODE_PARAM_HEADER6
{
unsigned char bModeDataLength;
unsigned char bMediaType;
unsigned char bDeviceParam;
unsigned char bBlockDescLength;
} SCSI_MODE_PARAM_HEADER6;
#pragma packed off
#pragma packed on
typedef struct __tag_scsi_MODE_PARAM_BLOCK_DESC
{
unsigned char bDensityCode;
unsigned char xNumberOfBlock[3];
unsigned char bReserved;
unsigned char xModeDataLength[3];
} SCSI_MODE_PARAM_BLOCK_DESC;
#pragma packed off
#pragma packed on
typedef struct __tag_scsi_MODE_PAGE
{
unsigned char fPageCode;
unsigned char bPageLength;
unsigned char Parameters[1];
/* ...... */
} SCSI_MODE_PAGE;
#pragma packed off
#pragma packed on
typedef struct __tag_scsi_MODE_PAGE_RW_RECOVERY
{
unsigned char bPageCode; // = PS:1, Reserved1:1, PageCode:6
unsigned char bPageLength;
unsigned char bAttributes; // = AWRE:1, ARRE:1, TB:1, RC:1
// EER:1, PER:1, DTE:1, DCR:1
unsigned char bReadRetryCount;
unsigned char bCorrectionSpan;
unsigned char bHeadOffsetCount;
unsigned char bDataStrobeOffsetCount;
unsigned char bReserved2;
unsigned char bWriteRetryCount;
unsigned char bReserved3;
unsigned short int wRecoveryTimeLimit;
} SCSI_MODE_PAGE_RW_RECOVERY;
#pragma packed off
#pragma packed on
typedef struct __tag_scsi_MODE_PAGE_FLEXIBLE_DISK
{
unsigned char bPageCode; // 05h
unsigned char bPageLength;
unsigned short int wTransferRate;
unsigned char bNumberOfHead;
unsigned char bSectorPerTrack;
unsigned short int wSectorSize;
unsigned short int wNumberOfCylinder;
unsigned short int wStartCylinderWriteCompensation;
unsigned short int wStartCylinderReduceCurrent;
unsigned short int wDriveStepRate;
unsigned char bDriveStepPluseWidth;
unsigned short int wHeadSettleDelay;
unsigned char bMotorOnDelay;
unsigned char bMotorOffDelay;
unsigned char bDeviceStatus;
unsigned char bSPC;
unsigned char bWriteCompensation;
unsigned char bHeadLoadDelay;
unsigned char bHeadUnloadDelay;
unsigned char bPin34_Pin2;
unsigned char bPin4_Pin1;
unsigned short int wMediaRotationRate;
unsigned char bReserved4;
unsigned char bReserved5;
} SCSI_MODE_PAGE_FLEXIBLE_DISK;
#pragma packed off
#pragma packed on
typedef struct __tag_scsi_MODE_PAGE_CACHING
{
unsigned char bPageCode; // = PS:1, Reserved1:1, PageCode:6 (0x08)
unsigned char bPageLenLength;
unsigned char bCacheCapability; // = Reserved2:5, WCE:1, MF:1, RCD:1
unsigned char bRetentionPriority; // = ReadRetention:4, WriteRetention:4
unsigned short int wDisableLen;
unsigned short int wMinPrefetch;
unsigned short int wMaxPrefetch;
unsigned short int wMaxPrefetchCeiling;
} SCSI_MODE_PAGE_CACHING;
#pragma packed off
#pragma packed on
typedef struct __tag_scsi_MODE_PAGE_NOTCH_PARTITION
{
unsigned char bPageCode; // = PS:1, Reserved1:1, PageCode:6 (0x0c)
unsigned char bPageLength;
unsigned char bNotchAttributes; // = ND:1, LPN:1, Reserved2:6
unsigned char bReserved3;
unsigned short int wMaximumNotches;
unsigned short int wActiveNotch;
unsigned long int dwStartBoundary;
unsigned long int dwEndBoundary;
unsigned char abPagesNotched[8];
} SCSI_MODE_PAGE_NOTCH_PARTITION;
#pragma packed off
/////////////////////////////////////////////////////////////////////////////
// PREVENT ALLOW MEDIA REMOVAL
#pragma packed on
typedef struct __tag_scsi_command_ALLOW_REMOVAL
{
unsigned char opcode; // must be 0x1e = ALLOW_REMOVAL
unsigned char bLogicalUnit; // = LogicalUnit:3, Reserved1:5
unsigned char bReserved2;
unsigned char bReserved3;
unsigned char bPreventRemoval;// = Reserved4:7, PreventRemoval:1
unsigned char bContol;
} SCSI_COMMAND_ALLOW_REMOVAL;
#pragma packed off
/////////////////////////////////////////////////////////////////////////////
// WRITE (10)
#pragma packed on
typedef struct __tag_scsi_command_WRITE10
{
unsigned char opcode; // must be 0x2a = WRITE10
unsigned char bLogicalUnit; // = LogicalUnit:3, DPO:1, FUA:1, Reserved1:2, RelAddr:1
unsigned long dwLogicalBlockAddr;
unsigned char bReserved2;
unsigned short int wTransferLength;
unsigned char bContol;
} SCSI_COMMAND_WRITE10;
#pragma packed off
/////////////////////////////////////////////////////////////////////////////
// RESERVE
#pragma packed on
typedef struct __tag_scsi_command_FORMAT_UNIT
{
unsigned char opcode; // must be 0x04 = FORMAT_UNIT
unsigned char bLogicalUnit; // = LogicalUnit:3, FormatData:1, CompleteList:1, DefectListFormat:3
unsigned short int wInterleave;
unsigned char bControl;
} SCSI_COMMAND_FORMAT_UNIT;
#pragma packed off
/////////////////////////////////////////////////////////////////////////////
// RESERVE
#pragma packed on
typedef struct __tag_scsi_command_RESERVE
{
unsigned char opcode; // must be 0x16 = RESERVE
unsigned char bLogicalUnit; // = LogicalUnit:3, ThirdParty:1, ThirdPartyID:3, Extend:1
unsigned short int wExtendListLen;
unsigned char bControl;
} SCSI_COMMAND_RESERVE;
#pragma packed off
/////////////////////////////////////////////////////////////////////////////
// SEND DIAGNOSTIC
#pragma packed on
typedef struct __tag_scsi_command_SEND_DIAGNOSTIC
{
unsigned char opcode; // must be 0x1d = SEND_DIAGNOSTIC
unsigned char bLogicalUnit; // = LogicalUnit:3,
// PF:1, Reserved1:1, SelfTest:1, DevOfL:1, UnitOfL:1
unsigned char bReserved;
unsigned short int wParamListLen;
unsigned char bControl;
} SCSI_COMMAND_SEND_DIAGNOSTIC;
#pragma packed off
/////////////////////////////////////////////////////////////////////////////
// START STOP UNIT
#pragma packed on
typedef struct __tag_scsi_command_START_STOP_UNIT
{
unsigned char opcode; // must be 0x1b = START_STOP_UNIT
unsigned char bLogicalUnit; // = LogicalUnit:3, Reserved1:4, Immediate:1
unsigned char bReserved2;
unsigned char bReserved3;
unsigned char bLoadEject; // Reserved4:6, LoadEject:1, Start:1
unsigned char bControl;
} SCSI_COMMAND_START_STOP_UNIT;
#pragma packed off
/////////////////////////////////////////////////////////////////////////////
// VERIFY
#pragma packed on
typedef struct __tag_scsi_command_VERIFY
{
unsigned char opcode; // must be 0x1b = START_STOP_UNIT
unsigned char bLogicalUnit; // = bLogicalUnit:3, DPO:1,
// Reserved1:1, Reserved2:1, ByteCheck:1, RelAddr:1
unsigned long dwLogicalBlockAddr;
unsigned char bReserved3;
unsigned short int wVerifyLength;
unsigned char bContol;
} SCSI_COMMAND_VERIFY;
#pragma packed off
typedef unsigned (*TCC730_MMCSCSI_RECVPROC)(void* lpData, unsigned nLen, CONST_FAKE void* lpCmd);
typedef unsigned (*TCC730_MMCSCSI_SENDPROC)(CONST_FAKE void* lpData, unsigned nLen, CONST_FAKE void* lpCmd);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -