|
|
1.1 ! root 1: typedef struct _SCSI_PASS_THROUGH_WITH_BUFFERS { ! 2: SCSI_PASS_THROUGH spt; ! 3: ULONG Filler; // realign buffers to double word boundary ! 4: UCHAR ucSenseBuf[32]; ! 5: UCHAR ucDataBuf[512]; ! 6: } SCSI_PASS_THROUGH_WITH_BUFFERS, *PSCSI_PASS_THROUGH_WITH_BUFFERS; ! 7: ! 8: typedef struct _SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER { ! 9: SCSI_PASS_THROUGH_DIRECT sptd; ! 10: ULONG Filler; // realign buffer to double word boundary ! 11: UCHAR ucSenseBuf[32]; ! 12: } SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, *PSCSI_PASS_THROUGH_DIRECT_WITH_BUFFER; ! 13: ! 14: VOID ! 15: PrintError(ULONG); ! 16: ! 17: VOID ! 18: PrintDataBuffer(PUCHAR, ULONG); ! 19: ! 20: VOID ! 21: PrintInquiryData(PVOID); ! 22: ! 23: PUCHAR ! 24: AllocateAlignedBuffer(ULONG, ULONG); ! 25: ! 26: VOID ! 27: PrintStatusResults(BOOLEAN, DWORD, PSCSI_PASS_THROUGH_WITH_BUFFERS, ULONG); ! 28: ! 29: VOID ! 30: PrintSenseInfo(PSCSI_PASS_THROUGH_WITH_BUFFERS); ! 31: ! 32: // ! 33: // Command Descriptor Block constants. ! 34: // ! 35: ! 36: #define CDB6GENERIC_LENGTH 6 ! 37: #define CDB10GENERIC_LENGTH 10 ! 38: ! 39: #define SETBITON 1 ! 40: #define SETBITOFF 0 ! 41: // ! 42: // Mode Sense/Select page constants. ! 43: // ! 44: ! 45: #define MODE_PAGE_ERROR_RECOVERY 0x01 ! 46: #define MODE_PAGE_DISCONNECT 0x02 ! 47: #define MODE_PAGE_FORMAT_DEVICE 0x03 ! 48: #define MODE_PAGE_RIGID_GEOMETRY 0x04 ! 49: #define MODE_PAGE_FLEXIBILE 0x05 ! 50: #define MODE_PAGE_VERIFY_ERROR 0x07 ! 51: #define MODE_PAGE_CACHING 0x08 ! 52: #define MODE_PAGE_PERIPHERAL 0x09 ! 53: #define MODE_PAGE_CONTROL 0x0A ! 54: #define MODE_PAGE_MEDIUM_TYPES 0x0B ! 55: #define MODE_PAGE_NOTCH_PARTITION 0x0C ! 56: #define MODE_SENSE_RETURN_ALL 0x3f ! 57: #define MODE_SENSE_CURRENT_VALUES 0x00 ! 58: #define MODE_SENSE_CHANGEABLE_VALUES 0x40 ! 59: #define MODE_SENSE_DEFAULT_VAULES 0x80 ! 60: #define MODE_SENSE_SAVED_VALUES 0xc0 ! 61: #define MODE_PAGE_DEVICE_CONFIG 0x10 ! 62: #define MODE_PAGE_MEDIUM_PARTITION 0x11 ! 63: #define MODE_PAGE_DATA_COMPRESS 0x0f ! 64: ! 65: // ! 66: // SCSI CDB operation codes ! 67: // ! 68: ! 69: #define SCSIOP_TEST_UNIT_READY 0x00 ! 70: #define SCSIOP_REZERO_UNIT 0x01 ! 71: #define SCSIOP_REWIND 0x01 ! 72: #define SCSIOP_REQUEST_BLOCK_ADDR 0x02 ! 73: #define SCSIOP_REQUEST_SENSE 0x03 ! 74: #define SCSIOP_FORMAT_UNIT 0x04 ! 75: #define SCSIOP_READ_BLOCK_LIMITS 0x05 ! 76: #define SCSIOP_REASSIGN_BLOCKS 0x07 ! 77: #define SCSIOP_READ6 0x08 ! 78: #define SCSIOP_RECEIVE 0x08 ! 79: #define SCSIOP_WRITE6 0x0A ! 80: #define SCSIOP_PRINT 0x0A ! 81: #define SCSIOP_SEND 0x0A ! 82: #define SCSIOP_SEEK6 0x0B ! 83: #define SCSIOP_TRACK_SELECT 0x0B ! 84: #define SCSIOP_SLEW_PRINT 0x0B ! 85: #define SCSIOP_SEEK_BLOCK 0x0C ! 86: #define SCSIOP_PARTITION 0x0D ! 87: #define SCSIOP_READ_REVERSE 0x0F ! 88: #define SCSIOP_WRITE_FILEMARKS 0x10 ! 89: #define SCSIOP_FLUSH_BUFFER 0x10 ! 90: #define SCSIOP_SPACE 0x11 ! 91: #define SCSIOP_INQUIRY 0x12 ! 92: #define SCSIOP_VERIFY6 0x13 ! 93: #define SCSIOP_RECOVER_BUF_DATA 0x14 ! 94: #define SCSIOP_MODE_SELECT 0x15 ! 95: #define SCSIOP_RESERVE_UNIT 0x16 ! 96: #define SCSIOP_RELEASE_UNIT 0x17 ! 97: #define SCSIOP_COPY 0x18 ! 98: #define SCSIOP_ERASE 0x19 ! 99: #define SCSIOP_MODE_SENSE 0x1A ! 100: #define SCSIOP_START_STOP_UNIT 0x1B ! 101: #define SCSIOP_STOP_PRINT 0x1B ! 102: #define SCSIOP_LOAD_UNLOAD 0x1B ! 103: #define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C ! 104: #define SCSIOP_SEND_DIAGNOSTIC 0x1D ! 105: #define SCSIOP_MEDIUM_REMOVAL 0x1E ! 106: #define SCSIOP_READ_CAPACITY 0x25 ! 107: #define SCSIOP_READ 0x28 ! 108: #define SCSIOP_WRITE 0x2A ! 109: #define SCSIOP_SEEK 0x2B ! 110: #define SCSIOP_LOCATE 0x2B ! 111: #define SCSIOP_WRITE_VERIFY 0x2E ! 112: #define SCSIOP_VERIFY 0x2F ! 113: #define SCSIOP_SEARCH_DATA_HIGH 0x30 ! 114: #define SCSIOP_SEARCH_DATA_EQUAL 0x31 ! 115: #define SCSIOP_SEARCH_DATA_LOW 0x32 ! 116: #define SCSIOP_SET_LIMITS 0x33 ! 117: #define SCSIOP_READ_POSITION 0x34 ! 118: #define SCSIOP_SYNCHRONIZE_CACHE 0x35 ! 119: #define SCSIOP_COMPARE 0x39 ! 120: #define SCSIOP_COPY_COMPARE 0x3A ! 121: #define SCSIOP_WRITE_DATA_BUFF 0x3B ! 122: #define SCSIOP_READ_DATA_BUFF 0x3C ! 123: #define SCSIOP_CHANGE_DEFINITION 0x40 ! 124: #define SCSIOP_READ_SUB_CHANNEL 0x42 ! 125: #define SCSIOP_READ_TOC 0x43 ! 126: #define SCSIOP_READ_HEADER 0x44 ! 127: #define SCSIOP_PLAY_AUDIO 0x45 ! 128: #define SCSIOP_PLAY_AUDIO_MSF 0x47 ! 129: #define SCSIOP_PLAY_TRACK_INDEX 0x48 ! 130: #define SCSIOP_PLAY_TRACK_RELATIVE 0x49 ! 131: #define SCSIOP_PAUSE_RESUME 0x4B ! 132: #define SCSIOP_LOG_SELECT 0x4C ! 133: #define SCSIOP_LOG_SENSE 0x4D ! 134:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.