📄 logscsi.cpp
字号:
/***********************************************************************
Copyright 2002 Ben Rudiak-Gould.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA,
or visit <http://www.gnu.org/copyleft/gpl.html>.
***********************************************************************/
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#pragma hdrstop
#include <windowsx.h>
#include <commdlg.h>
#include <process.h>
#include "ui.h"
#include "logscsi.h"
#include "resource.h"
#include <stdio.h>
HINSTANCE g_hinstance;
DvsDockingBayGlobal* g_callbacks;
const char vendor_specific[] = "vendor-specific";
const char undefined[] = "unknown";
const char* scsi_command_names_00_5D[] = {
/*00*/ "TEST UNIT READY",
/*01*/ "REZERO UNIT",
/*02*/ vendor_specific,
/*03*/ "REQUEST SENSE",
/*04*/ "FORMAT UNIT",
/*05*/ "READ BLOCK LIMITS",
/*06*/ vendor_specific,
/*07*/ "REASSIGN BLOCKS",
/*08*/ "READ(6)",
/*09*/ vendor_specific,
/*0A*/ "WRITE(6)",
/*0B*/ "SEEK(6)",
/*0C*/ vendor_specific,
/*0D*/ vendor_specific,
/*0E*/ vendor_specific,
/*0F*/ vendor_specific,
/*10*/ "SYNCHRONIZE BUFFER / WRITE FILEMARKS",
/*11*/ "SPACE",
/*12*/ "INQUIRY",
/*13*/ "VERIFY(6)",
/*14*/ "RECOVER BUFFERED DATA",
/*15*/ "MODE SELECT(6)",
/*16*/ "RESERVE",
/*17*/ "RELEASE",
/*18*/ "COPY",
/*19*/ "ERASE",
/*1A*/ "MODE SENSE(06)",
/*1B*/ "STOP/START UNIT",
/*1C*/ "RECEIVE DIAGNOSTIC RESULTS",
/*1D*/ "SEND DIAGNOSTIC",
/*1E*/ "PREVENT/ALLOW MEDIUM REMOVAL",
/*1F*/ undefined,
/*20*/ vendor_specific,
/*21*/ vendor_specific,
/*22*/ vendor_specific,
/*23*/ "READ FORMAT CAPACITIES",
/*24*/ "SET WINDOW",
/*25*/ "READ CAPACITY",
/*26*/ vendor_specific,
/*27*/ vendor_specific,
/*28*/ "READ(10)",
/*29*/ "READ GENERATION",
/*2A*/ "WRITE(10)",
/*2B*/ "SEEK(10)",
/*2C*/ "ERASE(10)",
/*2D*/ "READ UPDATED BLOCK",
/*2E*/ "WRITE AND VERIFY(10)",
/*2F*/ "VERIFY(10)",
/*30*/ "SEARCH DATA HIGH(10)",
/*31*/ "SEARCH DATA EQUAL(10)",
/*32*/ "SEARCH DATA LOW(10)",
/*33*/ "SET LIMITS(10)",
/*34*/ "PRE-FETCH",
/*35*/ "SYNCHRONIZE CACHE",
/*36*/ "LOCK/UNLOCK CACHE",
/*37*/ "READ DEFECT DATA(10)",
/*38*/ "MEDIUM SCAN",
/*39*/ "COMPARE",
/*3A*/ "COPY AND VERIFY",
/*3B*/ "WRITE BUFFER",
/*3C*/ "READ BUFFER",
/*3D*/ "UPDATE BLOCK",
/*3E*/ "READ LONG",
/*3F*/ "WRITE LONG",
/*40*/ "CHANGE DEFINITION",
/*41*/ "WRITE SAME",
/*42*/ "READ SUB-CHANNEL",
/*43*/ "READ TOC/PMA/ATIP",
/*44*/ "READ HEADER",
/*45*/ "PLAY AUDIO(10)",
/*46*/ "GET CONFIGURATION",
/*47*/ "PLAY AUDIO MSF",
/*48*/ "PLAY AUDIO TRACK INDEX",
/*49*/ "PLAY TRACK RELATIVE(10)",
/*4A*/ "GET EVENT/STATUS NOTIFICATION",
/*4B*/ "PAUSE/RESUME",
/*4C*/ "LOG SELECT",
/*4D*/ "LOG SENSE",
/*4E*/ "STOP PLAY/SCAN",
/*4F*/ undefined,
/*50*/ undefined,
/*51*/ "READ DISC INFORMATION",
/*52*/ "READ TRACK/RZONE INFORMATION",
/*53*/ "RESERVE TRACK",
/*54*/ "SEND OPC INFORMATION",
/*55*/ "MODE SELECT(10)",
/*56*/ "RESERVE(10)",
/*57*/ "RELEASE(10)",
/*58*/ "REPAIR TRACK",
/*59*/ "READ MASTER CUE",
/*5A*/ "MODE SENSE(10)",
/*5B*/ "CLOSE TRACK/SESSION",
/*5C*/ "READ BUFFER CAPACITY",
/*5D*/ "SEND CUE SHEET",
};
const char* scsi_command_names_A0_BF[] = {
/*A0*/ "REPORT LUNS",
/*A1*/ "BLANK",
/*A2*/ "VERIFY(12) / SEND EVENT",
/*A3*/ "SEND KEY",
/*A4*/ "REPORT KEY",
/*A5*/ "PLAY AUDIO(12)",
/*A6*/ "LOAD/UNLOAD MEDIUM",
/*A7*/ "SET READ-AHEAD",
/*A8*/ "READ(12)",
/*A9*/ "PLAY TRACK RELATIVE(12)",
/*AA*/ "WRITE(12)",
/*AB*/ undefined,
/*AC*/ "ERASE(12) / GET PERFORMANCE",
/*AD*/ "READ DVD STRUCTURE",
/*AE*/ "WRITE AND VERIFY(12)",
/*AF*/ "VERIFY(12)",
/*B0*/ "SEARCH DATA HIGH(12)",
/*B1*/ "SEARCH DATA EQUAL(12)",
/*B2*/ "SEARCH DATA LOW(12)",
/*B3*/ "SET LIMITS(12)",
/*B4*/ undefined,
/*B5*/ "REQUEST VOLUME ELEMENT ADDRESS",
/*B6*/ "SEND VOLUME TAG / SET STREAMING",
/*B7*/ "READ DEFECT DATA(12)",
/*B8*/ "READ ELEMENT STATUS",
/*B9*/ "READ CD MSF",
/*BA*/ "SCAN",
/*BB*/ "SET CD SPEED",
/*BC*/ "PLAY CD",
/*BD*/ "MECHANISM STATUS",
/*BE*/ "READ CD",
/*BF*/ "SEND DVD STRUCTURE",
};
const char* srb_status_names[] = {
/*00*/ "SRB_STATUS_PENDING",
/*01*/ "SUCCESS",
/*02*/ "SRB_STATUS_ABORTED",
/*03*/ "SRB_STATUS_ABORT_FAILED",
/*04*/ "ERROR",
/*05*/ "SRB_STATUS_BUSY",
/*06*/ "SRB_STATUS_INVALID_REQUEST",
/*07*/ "SRB_STATUS_INVALID_PATH_ID",
/*08*/ "SRB_STATUS_NO_DEVICE",
/*09*/ "SRB_STATUS_TIMEOUT",
/*0A*/ "SRB_STATUS_SELECTION_TIMEOUT",
/*0B*/ "SRB_STATUS_COMMAND_TIMEOUT",
/*0C*/ 0,
/*0D*/ "SRB_STATUS_MESSAGE_REJECTED",
/*0E*/ "SRB_STATUS_BUS_RESET",
/*0F*/ "SRB_STATUS_PARITY_ERROR",
/*10*/ "SRB_STATUS_REQUEST_SENSE_FAILED",
/*11*/ "SRB_STATUS_NO_HBA",
/*12*/ "SRB_STATUS_DATA_OVERRUN",
/*13*/ "SRB_STATUS_UNEXPECTED_BUS_FREE",
/*14*/ "SRB_STATUS_PHASE_SEQUENCE_FAILURE",
/*15*/ "SRB_STATUS_BAD_SRB_BLOCK_LENGTH",
/*16*/ "SRB_STATUS_REQUEST_FLUSHED",
/*17*/ 0,
/*18*/ 0,
/*19*/ 0,
/*1A*/ 0,
/*1B*/ 0,
/*1C*/ 0,
/*1D*/ 0,
/*1E*/ 0,
/*1F*/ 0,
/*20*/ "SRB_STATUS_INVALID_LUN",
/*21*/ "SRB_STATUS_INVALID_TARGET_ID",
/*22*/ "SRB_STATUS_BAD_FUNCTION",
/*23*/ "SRB_STATUS_ERROR_RECOVERY",
/*24*/ "SRB_STATUS_NOT_POWERED"
};
const char* target_status_names[] = {
/*00*/ "GOOD",
/*02*/ "CHECK CONDITION",
/*04*/ "CONDITION MET",
/*06*/ 0,
/*08*/ "BUSY",
/*0A*/ 0,
/*0C*/ 0,
/*0E*/ 0,
/*10*/ "INTERMEDIATE",
/*12*/ 0,
/*14*/ "INTERMEDIATE COND MET",
/*16*/ 0,
/*18*/ "RESERVATION CONFLICT",
/*1A*/ 0,
/*1C*/ 0,
/*1E*/ 0,
/*20*/ 0,
/*22*/ "COMMAND TERMINATED",
/*24*/ 0,
/*26*/ 0,
/*28*/ "QUEUE FULL"
};
const char* sense_key_names[] = {
"NO SENSE",
"RECOVERED ERROR",
"NOT READY",
"MEDIUM ERROR",
"HARDWARE ERROR",
"ILLEGAL REQUEST",
"UNIT ATTENTION",
"DATA PROTECT",
"BLANK CHECK",
"VENDOR-SPECIFIC",
"COPY ABORTED",
"ABORTED COMMAND",
"EQUAL",
"VOLUME OVERFLOW",
"MISCOMPARE",
"RESERVED"
};
struct { scsi_result_t result; const char* text; }
result_code_names[] = {
{ 0x00000, "NO ADDITIONAL SENSE INFORMATION" },
{ 0x00001, "FILEMARK DETECTED" },
{ 0x00002, "END-OF-PARTITION/MEDIUM DETECTED" },
{ 0x00003, "SETMARK DETECTED" },
{ 0x00004, "BEGINNING-OF-PARTITION/MEDIUM DETECTED" },
{ 0x00005, "END-OF-DATA DETECTED" },
{ 0x00011, "AUDIO PLAY OPERATION IN PROGRESS" },
{ 0x00012, "AUDIO PLAY OPERATION PAUSED" },
{ 0x00013, "AUDIO PLAY OPERATION SUCCESSFULLY COMPLETED" },
{ 0x00014, "AUDIO PLAY OPERATION STOPPED DUE TO ERROR" },
{ 0x00015, "NO CURRENT AUDIO STATUS TO RETURN" },
{ 0x00016, "OPERATION IN PROGRESS" },
{ 0x10B00, "WARNING" },
{ 0x10B01, "WARNING - SPECIFIED TEMPERATURE EXCEEDED" },
{ 0x10B02, "WARNING - ENCLOSURE DEGRADED" },
{ 0x10C0A, "WRITE ERROR - PADDING BLOCKS ADDED" },
{ 0x11700, "RECOVERED DATA WITH NO ERROR CORRECTION APPLIED" },
{ 0x11701, "RECOVERED DATA WITH RETRIES" },
{ 0x11702, "RECOVERED DATA WITH POSITIVE HEAD OFFSET" },
{ 0x11703, "RECOVERED DATA WITH NEGATIVE HEAD OFFSET" },
{ 0x11704, "RECOVERED DATA WITH RETRIES AND/OR CIRC APPLIED" },
{ 0x11705, "RECOVERED DATA USING PREVIOUS SECTOR ID" },
{ 0x11706, "RECOVERED DATA WITHOUT ECC - DATA AUTO-REALLOCATED" },
{ 0x11707, "RECOVERED DATA WITHOUT ECC - RECOMMEND REASSIGNMENT" },
{ 0x11708, "RECOVERED DATA WITHOUT ECC - RECOMMEND REWRITE" },
{ 0x11709, "RECOVERED DATA WITHOUT ECC - DATA REWRITTEN" },
{ 0x11800, "RECOVERED DATA WITH ERROR CORRECTION APPLIED" },
{ 0x11801, "RECOVERED DATA WITH ERROR CORR. & RETRIES APPLIED" },
{ 0x11802, "RECOVERED DATA - DATA AUTO-REALLOCATED" },
{ 0x11803, "RECOVERED DATA WITH CIRC" },
{ 0x11804, "RECOVERED DATA WITH L-EC" },
{ 0x11805, "RECOVERED DATA - RECOMMEND REASSIGNMENT" },
{ 0x11806, "RECOVERED DATA - RECOMMEND REWRITE" },
{ 0x11807, "RECOVERED DATA WITH ECC - DATA REWRITTEN" },
{ 0x11808, "RECOVERED DATA WITH LINKING" },
{ 0x11E00, "RECOVERED ID WITH ECC CORRECTION" },
{ 0x13700, "ROUNDED PARAMETER" },
{ 0x15D00, "FAILURE PREDICTION THRESHOLD EXCEEDED - PREDICTED LOGICAL UNIT FAILURE" },
{ 0x15D01, "FAILURE PREDICTION THRESHOLD EXCEEDED - PREDICTED MEDIA FAILURE" },
{ 0x15D02, "LOGICAL UNIT FAILURE PREDICTION THRESHOLD EXCEEDED" },
{ 0x15DFF, "FAILURE PREDICTION THRESHOLD EXCEEDED (FALSE)" },
{ 0x16A00, "INFORMATIONAL, REFER TO LOG" },
{ 0x17301, "POWER CALIBRATION AREA ALMOST FULL" },
{ 0x17306, "PROGRAM MEMORY AREA/RMA IS (ALMOST) FULL" },
{ 0x20400, "LOGICAL UNIT NOT READY, CAUSE NOT REPORTABLE" },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -