📄 scsi.h
字号:
UCHAR Reserved1[5]; UCHAR AllocationLength[4]; UCHAR Reserved2[1]; UCHAR Control; } REPORT_LUNS, *PREPORT_LUNS; struct _PERSISTENT_RESERVE_IN { UCHAR OperationCode; UCHAR ServiceAction : 5; UCHAR Reserved1 : 3; UCHAR Reserved2[5]; UCHAR AllocationLength[2]; UCHAR Control; } PERSISTENT_RESERVE_IN, *PPERSISTENT_RESERVE_IN; struct _PERSISTENT_RESERVE_OUT { UCHAR OperationCode; UCHAR ServiceAction : 5; UCHAR Reserved1 : 3; UCHAR Type : 4; UCHAR Scope : 4; UCHAR Reserved2[4]; UCHAR ParameterListLength[2]; UCHAR Control; } PERSISTENT_RESERVE_OUT, *PPERSISTENT_RESERVE_OUT; struct _GET_CONFIGURATION { UCHAR OperationCode; UCHAR RequestType : 1; UCHAR Reserved1 : 7; UCHAR StartingFeature[2]; UCHAR Reserved2[3]; UCHAR AllocationLength[2]; UCHAR Control; } GET_CONFIGURATION, *PGET_CONFIGURATION; struct _SET_CD_SPEED { UCHAR OperationCode; UCHAR Reserved1; UCHAR ReadSpeed[2]; UCHAR WriteSpeed[2]; UCHAR Reserved2[5]; UCHAR Control; } SET_CD_SPEED, *PSET_CD_SPEED; ULONG AsUlong[4]; UCHAR AsByte[16];} CDB, *PCDB;#ifndef _INQUIRYDATA_DEFINED /* also in minitape.h */#define _INQUIRYDATA_DEFINED#define INQUIRYDATABUFFERSIZE 36typedef struct _INQUIRYDATA { UCHAR DeviceType : 5; UCHAR DeviceTypeQualifier : 3; UCHAR DeviceTypeModifier : 7; UCHAR RemovableMedia : 1; _ANONYMOUS_UNION union { UCHAR Versions; _ANONYMOUS_STRUCT struct { UCHAR ANSIVersion : 3; UCHAR ECMAVersion : 3; UCHAR ISOVersion : 2; } DUMMYSTRUCTNAME; } DUMMYUNIONNAME; UCHAR ResponseDataFormat : 4; UCHAR HiSupport : 1; UCHAR NormACA : 1; UCHAR TerminateTask : 1; UCHAR AERC : 1; UCHAR AdditionalLength; UCHAR Reserved; UCHAR Addr16 : 1; UCHAR Addr32 : 1; UCHAR AckReqQ: 1; UCHAR MediumChanger : 1; UCHAR MultiPort : 1; UCHAR ReservedBit2 : 1; UCHAR EnclosureServices : 1; UCHAR ReservedBit3 : 1; UCHAR SoftReset : 1; UCHAR CommandQueue : 1; UCHAR TransferDisable : 1; UCHAR LinkedCommands : 1; UCHAR Synchronous : 1; UCHAR Wide16Bit : 1; UCHAR Wide32Bit : 1; UCHAR RelativeAddressing : 1; UCHAR VendorId[8]; UCHAR ProductId[16]; UCHAR ProductRevisionLevel[4]; UCHAR VendorSpecific[20]; UCHAR Reserved3[40];} INQUIRYDATA, *PINQUIRYDATA;#endif/* INQUIRYDATA.DeviceType constants */#define DIRECT_ACCESS_DEVICE 0x00#define SEQUENTIAL_ACCESS_DEVICE 0x01#define PRINTER_DEVICE 0x02#define PROCESSOR_DEVICE 0x03#define WRITE_ONCE_READ_MULTIPLE_DEVICE 0x04#define READ_ONLY_DIRECT_ACCESS_DEVICE 0x05#define SCANNER_DEVICE 0x06#define OPTICAL_DEVICE 0x07#define MEDIUM_CHANGER 0x08#define COMMUNICATION_DEVICE 0x09#define LOGICAL_UNIT_NOT_PRESENT_DEVICE 0x7F#define DEVICE_QUALIFIER_NOT_SUPPORTED 0x03/* INQUIRYDATA.DeviceTypeQualifier constants */#define DEVICE_CONNECTED 0x00#define SCSISTAT_GOOD 0x00#define SCSISTAT_CHECK_CONDITION 0x02#define SCSISTAT_CONDITION_MET 0x04#define SCSISTAT_BUSY 0x08#define SCSISTAT_INTERMEDIATE 0x10#define SCSISTAT_INTERMEDIATE_COND_MET 0x14#define SCSISTAT_RESERVATION_CONFLICT 0x18#define SCSISTAT_COMMAND_TERMINATED 0x22#define SCSISTAT_QUEUE_FULL 0x28/* Mode Sense/Select page constants */#define MODE_PAGE_ERROR_RECOVERY 0x01#define MODE_PAGE_DISCONNECT 0x02#define MODE_PAGE_FORMAT_DEVICE 0x03#define MODE_PAGE_RIGID_GEOMETRY 0x04#define MODE_PAGE_FLEXIBILE 0x05#define MODE_PAGE_WRITE_PARAMETERS 0x05#define MODE_PAGE_VERIFY_ERROR 0x07#define MODE_PAGE_CACHING 0x08#define MODE_PAGE_PERIPHERAL 0x09#define MODE_PAGE_CONTROL 0x0A#define MODE_PAGE_MEDIUM_TYPES 0x0B#define MODE_PAGE_NOTCH_PARTITION 0x0C#define MODE_PAGE_CD_AUDIO_CONTROL 0x0E#define MODE_PAGE_DATA_COMPRESS 0x0F#define MODE_PAGE_DEVICE_CONFIG 0x10#define MODE_PAGE_MEDIUM_PARTITION 0x11#define MODE_PAGE_CDVD_FEATURE_SET 0x18#define MODE_PAGE_POWER_CONDITION 0x1A#define MODE_PAGE_FAULT_REPORTING 0x1C#define MODE_PAGE_CDVD_INACTIVITY 0x1D#define MODE_PAGE_ELEMENT_ADDRESS 0x1D#define MODE_PAGE_TRANSPORT_GEOMETRY 0x1E#define MODE_PAGE_DEVICE_CAPABILITIES 0x1F#define MODE_PAGE_CAPABILITIES 0x2A#define MODE_SENSE_RETURN_ALL 0x3f#define MODE_SENSE_CURRENT_VALUES 0x00#define MODE_SENSE_CHANGEABLE_VALUES 0x40#define MODE_SENSE_DEFAULT_VAULES 0x80#define MODE_SENSE_SAVED_VALUES 0xc0/* SCSI CDB operation codes */#define SCSIOP_TEST_UNIT_READY 0x00#define SCSIOP_REZERO_UNIT 0x01#define SCSIOP_REWIND 0x01#define SCSIOP_REQUEST_BLOCK_ADDR 0x02#define SCSIOP_REQUEST_SENSE 0x03#define SCSIOP_FORMAT_UNIT 0x04#define SCSIOP_READ_BLOCK_LIMITS 0x05#define SCSIOP_REASSIGN_BLOCKS 0x07#define SCSIOP_INIT_ELEMENT_STATUS 0x07#define SCSIOP_READ6 0x08#define SCSIOP_RECEIVE 0x08#define SCSIOP_WRITE6 0x0A#define SCSIOP_PRINT 0x0A#define SCSIOP_SEND 0x0A#define SCSIOP_SEEK6 0x0B#define SCSIOP_TRACK_SELECT 0x0B#define SCSIOP_SLEW_PRINT 0x0B#define SCSIOP_SEEK_BLOCK 0x0C#define SCSIOP_PARTITION 0x0D#define SCSIOP_READ_REVERSE 0x0F#define SCSIOP_WRITE_FILEMARKS 0x10#define SCSIOP_FLUSH_BUFFER 0x10#define SCSIOP_SPACE 0x11#define SCSIOP_INQUIRY 0x12#define SCSIOP_VERIFY6 0x13#define SCSIOP_RECOVER_BUF_DATA 0x14#define SCSIOP_MODE_SELECT 0x15#define SCSIOP_RESERVE_UNIT 0x16#define SCSIOP_RELEASE_UNIT 0x17#define SCSIOP_COPY 0x18#define SCSIOP_ERASE 0x19#define SCSIOP_MODE_SENSE 0x1A#define SCSIOP_START_STOP_UNIT 0x1B#define SCSIOP_STOP_PRINT 0x1B#define SCSIOP_LOAD_UNLOAD 0x1B#define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C#define SCSIOP_SEND_DIAGNOSTIC 0x1D#define SCSIOP_MEDIUM_REMOVAL 0x1E#define SCSIOP_READ_FORMATTED_CAPACITY 0x23#define SCSIOP_READ_CAPACITY 0x25#define SCSIOP_READ 0x28#define SCSIOP_WRITE 0x2A#define SCSIOP_SEEK 0x2B#define SCSIOP_LOCATE 0x2B#define SCSIOP_POSITION_TO_ELEMENT 0x2B#define SCSIOP_WRITE_VERIFY 0x2E#define SCSIOP_VERIFY 0x2F#define SCSIOP_SEARCH_DATA_HIGH 0x30#define SCSIOP_SEARCH_DATA_EQUAL 0x31#define SCSIOP_SEARCH_DATA_LOW 0x32#define SCSIOP_SET_LIMITS 0x33#define SCSIOP_READ_POSITION 0x34#define SCSIOP_SYNCHRONIZE_CACHE 0x35#define SCSIOP_COMPARE 0x39#define SCSIOP_COPY_COMPARE 0x3A#define SCSIOP_WRITE_DATA_BUFF 0x3B#define SCSIOP_READ_DATA_BUFF 0x3C#define SCSIOP_CHANGE_DEFINITION 0x40#define SCSIOP_READ_SUB_CHANNEL 0x42#define SCSIOP_READ_TOC 0x43#define SCSIOP_READ_HEADER 0x44#define SCSIOP_PLAY_AUDIO 0x45#define SCSIOP_GET_CONFIGURATION 0x46#define SCSIOP_PLAY_AUDIO_MSF 0x47#define SCSIOP_PLAY_TRACK_INDEX 0x48#define SCSIOP_PLAY_TRACK_RELATIVE 0x49#define SCSIOP_GET_EVENT_STATUS 0x4A#define SCSIOP_PAUSE_RESUME 0x4B#define SCSIOP_LOG_SELECT 0x4C#define SCSIOP_LOG_SENSE 0x4D#define SCSIOP_STOP_PLAY_SCAN 0x4E#define SCSIOP_READ_DISK_INFORMATION 0x51#define SCSIOP_READ_TRACK_INFORMATION 0x52#define SCSIOP_RESERVE_TRACK_RZONE 0x53#define SCSIOP_SEND_OPC_INFORMATION 0x54#define SCSIOP_MODE_SELECT10 0x55#define SCSIOP_MODE_SENSE10 0x5A#define SCSIOP_CLOSE_TRACK_SESSION 0x5B#define SCSIOP_READ_BUFFER_CAPACITY 0x5C#define SCSIOP_SEND_CUE_SHEET 0x5D#define SCSIOP_PERSISTENT_RESERVE_IN 0x5E#define SCSIOP_PERSISTENT_RESERVE_OUT 0x5F#define SCSIOP_REPORT_LUNS 0xA0#define SCSIOP_BLANK 0xA1#define SCSIOP_SEND_KEY 0xA3#define SCSIOP_REPORT_KEY 0xA4#define SCSIOP_MOVE_MEDIUM 0xA5#define SCSIOP_LOAD_UNLOAD_SLOT 0xA6#define SCSIOP_EXCHANGE_MEDIUM 0xA6#define SCSIOP_SET_READ_AHEAD 0xA7#define SCSIOP_READ_DVD_STRUCTURE 0xAD#define SCSIOP_REQUEST_VOL_ELEMENT 0xB5#define SCSIOP_SEND_VOLUME_TAG 0xB6#define SCSIOP_READ_ELEMENT_STATUS 0xB8#define SCSIOP_READ_CD_MSF 0xB9#define SCSIOP_SCAN_CD 0xBA#define SCSIOP_SET_CD_SPEED 0xBB#define SCSIOP_PLAY_CD 0xBC#define SCSIOP_MECHANISM_STATUS 0xBD#define SCSIOP_READ_CD 0xBE#define SCSIOP_SEND_DVD_STRUCTURE 0xBF#define SCSIOP_INIT_ELEMENT_RANGE 0xE7#define SCSIOP_DENON_EJECT_DISC 0xE6#define SCSIOP_DENON_STOP_AUDIO 0xE7#define SCSIOP_DENON_PLAY_AUDIO 0xE8#define SCSIOP_DENON_READ_TOC 0xE9#define SCSIOP_DENON_READ_SUBCODE 0xEB#define SCSIMESS_MODIFY_DATA_POINTER 0x00#define SCSIMESS_SYNCHRONOUS_DATA_REQ 0x01#define SCSIMESS_WIDE_DATA_REQUEST 0x03#define SCSIMESS_MODIFY_DATA_LENGTH 5#define SCSIMESS_SYNCH_DATA_LENGTH 3#define SCSIMESS_WIDE_DATA_LENGTH 2#define SCSIMESS_ABORT 0x06#define SCSIMESS_ABORT_WITH_TAG 0x0D#define SCSIMESS_BUS_DEVICE_RESET 0x0C#define SCSIMESS_CLEAR_QUEUE 0x0E#define SCSIMESS_COMMAND_COMPLETE 0x00#define SCSIMESS_DISCONNECT 0x04#define SCSIMESS_EXTENDED_MESSAGE 0x01#define SCSIMESS_IDENTIFY 0x80#define SCSIMESS_IDENTIFY_WITH_DISCON 0xC0#define SCSIMESS_IGNORE_WIDE_RESIDUE 0x23#define SCSIMESS_INITIATE_RECOVERY 0x0F#define SCSIMESS_INIT_DETECTED_ERROR 0x05#define SCSIMESS_LINK_CMD_COMP 0x0A#define SCSIMESS_LINK_CMD_COMP_W_FLAG 0x0B#define SCSIMESS_MESS_PARITY_ERROR 0x09#define SCSIMESS_MESSAGE_REJECT 0x07#define SCSIMESS_NO_OPERATION 0x08#define SCSIMESS_HEAD_OF_QUEUE_TAG 0x21#define SCSIMESS_ORDERED_QUEUE_TAG 0x22#define SCSIMESS_SIMPLE_QUEUE_TAG 0x20#define SCSIMESS_RELEASE_RECOVERY 0x10#define SCSIMESS_RESTORE_POINTERS 0x03#define SCSIMESS_SAVE_DATA_POINTER 0x02#define SCSIMESS_TERMINATE_IO_PROCESS 0x11#define CDB_FORCE_MEDIA_ACCESS 0x08#define CDB_RETURN_ON_COMPLETION 0#define CDB_RETURN_IMMEDIATE 1#define CDB_INQUIRY_EVPD 0x01#define LUN0_FORMAT_SAVING_DEFECT_LIST 0#define USE_DEFAULTMSB 0#define USE_DEFAULTLSB 0#define START_UNIT_CODE 0x01#define STOP_UNIT_CODE 0x00typedef struct _SENSE_DATA { UCHAR ErrorCode : 7; UCHAR Valid : 1; UCHAR SegmentNumber; UCHAR SenseKey : 4; UCHAR Reserved : 1; UCHAR IncorrectLength : 1; UCHAR EndOfMedia : 1; UCHAR FileMark : 1; UCHAR Information[4]; UCHAR AdditionalSenseLength; UCHAR CommandSpecificInformation[4]; UCHAR AdditionalSenseCode; UCHAR AdditionalSenseCodeQualifier; UCHAR FieldReplaceableUnitCode; UCHAR SenseKeySpecific[3];} SENSE_DATA, *PSENSE_DATA;#define SENSE_BUFFER_SIZE 18/* Sense codes */#define SCSI_SENSE_NO_SENSE 0x00#define SCSI_SENSE_RECOVERED_ERROR 0x01#define SCSI_SENSE_NOT_READY 0x02#define SCSI_SENSE_MEDIUM_ERROR 0x03#define SCSI_SENSE_HARDWARE_ERROR 0x04#define SCSI_SENSE_ILLEGAL_REQUEST 0x05#define SCSI_SENSE_UNIT_ATTENTION 0x06#define SCSI_SENSE_DATA_PROTECT 0x07#define SCSI_SENSE_BLANK_CHECK 0x08#define SCSI_SENSE_UNIQUE 0x09#define SCSI_SENSE_COPY_ABORTED 0x0A#define SCSI_SENSE_ABORTED_COMMAND 0x0B#define SCSI_SENSE_EQUAL 0x0C#define SCSI_SENSE_VOL_OVERFLOW 0x0D#define SCSI_SENSE_MISCOMPARE 0x0E#define SCSI_SENSE_RESERVED 0x0F/* Additional tape bit */#define SCSI_ILLEGAL_LENGTH 0x20#define SCSI_EOM 0x40#define SCSI_FILE_MARK 0x80/* Additional Sense codes */#define SCSI_ADSENSE_NO_SENSE 0x00#define SCSI_ADSENSE_NO_SEEK_COMPLETE 0x02#define SCSI_ADSENSE_LUN_NOT_READY 0x04#define SCSI_ADSENSE_WRITE_ERROR 0x0C#define SCSI_ADSENSE_TRACK_ERROR 0x14#define SCSI_ADSENSE_SEEK_ERROR 0x15#define SCSI_ADSENSE_REC_DATA_NOECC 0x17#define SCSI_ADSENSE_REC_DATA_ECC 0x18#define SCSI_ADSENSE_ILLEGAL_COMMAND 0x20#define SCSI_ADSENSE_ILLEGAL_BLOCK 0x21#define SCSI_ADSENSE_INVALID_CDB 0x24#define SCSI_ADSENSE_INVALID_LUN 0x25#define SCSI_ADSENSE_WRITE_PROTECT 0x27#define SCSI_ADSENSE_MEDIUM_CHANGED 0x28#define SCSI_ADSENSE_BUS_RESET 0x29#define SCSI_ADSENSE_INSUFFICIENT_TIME_FOR_OPERATION 0x2E#define SCSI_ADSENSE_INVALID_MEDIA 0x30#define SCSI_ADSENSE_NO_MEDIA_IN_DEVICE 0x3a#define SCSI_ADSENSE_POSITION_ERROR 0x3b#define SCSI_ADSENSE_OPERATOR_REQUEST 0x5a#define SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 0x5d#define SCSI_ADSENSE_ILLEGAL_MODE_FOR_THIS_TRACK 0x64#define SCSI_ADSENSE_COPY_PROTECTION_FAILURE 0x6f#define SCSI_ADSENSE_POWER_CALIBRATION_ERROR 0x73#define SCSI_ADSENSE_VENDOR_UNIQUE 0x80#define SCSI_ADSENSE_MUSIC_AREA 0xA0#define SCSI_ADSENSE_DATA_AREA 0xA1#define SCSI_ADSENSE_VOLUME_OVERFLOW 0xA7#define SCSI_SENSEQ_CAUSE_NOT_REPORTABLE 0x00#define SCSI_SENSEQ_BECOMING_READY 0x01#define SCSI_SENSEQ_INIT_COMMAND_REQUIRED 0x02#define SCSI_SENSEQ_MANUAL_INTERVENTION_REQUIRED 0x03#define SCSI_SENSEQ_FORMAT_IN_PROGRESS 0x04#define SCSI_SENSEQ_REBUILD_IN_PROGRESS 0x05#define SCSI_SENSEQ_RECALCULATION_IN_PROGRESS 0x06#define SCSI_SENSEQ_OPERATION_IN_PROGRESS 0x07#define SCSI_SENSEQ_LONG_WRITE_IN_PROGRESS 0x08#define SCSI_SENSEQ_LOSS_OF_STREAMING 0x09#define SCSI_SENSEQ_PADDING_BLOCKS_ADDED 0x0A#define FILE_DEVICE_SCSI 0x0000001b#define IOCTL_SCSI_EXECUTE_IN ((FILE_DEVICE_SCSI << 16) + 0x0011)#define IOCTL_SCSI_EXECUTE_OUT ((FILE_DEVICE_SCSI << 16) + 0x0012)#define IOCTL_SCSI_EXECUTE_NONE ((FILE_DEVICE_SCSI << 16) + 0x0013)/* SMART support in ATAPI */#define IOCTL_SCSI_MINIPORT_SMART_VERSION ((FILE_DEVICE_SCSI << 16) + 0x0500)#define IOCTL_SCSI_MINIPORT_IDENTIFY ((FILE_DEVICE_SCSI << 16) + 0x0501)#define IOCTL_SCSI_MINIPORT_READ_SMART_ATTRIBS ((FILE_DEVICE_SCSI << 16) + 0x0502)#define IOCTL_SCSI_MINIPORT_READ_SMART_THRESHOLDS ((FILE_DEVICE_SCSI << 16) + 0x0503)#define IOCTL_SCSI_MINIPORT_ENABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0504)#define IOCTL_SCSI_MINIPORT_DISABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0505)#define IOCTL_SCSI_MINIPORT_RETURN_STATUS ((FILE_DEVICE_SCSI << 16) + 0x0506)#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTOSAVE ((FILE_DEVICE_SCSI << 16) + 0x0507)#define IOCTL_SCSI_MINIPORT_SAVE_ATTRIBUTE_VALUES ((FILE_DEVICE_SCSI << 16) + 0x0508)#define IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS ((FILE_DEVICE_SCSI << 16) + 0x0509)#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTO_OFFLINE ((FILE_DEVICE_SCSI << 16) + 0x050a)#define IOCTL_SCSI_MINIPORT_READ_SMART_LOG ((FILE_DEVICE_SCSI << 16) + 0x050b)#define IOCTL_SCSI_MINIPORT_WRITE_SMART_LOG ((FILE_DEVICE_SCSI << 16) + 0x050c)/* CLUSTER support */#define IOCTL_SCSI_MINIPORT_NOT_QUORUM_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0520)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -