📄 scsidefs.h
字号:
//***************************************************************************//// Name: SCSIDEFS.H//// Description: SCSI definitions ('C' Language)////***************************************************************************//***************************************************************************// %%% TARGET STATUS VALUES %%%//***************************************************************************#define STATUS_GOOD 0x00 // Status Good#define STATUS_CHKCOND 0x02 // Check Condition#define STATUS_CONDMET 0x04 // Condition Met#define STATUS_BUSY 0x08 // Busy#define STATUS_INTERM 0x10 // Intermediate#define STATUS_INTCDMET 0x14 // Intermediate-condition met#define STATUS_RESCONF 0x18 // Reservation conflict#define STATUS_COMTERM 0x22 // Command Terminated#define STATUS_QFULL 0x28 // Queue full//***************************************************************************// %%% SCSI MISCELLANEOUS EQUATES %%%//***************************************************************************#define MAXLUN 7 // Maximum Logical Unit Id#define MAXTARG 7 // Maximum Target Id#define MAX_SCSI_LUNS 64 // Maximum Number of SCSI LUNs#define MAX_NUM_HA 8 // Maximum Number of SCSI HA's//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\///// %%% SCSI COMMAND OPCODES %%%/////\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\///***************************************************************************// %%% Commands for all Device Types %%%//***************************************************************************#define SCSI_CHANGE_DEF 0x40 // Change Definition (Optional)#define SCSI_COMPARE 0x39 // Compare (O)#define SCSI_COPY 0x18 // Copy (O)#define SCSI_COP_VERIFY 0x3A // Copy and Verify (O)#define SCSI_INQUIRY 0x12 // Inquiry (MANDATORY)#define SCSI_LOG_SELECT 0x4C // Log Select (O)#define SCSI_LOG_SENSE 0x4D // Log Sense (O)#define SCSI_MODE_SEL6 0x15 // Mode Select 6-byte (Device Specific)#define SCSI_MODE_SEL10 0x55 // Mode Select 10-byte (Device Specific)#define SCSI_MODE_SEN6 0x1A // Mode Sense 6-byte (Device Specific)#define SCSI_MODE_SEN10 0x5A // Mode Sense 10-byte (Device Specific)#define SCSI_READ_BUFF 0x3C // Read Buffer (O)#define SCSI_REQ_SENSE 0x03 // Request Sense (MANDATORY)#define SCSI_SEND_DIAG 0x1D // Send Diagnostic (O)#define SCSI_TST_U_RDY 0x00 // Test Unit Ready (MANDATORY)#define SCSI_WRITE_BUFF 0x3B // Write Buffer (O)//***************************************************************************// %%% Commands Unique to Direct Access Devices %%%//***************************************************************************#define SCSI_COMPARE 0x39 // Compare (O)#define SCSI_FORMAT 0x04 // Format Unit (MANDATORY)#define SCSI_LCK_UN_CAC 0x36 // Lock Unlock Cache (O)#define SCSI_PREFETCH 0x34 // Prefetch (O)#define SCSI_MED_REMOVL 0x1E // Prevent/Allow medium Removal (O)#define SCSI_READ6 0x08 // Read 6-byte (MANDATORY)#define SCSI_READ10 0x28 // Read 10-byte (MANDATORY)#define SCSI_RD_CAPAC 0x25 // Read Capacity (MANDATORY)#define SCSI_RD_DEFECT 0x37 // Read Defect Data (O)#define SCSI_READ_LONG 0x3E // Read Long (O)#define SCSI_REASS_BLK 0x07 // Reassign Blocks (O)#define SCSI_RCV_DIAG 0x1C // Receive Diagnostic Results (O)#define SCSI_RELEASE 0x17 // Release Unit (MANDATORY)#define SCSI_REZERO 0x01 // Rezero Unit (O)#define SCSI_SRCH_DAT_E 0x31 // Search Data Equal (O)#define SCSI_SRCH_DAT_H 0x30 // Search Data High (O)#define SCSI_SRCH_DAT_L 0x32 // Search Data Low (O)#define SCSI_SEEK6 0x0B // Seek 6-Byte (O)#define SCSI_SEEK10 0x2B // Seek 10-Byte (O)#define SCSI_SEND_DIAG 0x1D // Send Diagnostics (MANDATORY)#define SCSI_SET_LIMIT 0x33 // Set Limits (O)#define SCSI_START_STP 0x1B // Start/Stop Unit (O)#define SCSI_SYNC_CACHE 0x35 // Synchronize Cache (O)#define SCSI_VERIFY 0x2F // Verify (O)#define SCSI_WRITE6 0x0A // Write 6-Byte (MANDATORY)#define SCSI_WRITE10 0x2A // Write 10-Byte (MANDATORY)#define SCSI_WRT_VERIFY 0x2E // Write and Verify (O)#define SCSI_WRITE_LONG 0x3F // Write Long (O)#define SCSI_WRITE_SAME 0x41 // Write Same (O)//***************************************************************************// %%% Commands Unique to Sequential Access Devices %%%//***************************************************************************#define SCSI_ERASE 0x19 // Erase (MANDATORY)#define SCSI_LOAD_UN 0x1B // Load/Unload (O)#define SCSI_LOCATE 0x2B // Locate (O)#define SCSI_RD_BLK_LIM 0x05 // Read Block Limits (MANDATORY)#define SCSI_READ_POS 0x34 // Read Position (O)#define SCSI_READ_REV 0x0F // Read Reverse (O)#define SCSI_REC_BF_DAT 0x14 // Recover Buffer Data (O)#define SCSI_RESERVE 0x16 // Reserve Unit (MANDATORY)#define SCSI_REWIND 0x01 // Rewind (MANDATORY)#define SCSI_SPACE 0x11 // Space (MANDATORY)#define SCSI_VERIFY_T 0x13 // Verify (Tape) (O)#define SCSI_WRT_FILE 0x10 // Write Filemarks (MANDATORY)//***************************************************************************// %%% Commands Unique to Printer Devices %%%//***************************************************************************#define SCSI_PRINT 0x0A // Print (MANDATORY)#define SCSI_SLEW_PNT 0x0B // Slew and Print (O)#define SCSI_STOP_PNT 0x1B // Stop Print (O)#define SCSI_SYNC_BUFF 0x10 // Synchronize Buffer (O)//***************************************************************************// %%% Commands Unique to Processor Devices %%%//***************************************************************************#define SCSI_RECEIVE 0x08 // Receive (O)#define SCSI_SEND 0x0A // Send (O)//***************************************************************************// %%% Commands Unique to Write-Once Devices %%%//***************************************************************************#define SCSI_MEDIUM_SCN 0x38 // Medium Scan (O)#define SCSI_SRCHDATE10 0x31 // Search Data Equal 10-Byte (O)#define SCSI_SRCHDATE12 0xB1 // Search Data Equal 12-Byte (O)#define SCSI_SRCHDATH10 0x30 // Search Data High 10-Byte (O)#define SCSI_SRCHDATH12 0xB0 // Search Data High 12-Byte (O)#define SCSI_SRCHDATL10 0x32 // Search Data Low 10-Byte (O)#define SCSI_SRCHDATL12 0xB2 // Search Data Low 12-Byte (O)#define SCSI_SET_LIM_10 0x33 // Set Limits 10-Byte (O)#define SCSI_SET_LIM_12 0xB3 // Set Limits 10-Byte (O)#define SCSI_VERIFY10 0x2F // Verify 10-Byte (O)#define SCSI_VERIFY12 0xAF // Verify 12-Byte (O)#define SCSI_WRITE12 0xAA // Write 12-Byte (O)#define SCSI_WRT_VER10 0x2E // Write and Verify 10-Byte (O)#define SCSI_WRT_VER12 0xAE // Write and Verify 12-Byte (O)//***************************************************************************// %%% Commands Unique to CD-ROM Devices %%%//***************************************************************************#define SCSI_PLAYAUD_10 0x45 // Play Audio 10-Byte (O)#define SCSI_PLAYAUD_12 0xA5 // Play Audio 12-Byte 12-Byte (O)#define SCSI_PLAYAUDMSF 0x47 // Play Audio MSF (O)#define SCSI_PLAYA_TKIN 0x48 // Play Audio Track/Index (O)#define SCSI_PLYTKREL10 0x49 // Play Track Relative 10-Byte (O)#define SCSI_PLYTKREL12 0xA9 // Play Track Relative 12-Byte (O)#define SCSI_READCDCAP 0x25 // Read CD-ROM Capacity (MANDATORY)#define SCSI_READHEADER 0x44 // Read Header (O)#define SCSI_SUBCHANNEL 0x42 // Read Subchannel (O)#define SCSI_READ_TOC 0x43 // Read TOC (O)//***************************************************************************// %%% Commands Unique to Scanner Devices %%%//***************************************************************************#define SCSI_GETDBSTAT 0x34 // Get Data Buffer Status (O)#define SCSI_GETWINDOW 0x25 // Get Window (O)#define SCSI_OBJECTPOS 0x31 // Object Postion (O)#define SCSI_SCAN 0x1B // Scan (O)#define SCSI_SETWINDOW 0x24 // Set Window (MANDATORY)//***************************************************************************// %%% Commands Unique to Optical Memory Devices %%%//***************************************************************************#define SCSI_UpdateBlk 0x3D // Update Block (O)//***************************************************************************// %%% Commands Unique to Medium Changer Devices %%%//***************************************************************************#define SCSI_EXCHMEDIUM 0xA6 // Exchange Medium (O)#define SCSI_INITELSTAT 0x07 // Initialize Element Status (O)#define SCSI_POSTOELEM 0x2B // Position to Element (O)#define SCSI_REQ_VE_ADD 0xB5 // Request Volume Element Address (O)#define SCSI_SENDVOLTAG 0xB6 // Send Volume Tag (O)//***************************************************************************// %%% Commands Unique to Communication Devices %%%//***************************************************************************#define SCSI_GET_MSG_6 0x08 // Get Message 6-Byte (MANDATORY)#define SCSI_GET_MSG_10 0x28 // Get Message 10-Byte (O)#define SCSI_GET_MSG_12 0xA8 // Get Message 12-Byte (O)#define SCSI_SND_MSG_6 0x0A // Send Message 6-Byte (MANDATORY)#define SCSI_SND_MSG_10 0x2A // Send Message 10-Byte (O)#define SCSI_SND_MSG_12 0xAA // Send Message 12-Byte (O)//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\///// %%% END OF SCSI COMMAND OPCODES %%%/////\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\///***************************************************************************// %%% Request Sense Data Format %%%//***************************************************************************typedef struct { BYTE ErrorCode; // Error Code (70H or 71H) BYTE SegmentNum; // Number of current segment descriptor BYTE SenseKey; // Sense Key(See bit definitions too) BYTE InfoByte0; // Information MSB BYTE InfoByte1; // Information MID BYTE InfoByte2; // Information MID BYTE InfoByte3; // Information LSB BYTE AddSenLen; // Additional Sense Length BYTE ComSpecInf0; // Command Specific Information MSB BYTE ComSpecInf1; // Command Specific Information MID BYTE ComSpecInf2; // Command Specific Information MID BYTE ComSpecInf3; // Command Specific Information LSB BYTE AddSenseCode; // Additional Sense Code BYTE AddSenQual; // Additional Sense Code Qualifier BYTE FieldRepUCode; // Field Replaceable Unit Code BYTE SenKeySpec15; // Sense Key Specific 15th byte BYTE SenKeySpec16; // Sense Key Specific 16th byte BYTE SenKeySpec17; // Sense Key Specific 17th byte BYTE AddSenseBytes; // Additional Sense Bytes} SENSE_DATA_FMT;//***************************************************************************// %%% REQUEST SENSE ERROR CODE %%%//***************************************************************************#define SERROR_CURRENT 0x70 // Current Errors#define SERROR_DEFERED 0x71 // Deferred Errors//***************************************************************************// %%% REQUEST SENSE BIT DEFINITIONS %%%//***************************************************************************#define SENSE_VALID 0x80 // Byte 0 Bit 7#define SENSE_FILEMRK 0x80 // Byte 2 Bit 7#define SENSE_EOM 0x40 // Byte 2 Bit 6#define SENSE_ILI 0x20 // Byte 2 Bit 5//***************************************************************************// %%% REQUEST SENSE SENSE KEY DEFINITIONS %%%//***************************************************************************#define KEY_NOSENSE 0x00 // No Sense#define KEY_RECERROR 0x01 // Recovered Error#define KEY_NOTREADY 0x02 // Not Ready#define KEY_MEDIUMERR 0x03 // Medium Error#define KEY_HARDERROR 0x04 // Hardware Error#define KEY_ILLGLREQ 0x05 // Illegal Request#define KEY_UNITATT 0x06 // Unit Attention#define KEY_DATAPROT 0x07 // Data Protect#define KEY_BLANKCHK 0x08 // Blank Check#define KEY_VENDSPEC 0x09 // Vendor Specific#define KEY_COPYABORT 0x0A // Copy Abort#define KEY_EQUAL 0x0C // Equal (Search)#define KEY_VOLOVRFLW 0x0D // Volume Overflow#define KEY_MISCOMP 0x0E // Miscompare (Search)#define KEY_RESERVED 0x0F // Reserved//***************************************************************************// %%% PERIPHERAL DEVICE TYPE DEFINITIONS %%%//***************************************************************************#define DTYPE_DASD 0x00 // Disk Device#define DTYPE_SEQD 0x01 // Tape Device#define DTYPE_PRNT 0x02 // Printer#define DTYPE_PROC 0x03 // Processor#define DTYPE_WORM 0x04 // Write-once read-multiple#define DTYPE_CROM 0x05 // CD-ROM device#define DTYPE_CDROM 0x05 // CD-ROM device#define DTYPE_SCAN 0x06 // Scanner device#define DTYPE_OPTI 0x07 // Optical memory device#define DTYPE_JUKE 0x08 // Medium Changer device#define DTYPE_COMM 0x09 // Communications device#define DTYPE_RESL 0x0A // Reserved (low)#define DTYPE_RESH 0x1E // Reserved (high)#define DTYPE_UNKNOWN 0x1F // Unknown or no device type//***************************************************************************// %%% ANSI APPROVED VERSION DEFINITIONS %%%//***************************************************************************#define ANSI_MAYBE 0x0 // Device may or may not be ANSI approved stand#define ANSI_SCSI1 0x1 // Device complies to ANSI X3.131-1986 (SCSI-1)#define ANSI_SCSI2 0x2 // Device complies to SCSI-2#define ANSI_RESLO 0x3 // Reserved (low)#define ANSI_RESHI 0x7 // Reserved (high)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -