REFACTOR: All refactor in DiscImageChef.Devices.

This commit is contained in:
2017-12-22 03:13:43 +00:00
parent 49144eeb01
commit e87e058a11
40 changed files with 671 additions and 854 deletions

View File

@@ -67,7 +67,6 @@ namespace DiscImageChef.Devices
buffer = new byte[8];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.AdaptecTranslate;
cdb[1] = (byte)((lba & 0x1F0000) >> 16);
@@ -76,7 +75,7 @@ namespace DiscImageChef.Devices
if(drive1) cdb[1] += 0x20;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "ADAPTEC TRANSLATE took {0} ms.", duration);
@@ -113,14 +112,13 @@ namespace DiscImageChef.Devices
buffer[0] = threshold;
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.AdaptecSetErrorThreshold;
if(drive1) cdb[1] += 0x20;
cdb[4] = 1;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.Out, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "ADAPTEC SET ERROR THRESHOLD took {0} ms.", duration);
@@ -155,14 +153,13 @@ namespace DiscImageChef.Devices
buffer = new byte[9];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.AdaptecTranslate;
if(drive1) cdb[1] += 0x20;
cdb[4] = (byte)buffer.Length;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "ADAPTEC READ/RESET USAGE COUNTER took {0} ms.", duration);
@@ -180,17 +177,15 @@ namespace DiscImageChef.Devices
public bool AdaptecWriteBuffer(byte[] buffer, out byte[] senseBuffer, uint timeout, out double duration)
{
byte[] oneKBuffer = new byte[1024];
if(buffer.Length < 1024) Array.Copy(buffer, 0, oneKBuffer, 0, buffer.Length);
else Array.Copy(buffer, 0, oneKBuffer, 0, 1024);
Array.Copy(buffer, 0, oneKBuffer, 0, buffer.Length < 1024 ? buffer.Length : 1024);
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.AdaptecWriteBuffer;
LastError = SendScsiCommand(cdb, ref oneKBuffer, out senseBuffer, timeout, ScsiDirection.Out, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "ADAPTEC WRITE DATA BUFFER took {0} ms.", duration);
@@ -210,12 +205,11 @@ namespace DiscImageChef.Devices
buffer = new byte[1024];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.AdaptecReadBuffer;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "ADAPTEC READ DATA BUFFER took {0} ms.", duration);

View File

@@ -50,7 +50,6 @@ namespace DiscImageChef.Devices
buffer = new byte[3];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.ArchiveRequestBlockAddress;
cdb[1] = (byte)((lba & 0x1F0000) >> 16);
@@ -59,7 +58,7 @@ namespace DiscImageChef.Devices
cdb[4] = 3;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "ARCHIVE CORP. REQUEST BLOCK ADDRESS took {0} ms.", duration);
@@ -93,7 +92,6 @@ namespace DiscImageChef.Devices
byte[] buffer = new byte[0];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.ArchiveSeekBlock;
cdb[1] = (byte)((lba & 0x1F0000) >> 16);
@@ -102,7 +100,7 @@ namespace DiscImageChef.Devices
if(immediate) cdb[1] += 0x01;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "ARCHIVE CORP. SEEK BLOCK took {0} ms.", duration);

View File

@@ -30,10 +30,12 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using DiscImageChef.Console;
namespace DiscImageChef.Devices
{
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public partial class Device
{
/// <summary>
@@ -70,13 +72,12 @@ namespace DiscImageChef.Devices
byte[] buffer = new byte[0];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.CertanceParkUnpark;
if(park) cdb[4] = 1;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "CERTANCE PARK UNPARK took {0} ms.", duration);

View File

@@ -48,7 +48,6 @@ namespace DiscImageChef.Devices
bool displayLen = false;
bool halfMsg = false;
byte[] cdb = new byte[10];
bool sense;
if(!string.IsNullOrWhiteSpace(firstHalf))
{
@@ -67,10 +66,7 @@ namespace DiscImageChef.Devices
displayLen = true;
else if(!ArrayHelpers.ArrayIsNullOrWhiteSpace(firstHalfBytes) &&
ArrayHelpers.ArrayIsNullOrWhiteSpace(secondHalfBytes))
{
displayLen = false;
halfMsg = true;
}
buffer[0] = (byte)((byte)mode << 5);
if(displayLen) buffer[0] += 0x10;
@@ -85,7 +81,7 @@ namespace DiscImageChef.Devices
cdb[6] = (byte)buffer.Length;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.Out, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "FUJITSU DISPLAY took {0} ms.", duration);

View File

@@ -52,7 +52,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
buffer = new byte[2064 * transferLength];
bool sense;
cdb[0] = (byte)ScsiCommands.HlDtStVendor;
cdb[1] = 0x48;
@@ -67,7 +66,7 @@ namespace DiscImageChef.Devices
cdb[11] = (byte)(buffer.Length & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "HL-DT-ST READ DVD (RAW) took {0} ms.", duration);

View File

@@ -75,7 +75,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadLong;
if(relAddr) cdb[1] += 0x01;
@@ -88,11 +87,10 @@ namespace DiscImageChef.Devices
if(pba) cdb[9] += 0x80;
if(sectorCount) cdb[9] += 0x40;
if(sectorCount) buffer = new byte[blockBytes * transferLen];
else buffer = new byte[transferLen];
buffer = sectorCount ? new byte[blockBytes * transferLen] : new byte[transferLen];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "HP READ LONG took {0} ms.", duration);

View File

@@ -49,7 +49,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
byte[] buffer = new byte[0];
bool sense;
cdb[0] = (byte)ScsiCommands.KreonCommand;
cdb[1] = 0x08;
@@ -57,7 +56,7 @@ namespace DiscImageChef.Devices
cdb[3] = 0x01;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "KREON DEPRECATED UNLOCK took {0} ms.", duration);
@@ -114,7 +113,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
byte[] buffer = new byte[0];
bool sense;
cdb[0] = (byte)ScsiCommands.KreonCommand;
cdb[1] = 0x08;
@@ -123,7 +121,7 @@ namespace DiscImageChef.Devices
cdb[4] = (byte)state;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "KREON SET LOCK STATE took {0} ms.", duration);
@@ -145,7 +143,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
byte[] buffer = new byte[26];
bool sense;
features = 0;
cdb[0] = (byte)ScsiCommands.KreonCommand;
@@ -154,7 +151,7 @@ namespace DiscImageChef.Devices
cdb[3] = 0x10;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "KREON GET FEATURE LIST took {0} ms.", duration);
@@ -222,7 +219,6 @@ namespace DiscImageChef.Devices
buffer = new byte[2048];
byte[] cdb = new byte[12];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.KreonSsCommand;
cdb[1] = 0x00;
@@ -238,7 +234,7 @@ namespace DiscImageChef.Devices
cdb[11] = 0xC0;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "KREON EXTRACT SS took {0} ms.", duration);

View File

@@ -83,7 +83,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
buffer = new byte[8];
bool sense;
cdb[0] = (byte)ScsiCommands.GetConfiguration;
cdb[1] = (byte)((byte)rt & 0x03);
@@ -94,7 +93,7 @@ namespace DiscImageChef.Devices
cdb[9] = 0;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
if(sense) return true;
@@ -134,7 +133,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
buffer = new byte[8];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadDiscStructure;
cdb[1] = (byte)((byte)mediaType & 0x0F);
@@ -149,7 +147,7 @@ namespace DiscImageChef.Devices
cdb[10] = (byte)((agid & 0x03) << 6);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
if(sense) return true;
@@ -297,11 +295,8 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
byte[] tmpBuffer;
bool sense;
if((format & 0x0F) == 5) tmpBuffer = new byte[32768];
else tmpBuffer = new byte[1024];
byte[] tmpBuffer = (format & 0x0F) == 5 ? new byte[32768] : new byte[1024];
cdb[0] = (byte)ScsiCommands.ReadTocPmaAtip;
if(msf) cdb[1] = 0x02;
@@ -311,7 +306,7 @@ namespace DiscImageChef.Devices
cdb[8] = (byte)(tmpBuffer.Length & 0xFF);
LastError = SendScsiCommand(cdb, ref tmpBuffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
uint strctLength = (uint)((tmpBuffer[0] << 8) + tmpBuffer[1] + 2);
@@ -364,7 +359,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
byte[] tmpBuffer = new byte[804];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadDiscInformation;
cdb[1] = (byte)dataType;
@@ -372,7 +366,7 @@ namespace DiscImageChef.Devices
cdb[8] = (byte)(tmpBuffer.Length & 0xFF);
LastError = SendScsiCommand(cdb, ref tmpBuffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
uint strctLength = (uint)((tmpBuffer[0] << 8) + tmpBuffer[1] + 2);
@@ -411,7 +405,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadCd;
cdb[1] = (byte)((byte)expectedSectorType << 2);
@@ -434,7 +427,7 @@ namespace DiscImageChef.Devices
buffer = new byte[blockSize * transferLength];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ CD took {0} ms.", duration);
@@ -468,7 +461,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadCdMsf;
cdb[1] = (byte)((byte)expectedSectorType << 2);
@@ -491,7 +483,7 @@ namespace DiscImageChef.Devices
buffer = new byte[blockSize * transferLength];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ CD MSF took {0} ms.", duration);
@@ -515,14 +507,13 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
byte[] buffer = new byte[0];
bool sense;
cdb[0] = (byte)ScsiCommands.PreventAllowMediumRemoval;
if(prevent) cdb[4] += 0x01;
if(persistent) cdb[4] += 0x02;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PREVENT ALLOW MEDIUM REMOVAL took {0} ms.", duration);
@@ -556,7 +547,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
byte[] buffer = new byte[0];
bool sense;
cdb[0] = (byte)ScsiCommands.StartStopUnit;
if(immediate) cdb[1] += 0x01;
@@ -573,7 +563,7 @@ namespace DiscImageChef.Devices
cdb[4] += (byte)((powerConditions & 0x0F) << 4);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "START STOP UNIT took {0} ms.", duration);

View File

@@ -51,7 +51,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
bool sense;
cdb[0] = (byte)ScsiCommands.NecReadCdDa;
cdb[2] = (byte)((lba & 0xFF000000) >> 24);
@@ -64,7 +63,7 @@ namespace DiscImageChef.Devices
buffer = new byte[2352 * transferLength];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ CD-DA took {0} ms.", duration);

View File

@@ -54,7 +54,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadCdDa;
cdb[2] = (byte)((lba & 0xFF000000) >> 24);
@@ -69,7 +68,7 @@ namespace DiscImageChef.Devices
buffer = new byte[blockSize * transferLength];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PIONEER READ CD-DA took {0} ms.", duration);
@@ -94,7 +93,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadCdDaMsf;
cdb[3] = (byte)((startMsf & 0xFF0000) >> 16);
@@ -109,7 +107,7 @@ namespace DiscImageChef.Devices
buffer = new byte[blockSize * transferLength];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PIONEER READ CD-DA MSF took {0} ms.", duration);
@@ -134,7 +132,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadCdXa;
cdb[2] = (byte)((lba & 0xFF000000) >> 24);
@@ -162,7 +159,7 @@ namespace DiscImageChef.Devices
}
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PIONEER READ CD-XA took {0} ms.", duration);

View File

@@ -92,7 +92,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
bool sense;
cdb[0] = (byte)ScsiCommands.PlasmonReadSectorLocation;
cdb[2] = (byte)((address & 0xFF000000) >> 24);
@@ -104,7 +103,7 @@ namespace DiscImageChef.Devices
buffer = new byte[8];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLASMON READ SECTOR LOCATION took {0} ms.", duration);

View File

@@ -55,7 +55,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadCdDa;
cdb[2] = (byte)((lba & 0xFF000000) >> 24);
@@ -71,7 +70,7 @@ namespace DiscImageChef.Devices
buffer = new byte[blockSize * transferLength];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ CD-DA took {0} ms.", duration);
@@ -95,7 +94,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
buffer = new byte[2064 * transferLength];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadBuffer;
cdb[1] = 0x02;
@@ -107,7 +105,7 @@ namespace DiscImageChef.Devices
cdb[5] = (byte)(buffer.Length & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "Plextor READ DVD (RAW) took {0} ms.", duration);
@@ -128,13 +126,12 @@ namespace DiscImageChef.Devices
buffer = new byte[256];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorReadEeprom;
cdb[8] = 1;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR READ EEPROM took {0} ms.", duration);
@@ -155,13 +152,12 @@ namespace DiscImageChef.Devices
buffer = new byte[512];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorReadEeprom;
cdb[8] = 2;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR READ EEPROM took {0} ms.", duration);
@@ -185,7 +181,6 @@ namespace DiscImageChef.Devices
buffer = new byte[blockSize];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorReadEeprom;
cdb[1] = 1;
@@ -194,7 +189,7 @@ namespace DiscImageChef.Devices
cdb[9] = (byte)(blockSize & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR READ EEPROM took {0} ms.", duration);
@@ -218,7 +213,6 @@ namespace DiscImageChef.Devices
byte[] buf = new byte[10];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
selected = 0;
max = 0;
@@ -228,7 +222,7 @@ namespace DiscImageChef.Devices
cdb[9] = (byte)buf.Length;
LastError = SendScsiCommand(cdb, ref buf, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR POWEREC GET SPEEDS took {0} ms.", duration);
@@ -258,7 +252,6 @@ namespace DiscImageChef.Devices
byte[] buf = new byte[8];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
enabled = false;
speed = 0;
@@ -268,7 +261,7 @@ namespace DiscImageChef.Devices
cdb[9] = (byte)buf.Length;
LastError = SendScsiCommand(cdb, ref buf, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR POWEREC GET SPEEDS took {0} ms.", duration);
@@ -295,7 +288,6 @@ namespace DiscImageChef.Devices
buffer = new byte[8];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorExtend;
cdb[1] = (byte)PlextorSubCommands.GetMode;
@@ -304,7 +296,7 @@ namespace DiscImageChef.Devices
cdb[10] = (byte)buffer.Length;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR GET SILENT MODE took {0} ms.", duration);
@@ -325,7 +317,6 @@ namespace DiscImageChef.Devices
buffer = new byte[8];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorExtend;
cdb[1] = (byte)PlextorSubCommands.GetMode;
@@ -333,7 +324,7 @@ namespace DiscImageChef.Devices
cdb[10] = (byte)buffer.Length;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR GET GIGAREC took {0} ms.", duration);
@@ -356,7 +347,6 @@ namespace DiscImageChef.Devices
buffer = new byte[8];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorExtend;
cdb[1] = (byte)PlextorSubCommands.GetMode;
@@ -367,7 +357,7 @@ namespace DiscImageChef.Devices
else cdb[3] = 0x02;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR GET VARIREC took {0} ms.", duration);
@@ -388,14 +378,13 @@ namespace DiscImageChef.Devices
buffer = new byte[8];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorExtend;
cdb[2] = (byte)PlextorSubCommands.SecuRec;
cdb[10] = (byte)buffer.Length;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR GET SECUREC took {0} ms.", duration);
@@ -416,7 +405,6 @@ namespace DiscImageChef.Devices
buffer = new byte[8];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorExtend;
cdb[1] = (byte)PlextorSubCommands.GetMode;
@@ -424,7 +412,7 @@ namespace DiscImageChef.Devices
cdb[10] = (byte)buffer.Length;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR GET SPEEDREAD took {0} ms.", duration);
@@ -445,7 +433,6 @@ namespace DiscImageChef.Devices
buffer = new byte[8];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorExtend;
cdb[1] = (byte)PlextorSubCommands.GetMode;
@@ -453,7 +440,7 @@ namespace DiscImageChef.Devices
cdb[9] = (byte)buffer.Length;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR GET SINGLE-SESSION / HIDE CD-R took {0} ms.", duration);
@@ -476,7 +463,6 @@ namespace DiscImageChef.Devices
buffer = new byte[8];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorExtend;
cdb[1] = (byte)PlextorSubCommands.GetMode;
@@ -487,7 +473,7 @@ namespace DiscImageChef.Devices
else cdb[3] = (byte)PlextorSubCommands.BitSetR;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR GET BOOK BITSETTING took {0} ms.", duration);
@@ -509,7 +495,6 @@ namespace DiscImageChef.Devices
buffer = new byte[8];
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.PlextorExtend;
cdb[1] = (byte)PlextorSubCommands.GetMode;
@@ -517,7 +502,7 @@ namespace DiscImageChef.Devices
cdb[10] = (byte)buffer.Length;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PLEXTOR GET TEST WRITE DVD+ took {0} ms.", duration);

View File

@@ -69,7 +69,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
bool sense;
cdb[0] = (byte)ScsiCommands.Read6;
cdb[1] = (byte)((lba & 0x1F0000) >> 16);
@@ -81,7 +80,7 @@ namespace DiscImageChef.Devices
else buffer = new byte[transferLength * blockSize];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ (6) took {0} ms.", duration);
@@ -112,7 +111,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
bool sense;
cdb[0] = (byte)ScsiCommands.Read10;
cdb[1] = (byte)((rdprotect & 0x07) << 5);
@@ -131,7 +129,7 @@ namespace DiscImageChef.Devices
buffer = new byte[transferLength * blockSize];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ (10) took {0} ms.", duration);
@@ -163,7 +161,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
bool sense;
cdb[0] = (byte)ScsiCommands.Read12;
cdb[1] = (byte)((rdprotect & 0x07) << 5);
@@ -185,7 +182,7 @@ namespace DiscImageChef.Devices
buffer = new byte[transferLength * blockSize];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ (12) took {0} ms.", duration);
@@ -216,7 +213,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[16];
bool sense;
byte[] lbaBytes = BitConverter.GetBytes(lba);
cdb[0] = (byte)ScsiCommands.Read16;
@@ -242,7 +238,7 @@ namespace DiscImageChef.Devices
buffer = new byte[transferLength * blockSize];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ (16) took {0} ms.", duration);
@@ -267,7 +263,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadLong;
if(correct) cdb[1] += 0x02;
@@ -282,7 +277,7 @@ namespace DiscImageChef.Devices
buffer = new byte[transferBytes];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ LONG (10) took {0} ms.", duration);
@@ -306,7 +301,6 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[16];
bool sense;
byte[] lbaBytes = BitConverter.GetBytes(lba);
cdb[0] = (byte)ScsiCommands.ServiceActionIn;
@@ -326,7 +320,7 @@ namespace DiscImageChef.Devices
buffer = new byte[transferBytes];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ LONG (16) took {0} ms.", duration);
@@ -346,7 +340,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
byte[] buffer = new byte[0];
bool sense;
cdb[0] = (byte)ScsiCommands.Seek6;
cdb[1] = (byte)((lba & 0x1F0000) >> 16);
@@ -354,7 +347,7 @@ namespace DiscImageChef.Devices
cdb[3] = (byte)(lba & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "SEEK (6) took {0} ms.", duration);
@@ -374,7 +367,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
byte[] buffer = new byte[0];
bool sense;
cdb[0] = (byte)ScsiCommands.Seek10;
cdb[2] = (byte)((lba & 0xFF000000) >> 24);
@@ -383,7 +375,7 @@ namespace DiscImageChef.Devices
cdb[5] = (byte)(lba & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "SEEK (10) took {0} ms.", duration);

View File

@@ -57,7 +57,6 @@ namespace DiscImageChef.Devices
buffer = new byte[256];
byte[] cdb = new byte[16];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadAttribute;
cdb[1] = (byte)((byte)action & 0x1F);
@@ -75,7 +74,7 @@ namespace DiscImageChef.Devices
if(cache) cdb[14] += 0x01;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
if(sense) return true;

View File

@@ -31,11 +31,13 @@
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using DiscImageChef.Console;
using PlatformID = DiscImageChef.Interop.PlatformID;
namespace DiscImageChef.Devices
{
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public partial class Device
{
/// <summary>
@@ -70,8 +72,7 @@ namespace DiscImageChef.Devices
/// <param name="timeout">Timeout in seconds.</param>
public bool ScsiInquiry(out byte[] buffer, out byte[] senseBuffer, uint timeout)
{
double duration;
return ScsiInquiry(out buffer, out senseBuffer, timeout, out duration);
return ScsiInquiry(out buffer, out senseBuffer, timeout, out _);
}
/// <summary>
@@ -87,10 +88,9 @@ namespace DiscImageChef.Devices
buffer = new byte[36];
senseBuffer = new byte[32];
byte[] cdb = {(byte)ScsiCommands.Inquiry, 0, 0, 0, 36, 0};
bool sense;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
if(sense) return true;
@@ -145,8 +145,7 @@ namespace DiscImageChef.Devices
/// <param name="page">The Extended Vital Product Data</param>
public bool ScsiInquiry(out byte[] buffer, out byte[] senseBuffer, byte page, uint timeout)
{
double duration;
return ScsiInquiry(out buffer, out senseBuffer, page, timeout, out duration);
return ScsiInquiry(out buffer, out senseBuffer, page, timeout, out _);
}
/// <summary>
@@ -163,10 +162,9 @@ namespace DiscImageChef.Devices
buffer = new byte[36];
senseBuffer = new byte[32];
byte[] cdb = {(byte)ScsiCommands.Inquiry, 1, page, 0, 36, 0};
bool sense;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
if(sense) return true;
@@ -200,11 +198,10 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = {(byte)ScsiCommands.TestUnitReady, 0, 0, 0, 0, 0};
bool sense;
byte[] buffer = new byte[0];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "TEST UNIT READY took {0} ms.", duration);
@@ -262,7 +259,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
buffer = new byte[255];
bool sense;
cdb[0] = (byte)ScsiCommands.ModeSense;
if(dbd) cdb[1] = 0x08;
@@ -273,7 +269,7 @@ namespace DiscImageChef.Devices
cdb[5] = 0;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
if(sense) return true;
@@ -349,7 +345,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
buffer = new byte[4096];
bool sense;
cdb[0] = (byte)ScsiCommands.ModeSense10;
if(llbaa) cdb[1] |= 0x10;
@@ -362,7 +357,7 @@ namespace DiscImageChef.Devices
cdb[9] = 0;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
if(sense) return true;
@@ -437,14 +432,13 @@ namespace DiscImageChef.Devices
{
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
bool sense;
byte[] buffer = new byte[0];
cdb[0] = (byte)ScsiCommands.PreventAllowMediumRemoval;
cdb[4] = (byte)((byte)preventMode & 0x03);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "PREVENT ALLOW MEDIUM REMOVAL took {0} ms.", duration);
@@ -482,7 +476,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
buffer = new byte[8];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadCapacity;
@@ -498,7 +491,7 @@ namespace DiscImageChef.Devices
}
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ CAPACITY took {0} ms.", duration);
@@ -535,7 +528,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[16];
buffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.ServiceActionIn;
cdb[1] = (byte)ScsiServiceActions.ReadCapacity16;
@@ -560,7 +552,7 @@ namespace DiscImageChef.Devices
cdb[13] = (byte)(buffer.Length & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ CAPACITY(16) took {0} ms.", duration);
@@ -581,7 +573,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[12];
buffer = new byte[4];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadSerialNumber;
cdb[1] = 0x01;
@@ -591,7 +582,7 @@ namespace DiscImageChef.Devices
cdb[9] = (byte)(buffer.Length & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
if(sense) return true;
@@ -748,7 +739,6 @@ namespace DiscImageChef.Devices
}
byte[] cdb = new byte[6];
bool sense;
cdb[0] = (byte)ScsiCommands.ModeSelect;
if(pageFormat) cdb[1] += 0x10;
@@ -756,7 +746,7 @@ namespace DiscImageChef.Devices
cdb[4] = (byte)buffer.Length;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.Out, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "MODE SELECT(6) took {0} ms.", duration);
@@ -793,7 +783,6 @@ namespace DiscImageChef.Devices
}
byte[] cdb = new byte[10];
bool sense;
cdb[0] = (byte)ScsiCommands.ModeSelect10;
if(pageFormat) cdb[1] += 0x10;
@@ -802,7 +791,7 @@ namespace DiscImageChef.Devices
cdb[8] = (byte)(buffer.Length & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.Out, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "MODE SELECT(10) took {0} ms.", duration);
@@ -817,10 +806,8 @@ namespace DiscImageChef.Devices
public bool RequestSense(bool descriptor, out byte[] buffer, uint timeout, out double duration)
{
byte[] senseBuffer = new byte[32];
byte[] cdb = new byte[6];
buffer = new byte[252];
bool sense;
cdb[0] = (byte)ScsiCommands.RequestSense;
if(descriptor) cdb[1] = 0x01;
@@ -829,8 +816,8 @@ namespace DiscImageChef.Devices
cdb[4] = (byte)buffer.Length;
cdb[5] = 0;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
LastError = SendScsiCommand(cdb, ref buffer, out _, timeout, ScsiDirection.In, out duration,
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "REQUEST SENSE took {0} ms.", duration);

View File

@@ -79,7 +79,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
byte[] buffer = new byte[0];
bool sense;
cdb[0] = (byte)ScsiCommands.LoadUnload;
if(immediate) cdb[1] = 0x01;
@@ -89,7 +88,7 @@ namespace DiscImageChef.Devices
if(hold) cdb[4] += 0x08;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "LOAD UNLOAD (6) took {0} ms.", duration);
@@ -167,7 +166,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[10];
byte[] buffer = new byte[0];
bool sense;
cdb[0] = (byte)ScsiCommands.Locate;
if(immediate) cdb[1] += 0x01;
@@ -180,7 +178,7 @@ namespace DiscImageChef.Devices
cdb[8] = partition;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "LOCATE (10) took {0} ms.", duration);
@@ -263,7 +261,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[16];
byte[] buffer = new byte[0];
bool sense;
byte[] idBytes = BitConverter.GetBytes(identifier);
cdb[0] = (byte)ScsiCommands.Locate16;
@@ -283,7 +280,7 @@ namespace DiscImageChef.Devices
cdb[11] = idBytes[0];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "LOCATE (16) took {0} ms.", duration);
@@ -335,11 +332,9 @@ namespace DiscImageChef.Devices
public bool Read6(out byte[] buffer, out byte[] senseBuffer, bool sili, bool fixedLen, uint transferLen,
uint blockSize, uint timeout, out double duration)
{
if(fixedLen) buffer = new byte[blockSize * transferLen];
else buffer = new byte[transferLen];
buffer = fixedLen ? new byte[blockSize * transferLen] : new byte[transferLen];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.Read6;
if(fixedLen) cdb[1] += 0x01;
@@ -349,7 +344,7 @@ namespace DiscImageChef.Devices
cdb[4] = (byte)(transferLen & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ (6) took {0} ms.", duration);
@@ -445,11 +440,9 @@ namespace DiscImageChef.Devices
public bool Read16(out byte[] buffer, out byte[] senseBuffer, bool sili, bool fixedLen, byte partition,
ulong objectId, uint transferLen, uint objectSize, uint timeout, out double duration)
{
if(fixedLen) buffer = new byte[objectSize * transferLen];
else buffer = new byte[transferLen];
buffer = fixedLen ? new byte[objectSize * transferLen] : new byte[transferLen];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
byte[] idBytes = BitConverter.GetBytes(objectId);
cdb[0] = (byte)ScsiCommands.Read16;
@@ -469,7 +462,7 @@ namespace DiscImageChef.Devices
cdb[14] = (byte)(transferLen & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ (16) took {0} ms.", duration);
@@ -489,12 +482,11 @@ namespace DiscImageChef.Devices
buffer = new byte[6];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadBlockLimits;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ BLOCK LIMITS took {0} ms.", duration);
@@ -580,7 +572,6 @@ namespace DiscImageChef.Devices
byte[] cdb = new byte[10];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadPosition;
cdb[1] = (byte)((byte)responseForm & 0x1F);
@@ -591,7 +582,7 @@ namespace DiscImageChef.Devices
}
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ POSITION took {0} ms.", duration);
@@ -647,11 +638,9 @@ namespace DiscImageChef.Devices
public bool ReadReverse6(out byte[] buffer, out byte[] senseBuffer, bool byteOrder, bool sili, bool fixedLen,
uint transferLen, uint blockSize, uint timeout, out double duration)
{
if(fixedLen) buffer = new byte[blockSize * transferLen];
else buffer = new byte[transferLen];
buffer = fixedLen ? new byte[blockSize * transferLen] : new byte[transferLen];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.ReadReverse;
if(fixedLen) cdb[1] += 0x01;
@@ -662,7 +651,7 @@ namespace DiscImageChef.Devices
cdb[4] = (byte)(transferLen & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ REVERSE (6) took {0} ms.", duration);
@@ -760,11 +749,9 @@ namespace DiscImageChef.Devices
byte partition, ulong objectId, uint transferLen, uint objectSize, uint timeout,
out double duration)
{
if(fixedLen) buffer = new byte[objectSize * transferLen];
else buffer = new byte[transferLen];
buffer = fixedLen ? new byte[objectSize * transferLen] : new byte[transferLen];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
byte[] idBytes = BitConverter.GetBytes(objectId);
cdb[0] = (byte)ScsiCommands.Read16;
@@ -785,7 +772,7 @@ namespace DiscImageChef.Devices
cdb[14] = (byte)(transferLen & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "READ REVERSE (16) took {0} ms.", duration);
@@ -840,11 +827,9 @@ namespace DiscImageChef.Devices
public bool RecoverBufferedData(out byte[] buffer, out byte[] senseBuffer, bool sili, bool fixedLen,
uint transferLen, uint blockSize, uint timeout, out double duration)
{
if(fixedLen) buffer = new byte[blockSize * transferLen];
else buffer = new byte[transferLen];
buffer = fixedLen ? new byte[blockSize * transferLen] : new byte[transferLen];
byte[] cdb = new byte[6];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.RecoverBufferedData;
if(fixedLen) cdb[1] += 0x01;
@@ -854,7 +839,7 @@ namespace DiscImageChef.Devices
cdb[4] = (byte)(transferLen & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "RECOVER BUFFERED DATA took {0} ms.", duration);
@@ -903,7 +888,6 @@ namespace DiscImageChef.Devices
buffer = new byte[256];
byte[] cdb = new byte[10];
senseBuffer = new byte[32];
bool sense;
cdb[0] = (byte)ScsiCommands.ReportDensitySupport;
if(currentMedia) cdb[1] += 0x01;
@@ -912,7 +896,7 @@ namespace DiscImageChef.Devices
cdb[8] = (byte)(buffer.Length & 0xFF);
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.In, out duration,
out sense);
out bool sense);
Error = LastError != 0;
if(sense) return true;
@@ -955,13 +939,12 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
byte[] buffer = new byte[0];
bool sense;
cdb[0] = (byte)ScsiCommands.Rewind;
if(immediate) cdb[1] += 0x01;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "REWIND took {0} ms.", duration);
@@ -982,13 +965,12 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
byte[] buffer = new byte[0];
bool sense;
cdb[0] = (byte)ScsiCommands.TrackSelect;
cdb[5] = track;
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "TRACK SELECT took {0} ms.", duration);
@@ -1001,7 +983,6 @@ namespace DiscImageChef.Devices
senseBuffer = new byte[32];
byte[] cdb = new byte[6];
byte[] buffer = new byte[0];
bool sense;
byte[] countB = BitConverter.GetBytes(count);
cdb[0] = (byte)ScsiCommands.Space;
@@ -1011,7 +992,7 @@ namespace DiscImageChef.Devices
cdb[4] = countB[0];
LastError = SendScsiCommand(cdb, ref buffer, out senseBuffer, timeout, ScsiDirection.None, out duration,
out sense);
out bool sense);
Error = LastError != 0;
DicConsole.DebugWriteLine("SCSI Device", "SPACE took {0} ms.", duration);

View File

@@ -97,8 +97,7 @@ namespace DiscImageChef.Devices
if(readLong) cdb[5] += 0x40;
if(!inhibitDma && !readLong)
if(transferLength == 0) buffer = new byte[256 * blockSize];
else buffer = new byte[transferLength * blockSize];
buffer = transferLength == 0 ? new byte[256 * blockSize] : new byte[transferLength * blockSize];
else if(readLong)
{
buffer = new byte[blockSize];