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

📄 scsidefs.h

📁 一个SCSI的Tape设备读写等操作的软件.
💻 H
📖 第 1 页 / 共 2 页
字号:
//***************************************************************************
// SCSI definitions
//***************************************************************************

//***************************************************************************
//       %%% 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				0x07	// Maximum Logical Unit Id
#define MAXTARG				0x0F	// 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

⌨️ 快捷键说明

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