Allocate SENSE buffer only once.

This commit is contained in:
2025-08-22 19:57:09 +01:00
parent 8e2fdd91a6
commit e4f55d3b3c
73 changed files with 1892 additions and 2565 deletions

View File

@@ -148,15 +148,15 @@ partial class Dump
bool cdiReadyReadAsAudio, int offsetBytes, int sectorsForOffset,
Dictionary<byte, int> smallestPregapLbaPerTrack)
{
ulong sectorSpeedStart = 0; // Used to calculate correct speed
bool sense; // Sense indicator
byte[] cmdBuf; // Data buffer
byte[] senseBuf; // Sense buffer
double cmdDuration; // Command execution time
const uint sectorSize = 2352; // Full sector size
Track firstTrack = tracks.FirstOrDefault();
uint blocksToRead; // How many sectors to read at once
var outputOptical = _outputPlugin as IWritableOpticalImage;
ulong sectorSpeedStart = 0; // Used to calculate correct speed
bool sense; // Sense indicator
byte[] cmdBuf; // Data buffer
ReadOnlySpan<byte> senseBuf; // Sense buffer
double cmdDuration; // Command execution time
const uint sectorSize = 2352; // Full sector size
Track firstTrack = tracks.FirstOrDefault();
uint blocksToRead; // How many sectors to read at once
var outputOptical = _outputPlugin as IWritableOpticalImage;
if(firstTrack is null) return;
@@ -337,7 +337,7 @@ partial class Dump
}
else
{
_errorLog?.WriteLine(i + r, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(i + r, _dev.Error, _dev.LastError, senseBuf.ToArray());
leadOutExtents.Add(i + r, firstTrack.EndSector);
@@ -469,7 +469,7 @@ partial class Dump
}
else
{
_errorLog?.WriteLine(i, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(i, _dev.Error, _dev.LastError, senseBuf.ToArray());
_resume.NextBlock = firstTrack.EndSector + 1;

View File

@@ -101,13 +101,13 @@ partial class Dump
Dictionary<byte, string> isrcs, ref string mcn, HashSet<int> subchannelExtents,
Dictionary<byte, int> smallestPregapLbaPerTrack)
{
ulong sectorSpeedStart = 0; // Used to calculate correct speed
uint blocksToRead; // How many sectors to read at once
bool sense = true; // Sense indicator
byte[] cmdBuf = null; // Data buffer
byte[] senseBuf = null; // Sense buffer
double cmdDuration = 0; // Command execution time
const uint sectorSize = 2352; // Full sector size
ulong sectorSpeedStart = 0; // Used to calculate correct speed
uint blocksToRead; // How many sectors to read at once
bool sense = true; // Sense indicator
byte[] cmdBuf = null; // Data buffer
ReadOnlySpan<byte> senseBuf = null; // Sense buffer
double cmdDuration = 0; // Command execution time
const uint sectorSize = 2352; // Full sector size
newTrim = false;
PlextorSubchannel supportedPlextorSubchannel;
var outputFormat = _outputPlugin as IWritableImage;
@@ -859,7 +859,7 @@ partial class Dump
}
else
{
_errorLog?.WriteLine(i + r, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(i + r, _dev.Error, _dev.LastError, senseBuf.ToArray());
// Write empty data
_writeStopwatch.Restart();
@@ -1054,7 +1054,7 @@ partial class Dump
continue;
}
_errorLog?.WriteLine(firstSectorToRead, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(firstSectorToRead, _dev.Error, _dev.LastError, senseBuf.ToArray());
// TODO: Reset device after X errors
if(_stopOnError) return; // TODO: Return more cleanly

View File

@@ -80,13 +80,13 @@ partial class Dump
ref string mcn, HashSet<int> subchannelExtents,
Dictionary<byte, int> smallestPregapLbaPerTrack, bool supportsLongSectors)
{
bool sense = true; // Sense indicator
byte[] cmdBuf = null; // Data buffer
double cmdDuration; // Command execution time
const uint sectorSize = 2352; // Full sector size
byte[] senseBuf = null; // Sense buffer
PlextorSubchannel supportedPlextorSubchannel;
var outputOptical = _outputPlugin as IWritableOpticalImage;
bool sense = true; // Sense indicator
byte[] cmdBuf = null; // Data buffer
double cmdDuration; // Command execution time
const uint sectorSize = 2352; // Full sector size
ReadOnlySpan<byte> senseBuf = null; // Sense buffer
PlextorSubchannel supportedPlextorSubchannel;
var outputOptical = _outputPlugin as IWritableOpticalImage;
supportedPlextorSubchannel = supportedSubchannel switch
{
@@ -457,7 +457,7 @@ partial class Dump
if(sense || _dev.Error)
{
_errorLog?.WriteLine(badSector, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(badSector, _dev.Error, _dev.LastError, senseBuf.ToArray());
if(!runningPersistent) continue;
@@ -465,9 +465,8 @@ partial class Dump
// MEDIUM ERROR, retry with ignore error below
if(decSense is { ASC: 0x11 })
{
if(!sectorsNotEvenPartial.Contains(badSector)) sectorsNotEvenPartial.Add(badSector);
}
if(!sectorsNotEvenPartial.Contains(badSector))
sectorsNotEvenPartial.Add(badSector);
}
// Because one block has been partially used to fix the offset
@@ -499,7 +498,7 @@ partial class Dump
sectorsNotEvenPartial.Remove(badSector);
}
else
_errorLog?.WriteLine(badSector, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(badSector, _dev.Error, _dev.LastError, senseBuf.ToArray());
if(supportedSubchannel != MmcSubchannel.None)
{
@@ -647,7 +646,7 @@ partial class Dump
if(sense || _dev.Error)
{
_errorLog?.WriteLine(badSector, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(badSector, _dev.Error, _dev.LastError, senseBuf.ToArray());
continue;
}
@@ -742,12 +741,12 @@ partial class Dump
Dictionary<byte, string> isrcs, ref string mcn, HashSet<int> subchannelExtents,
Dictionary<byte, int> smallestPregapLbaPerTrack)
{
bool sense = true; // Sense indicator
byte[] cmdBuf = null; // Data buffer
double cmdDuration; // Command execution time
byte[] senseBuf = null; // Sense buffer
PlextorSubchannel supportedPlextorSubchannel;
var outputOptical = _outputPlugin as IWritableOpticalImage;
bool sense = true; // Sense indicator
byte[] cmdBuf = null; // Data buffer
double cmdDuration; // Command execution time
ReadOnlySpan<byte> senseBuf = null; // Sense buffer
PlextorSubchannel supportedPlextorSubchannel;
var outputOptical = _outputPlugin as IWritableOpticalImage;
if(supportedSubchannel == MmcSubchannel.None || desiredSubchannel == MmcSubchannel.None) return;
@@ -836,7 +835,7 @@ partial class Dump
if(sense || _dev.Error)
{
_errorLog?.WriteLine(badSector, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(badSector, _dev.Error, _dev.LastError, senseBuf.ToArray());
continue;
}

View File

@@ -90,11 +90,11 @@ partial class Dump
ref string mcn, Track[] tracks, HashSet<int> subchannelExtents,
Dictionary<byte, int> smallestPregapLbaPerTrack)
{
byte[] cmdBuf = null; // Data buffer
const uint sectorSize = 2352; // Full sector size
bool sense = true; // Sense indicator
byte[] senseBuf = null;
var outputOptical = _outputPlugin as IWritableOpticalImage;
byte[] cmdBuf = null; // Data buffer
const uint sectorSize = 2352; // Full sector size
bool sense = true; // Sense indicator
ReadOnlySpan<byte> senseBuf = null;
var outputOptical = _outputPlugin as IWritableOpticalImage;
UpdateStatus?.Invoke(Localization.Core.Reading_lead_outs);
@@ -253,7 +253,7 @@ partial class Dump
}
else
{
_errorLog?.WriteLine(i, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(i, _dev.Error, _dev.LastError, senseBuf.ToArray());
// TODO: Reset device after X errors
if(_stopOnError) return; // TODO: Return more cleanly
@@ -329,11 +329,11 @@ partial class Dump
ref string mcn, Track[] tracks, HashSet<int> subchannelExtents,
Dictionary<byte, int> smallestPregapLbaPerTrack)
{
byte[] cmdBuf = null; // Data buffer
const uint sectorSize = 2352; // Full sector size
bool sense = true; // Sense indicator
byte[] senseBuf = null;
var outputOptical = _outputPlugin as IWritableOpticalImage;
byte[] cmdBuf = null; // Data buffer
const uint sectorSize = 2352; // Full sector size
bool sense = true; // Sense indicator
ReadOnlySpan<byte> senseBuf = null;
var outputOptical = _outputPlugin as IWritableOpticalImage;
AaruLogging.WriteLine("Retrying lead-outs");
@@ -492,7 +492,7 @@ partial class Dump
}
else
{
_errorLog?.WriteLine(i, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(i, _dev.Error, _dev.LastError, senseBuf.ToArray());
// TODO: Reset device after X errors
if(_stopOnError) return; // TODO: Return more cleanly

View File

@@ -46,8 +46,8 @@ partial class Dump
/// <param name="supportedPlextorSubchannel">Supported subchannel type</param>
/// <param name="cmdDuration">Time spent sending commands to the drive</param>
/// <returns><c>true</c> if an error occured, <c>false</c> otherwise</returns>
bool ReadPlextorWithSubchannel(out byte[] cmdBuf, out byte[] senseBuf, uint firstSectorToRead, uint blockSize,
uint blocksToRead, PlextorSubchannel supportedPlextorSubchannel,
bool ReadPlextorWithSubchannel(out byte[] cmdBuf, out ReadOnlySpan<byte> senseBuf, uint firstSectorToRead,
uint blockSize, uint blocksToRead, PlextorSubchannel supportedPlextorSubchannel,
out double cmdDuration)
{
bool sense;
@@ -140,7 +140,7 @@ partial class Dump
cmdBuf = new byte[2352 * blocksToRead + subSize * blocksToRead];
for(var b = 0; b < blocksToRead; b++)
for(int b = 0; b < blocksToRead; b++)
{
Array.Copy(dataBuf, 2352 * b, cmdBuf, (2352 + subSize) * b, 2352);
Array.Copy(subBuf, subSize * b, cmdBuf, (2352 + subSize) * b + 2352, subSize);

View File

@@ -84,13 +84,13 @@ partial class Dump
Dictionary<byte, string> isrcs, ref string mcn, HashSet<int> subchannelExtents,
Dictionary<byte, int> smallestPregapLbaPerTrack)
{
bool sense = true; // Sense indicator
byte[] cmdBuf = null; // Data buffer
double cmdDuration = 0; // Command execution time
const uint sectorSize = 2352; // Full sector size
PlextorSubchannel supportedPlextorSubchannel;
byte[] senseBuf = null;
var outputOptical = _outputPlugin as IWritableOpticalImage;
bool sense = true; // Sense indicator
byte[] cmdBuf = null; // Data buffer
double cmdDuration = 0; // Command execution time
const uint sectorSize = 2352; // Full sector size
PlextorSubchannel supportedPlextorSubchannel;
ReadOnlySpan<byte> senseBuf = null;
var outputOptical = _outputPlugin as IWritableOpticalImage;
supportedPlextorSubchannel = supportedSubchannel switch
{
@@ -387,7 +387,7 @@ partial class Dump
if(sense || _dev.Error)
{
_errorLog?.WriteLine(badSectorToRead, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(badSectorToRead, _dev.Error, _dev.LastError, senseBuf.ToArray());
continue;
}

View File

@@ -192,12 +192,12 @@ public partial class Dump
? MediaType.MegaDriveCartridge
: MediaType.SNESGamePak;
uint blocksToRead = 64;
double totalDuration = 0;
double currentSpeed = 0;
double maxSpeed = double.MinValue;
double minSpeed = double.MaxValue;
byte[] senseBuf;
uint blocksToRead = 64;
double totalDuration = 0;
double currentSpeed = 0;
double maxSpeed = double.MinValue;
double minSpeed = double.MaxValue;
ReadOnlySpan<byte> senseBuf;
if(_outputPlugin is not IByteAddressableImage outputBai || !outputBai.SupportedMediaTypes.Contains(mediaType))
{
@@ -232,7 +232,8 @@ public partial class Dump
uint romSectors = romSize / 512;
uint romRemaining = romSize % 512;
UpdateStatus?.Invoke(string.Format(Localization.Core.Cartridge_has_0_bytes_1, romSize,
UpdateStatus?.Invoke(string.Format(Localization.Core.Cartridge_has_0_bytes_1,
romSize,
ByteSize.FromBytes(romSize).ToString("0.000")));
UpdateStatus?.Invoke(string.Format(Localization.Core.Media_identified_as_0, mediaType));

View File

@@ -573,7 +573,7 @@ partial class Dump
md6 = Modes.EncodeMode6(md, _dev.ScsiType);
UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks);
sense = _dev.ModeSelect(md6, out byte[] senseBuf, true, false, _dev.Timeout, out _);
sense = _dev.ModeSelect(md6, out ReadOnlySpan<byte> senseBuf, true, false, _dev.Timeout, out _);
if(sense)
{

View File

@@ -59,16 +59,16 @@ public partial class Dump
[SuppressMessage("ReSharper", "JoinDeclarationAndInitializer")]
void DumpMs()
{
const ushort sbcProfile = 0x0001;
const uint blockSize = 512;
double totalDuration = 0;
double currentSpeed = 0;
double maxSpeed = double.MinValue;
double minSpeed = double.MaxValue;
uint blocksToRead = 64;
MediaType dskType;
bool sense;
byte[] senseBuf;
const ushort sbcProfile = 0x0001;
const uint blockSize = 512;
double totalDuration = 0;
double currentSpeed = 0;
double maxSpeed = double.MinValue;
double minSpeed = double.MaxValue;
uint blocksToRead = 64;
MediaType dskType;
bool sense;
ReadOnlySpan<byte> senseBuf;
if(_outputPlugin is not IWritableImage outputFormat)
{

View File

@@ -58,14 +58,14 @@ public partial class Dump
[SuppressMessage("ReSharper", "JoinDeclarationAndInitializer")]
void DumpUmd()
{
const uint blockSize = 2048;
const MediaType dskType = MediaType.UMD;
uint blocksToRead = 16;
double totalDuration = 0;
double currentSpeed = 0;
double maxSpeed = double.MinValue;
double minSpeed = double.MaxValue;
byte[] senseBuf;
const uint blockSize = 2048;
const MediaType dskType = MediaType.UMD;
uint blocksToRead = 16;
double totalDuration = 0;
double currentSpeed = 0;
double maxSpeed = double.MinValue;
double minSpeed = double.MaxValue;
ReadOnlySpan<byte> senseBuf;
if(_outputPlugin is not IWritableOpticalImage outputOptical)
{

View File

@@ -52,7 +52,7 @@ public partial class Dump
{
InitProgress?.Invoke();
deviceGotReset:
bool sense = _dev.ScsiTestUnitReady(out byte[] senseBuf, _dev.Timeout, out _);
bool sense = _dev.ScsiTestUnitReady(out ReadOnlySpan<byte> senseBuf, _dev.Timeout, out _);
if(sense)
{
@@ -198,7 +198,7 @@ public partial class Dump
}
default:
StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Error_testing_unit_was_ready_0,
Sense.PrettifySense(senseBuf)));
Sense.PrettifySense(senseBuf.ToArray())));
return;
}

View File

@@ -74,8 +74,8 @@ partial class Dump
double minSpeed = double.MaxValue;
var outputTape = _outputPlugin as IWritableTapeImage;
_dev.RequestSense(out byte[] senseBuf, _dev.Timeout, out double duration);
decSense = Sense.Decode(senseBuf);
_dev.RequestSense(out byte[] buffer, _dev.Timeout, out double duration);
decSense = Sense.Decode(buffer);
InitProgress?.Invoke();
@@ -93,6 +93,8 @@ partial class Dump
return;
}
ReadOnlySpan<byte> senseBuf;
// Not in BOM/P
if(decSense is { ASC: 0x00 } &&
decSense?.ASCQ != 0x00 &&
@@ -109,12 +111,12 @@ partial class Dump
do
{
PulseProgress?.Invoke(Localization.Core.Rewinding_please_wait);
_dev.RequestSense(out senseBuf, _dev.Timeout, out duration);
decSense = Sense.Decode(senseBuf);
_dev.RequestSense(out buffer, _dev.Timeout, out duration);
decSense = Sense.Decode(buffer);
} while(decSense is { ASC: 0x00, ASCQ: 0x1A or not (0x04 and 0x00) });
_dev.RequestSense(out senseBuf, _dev.Timeout, out duration);
decSense = Sense.Decode(senseBuf);
_dev.RequestSense(out buffer, _dev.Timeout, out duration);
decSense = Sense.Decode(buffer);
// And yet, did not rewind!
if(decSense.HasValue &&
@@ -194,8 +196,8 @@ partial class Dump
{
Thread.Sleep(1000);
PulseProgress?.Invoke(Localization.Core.Rewinding_please_wait);
_dev.RequestSense(out senseBuf, _dev.Timeout, out duration);
decSense = Sense.Decode(senseBuf);
_dev.RequestSense(out buffer, _dev.Timeout, out duration);
decSense = Sense.Decode(buffer);
} while(decSense is { ASC: 0x00, ASCQ: 0x1A or 0x19 });
// And yet, did not rewind!
@@ -283,8 +285,9 @@ partial class Dump
Modes.DecodedMode? decMode = null;
if(!sense && !_dev.Error)
if(Modes.DecodeMode10(cmdBuf, _dev.ScsiType).HasValue)
decMode = Modes.DecodeMode10(cmdBuf, _dev.ScsiType);
{
if(Modes.DecodeMode10(cmdBuf, _dev.ScsiType).HasValue) decMode = Modes.DecodeMode10(cmdBuf, _dev.ScsiType);
}
UpdateStatus?.Invoke(Localization.Core.Requesting_MODE_SENSE_6);
@@ -312,8 +315,9 @@ partial class Dump
if(sense || _dev.Error) sense = _dev.ModeSense(out cmdBuf, out senseBuf, 5, out duration);
if(!sense && !_dev.Error)
if(Modes.DecodeMode6(cmdBuf, _dev.ScsiType).HasValue)
decMode = Modes.DecodeMode6(cmdBuf, _dev.ScsiType);
{
if(Modes.DecodeMode6(cmdBuf, _dev.ScsiType).HasValue) decMode = Modes.DecodeMode6(cmdBuf, _dev.ScsiType);
}
// TODO: Check partitions page
if(decMode.HasValue)
@@ -786,8 +790,8 @@ partial class Dump
{
Thread.Sleep(1000);
PulseProgress?.Invoke(Localization.Core.Rewinding_please_wait);
_dev.RequestSense(out senseBuf, _dev.Timeout, out duration);
decSense = Sense.Decode(senseBuf);
_dev.RequestSense(out buffer, _dev.Timeout, out duration);
decSense = Sense.Decode(buffer);
} while(decSense is { ASC: 0x00, ASCQ: 0x1A or 0x19 });
// And yet, did not rewind!
@@ -944,7 +948,7 @@ partial class Dump
_speedStopwatch.Stop();
totalDuration += duration;
if(sense && senseBuf?.Length != 0 && !ArrayHelpers.ArrayIsNullOrEmpty(senseBuf))
if(sense && !senseBuf.IsEmpty)
{
decSense = Sense.Decode(senseBuf);
@@ -1064,7 +1068,7 @@ partial class Dump
.Drive_could_not_read_block_0_Sense_bytes_follow,
currentBlock));
AaruLogging.Information(PrintHex.ByteArrayToHexArrayString(senseBuf, 32));
AaruLogging.Information(PrintHex.ByteArrayToHexArrayString(senseBuf.ToArray(), 32));
}
else
{

View File

@@ -25,6 +25,7 @@
// Copyright © 2020-2025 Rebecca Wallander
// ****************************************************************************/
using System;
using System.Linq;
using Aaru.CommonTypes.AaruMetadata;
using Aaru.CommonTypes.Enums;
@@ -223,7 +224,7 @@ partial class Dump
}
UpdateStatus?.Invoke(Localization.Core.Sending_MODE_SELECT_to_drive_return_damaged_blocks);
sense = _dev.ModeSelect(md6, out byte[] senseBuf, true, false, _dev.Timeout, out _);
sense = _dev.ModeSelect(md6, out ReadOnlySpan<byte> senseBuf, true, false, _dev.Timeout, out _);
if(sense) sense = _dev.ModeSelect10(md10, out senseBuf, true, false, _dev.Timeout, out _);

View File

@@ -9,7 +9,6 @@ using Aaru.CommonTypes.Extents;
using Aaru.CommonTypes.Interfaces;
using Aaru.Core.Logging;
using Aaru.Decoders.SCSI;
using Aaru.Helpers;
using Aaru.Logging;
using Humanizer;
using Humanizer.Bytes;
@@ -62,7 +61,7 @@ partial class Dump
{
blankExtents = new ExtentsULong();
written = _dev.MediumScan(out buffer,
written = _dev.MediumScan(out ReadOnlySpan<byte> senseBuffer,
true,
false,
false,
@@ -76,7 +75,7 @@ partial class Dump
uint.MaxValue,
out _);
DecodedSense? decodedSense = Sense.Decode(buffer);
DecodedSense? decodedSense = Sense.Decode(senseBuffer.ToArray());
if(_dev.LastError != 0 || decodedSense?.SenseKey == SenseKeys.IllegalRequest)
{
@@ -87,8 +86,7 @@ partial class Dump
}
// TODO: Find a place where MEDIUM SCAN works properly
else if(buffer?.Length > 0 && !ArrayHelpers.ArrayIsNullOrEmpty(buffer))
AaruLogging.WriteLine(Localization.Core.MEDIUM_SCAN_github_plead_message);
else if(senseBuffer.IsEmpty) AaruLogging.WriteLine(Localization.Core.MEDIUM_SCAN_github_plead_message);
changingCounter = false;
changingWritten = false;
@@ -181,8 +179,9 @@ partial class Dump
writtenExtents.Add(0, blocks - 1);
foreach(Tuple<ulong, ulong> blank in blankExtents.ToArray())
for(ulong b = blank.Item1; b <= blank.Item2; b++)
writtenExtents.Remove(b);
{
for(ulong b = blank.Item1; b <= blank.Item2; b++) writtenExtents.Remove(b);
}
}
if(writtenExtents.Count == 0)

View File

@@ -103,7 +103,7 @@ partial class Dump
if(mediaTags.ContainsKey(MediaTagType.DVD_DMI)) mediaTags.Remove(MediaTagType.DVD_DMI);
// Drive shall move to lock state when a new disc is inserted. Old kreon versions do not lock correctly so save this
sense = _dev.ReadCapacity(out byte[] coldReadCapacity, out byte[] senseBuf, _dev.Timeout, out _);
sense = _dev.ReadCapacity(out byte[] coldReadCapacity, out ReadOnlySpan<byte> senseBuf, _dev.Timeout, out _);
if(sense)
{
@@ -894,7 +894,7 @@ partial class Dump
}
else
{
_errorLog?.WriteLine(currentSector, _dev.Error, _dev.LastError, senseBuf);
_errorLog?.WriteLine(currentSector, _dev.Error, _dev.LastError, senseBuf.ToArray());
// TODO: Reset device after X errors
if(_stopOnError) return; // TODO: Return more cleanly
@@ -1050,8 +1050,9 @@ partial class Dump
List<ulong> tmpList = [];
foreach(ulong ur in _resume.BadBlocks)
for(ulong i = ur; i < ur + blocksToRead; i++)
tmpList.Add(i);
{
for(ulong i = ur; i < ur + blocksToRead; i++) tmpList.Add(i);
}
tmpList.Sort();
@@ -1223,7 +1224,8 @@ partial class Dump
totalDuration += cmdDuration;
if(sense || _dev.Error) _errorLog?.WriteLine(currentSector, _dev.Error, _dev.LastError, senseBuf);
if(sense || _dev.Error)
_errorLog?.WriteLine(currentSector, _dev.Error, _dev.LastError, senseBuf.ToArray());
if(!sense && !_dev.Error)
{

View File

@@ -157,11 +157,11 @@ public partial class DeviceInfo
case DeviceType.SCSI:
{
bool sense = dev.ScsiInquiry(out byte[] inqBuf, out byte[] senseBuf);
bool sense = dev.ScsiInquiry(out byte[] inqBuf, out ReadOnlySpan<byte> senseBuf);
if(sense)
{
AaruLogging.Error(Localization.Core.SCSI_error_0, Sense.PrettifySense(senseBuf));
AaruLogging.Error(Localization.Core.SCSI_error_0, Sense.PrettifySense(senseBuf.ToArray()));
break;
}
@@ -546,14 +546,14 @@ public partial class DeviceInfo
sense = dev.ReadBlockLimits(out byte[] seqBuf, out senseBuf, dev.Timeout, out _);
if(sense)
AaruLogging.Error("READ BLOCK LIMITS:\n{0}", Sense.PrettifySense(senseBuf));
AaruLogging.Error("READ BLOCK LIMITS:\n{0}", Sense.PrettifySense(senseBuf.ToArray()));
else
BlockLimits = seqBuf;
sense = dev.ReportDensitySupport(out seqBuf, out senseBuf, dev.Timeout, out _);
if(sense)
AaruLogging.Error("REPORT DENSITY SUPPORT:\n{0}", Sense.PrettifySense(senseBuf));
AaruLogging.Error("REPORT DENSITY SUPPORT:\n{0}", Sense.PrettifySense(senseBuf.ToArray()));
else
{
DensitySupport = seqBuf;
@@ -565,7 +565,7 @@ public partial class DeviceInfo
if(sense)
{
AaruLogging.Error("REPORT DENSITY SUPPORT (MEDIUM):\n{0}",
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
{

View File

@@ -66,10 +66,10 @@ sealed partial class Reader
if(Blocks == 0) return true;
byte[] senseBuf;
int tries = 0;
uint lba = 0;
bool mediumScan = false;
ReadOnlySpan<byte> senseBuf;
int tries = 0;
uint lba = 0;
bool mediumScan = false;
if(_dev.ScsiType == PeripheralDeviceTypes.OpticalDevice)
{
@@ -641,7 +641,7 @@ sealed partial class Reader
{
Blocks = 0;
bool sense = _dev.ReadCapacity(out byte[] cmdBuf, out byte[] senseBuf, _timeout, out _);
bool sense = _dev.ReadCapacity(out byte[] cmdBuf, out ReadOnlySpan<byte> senseBuf, _timeout, out _);
if(!sense)
{
@@ -774,8 +774,8 @@ sealed partial class Reader
bool ScsiReadBlocks(out byte[] buffer, ulong block, uint count, out double duration, out bool recoveredError,
out bool blankCheck)
{
bool sense;
byte[] senseBuf;
bool sense;
ReadOnlySpan<byte> senseBuf;
buffer = null;
duration = 0;
recoveredError = false;
@@ -913,7 +913,7 @@ sealed partial class Reader
return true;
}
if(sense || _dev.Error) _errorLog?.WriteLine(block, _dev.Error, _dev.LastError, senseBuf);
if(sense || _dev.Error) _errorLog?.WriteLine(block, _dev.Error, _dev.LastError, senseBuf.ToArray());
if(!sense && !_dev.Error) return false;
@@ -921,7 +921,7 @@ sealed partial class Reader
blankCheck = Sense.Decode(senseBuf)?.SenseKey == SenseKeys.BlankCheck;
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.READ_error_0, Sense.PrettifySense(senseBuf));
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.READ_error_0, Sense.PrettifySense(senseBuf.ToArray()));
return sense;
}

View File

@@ -80,10 +80,10 @@ public sealed partial class DeviceReport
AaruLogging.WriteLine(Localization.Core.Sending_READ_FULL_TOC_to_the_device);
int retries = 0;
bool sense;
byte[] buffer;
byte[] senseBuffer;
int retries = 0;
bool sense;
byte[] buffer;
ReadOnlySpan<byte> senseBuffer;
do
{
@@ -104,7 +104,7 @@ public sealed partial class DeviceReport
if(sense)
{
AaruLogging.WriteLine(Localization.Core.READ_FULL_TOC_failed);
AaruLogging.Debug(GDROM_MODULE_NAME, "{0}", Sense.PrettifySense(senseBuffer));
AaruLogging.Debug(GDROM_MODULE_NAME, "{0}", Sense.PrettifySense(senseBuffer.ToArray()));
report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = false;
report.GdRomSwapDiscCapabilities.TestCrashed = false;
@@ -218,7 +218,7 @@ public sealed partial class DeviceReport
if(sense)
{
AaruLogging.WriteLine(Localization.Core.READ_FULL_TOC_failed);
AaruLogging.Debug(GDROM_MODULE_NAME, "{0}", Sense.PrettifySense(senseBuffer));
AaruLogging.Debug(GDROM_MODULE_NAME, "{0}", Sense.PrettifySense(senseBuffer.ToArray()));
report.GdRomSwapDiscCapabilities.RecognizedSwapDisc = false;
report.GdRomSwapDiscCapabilities.TestCrashed = false;
@@ -273,7 +273,7 @@ public sealed partial class DeviceReport
AaruLogging.Write(Localization.Core.Reading_LBA_zero);
report.GdRomSwapDiscCapabilities.Lba0Readable = !_dev.ReadCd(out byte[] lba0Buffer,
out byte[] lba0Sense,
out ReadOnlySpan<byte> lba0Sense,
0,
2352,
1,
@@ -290,7 +290,7 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba0Data = lba0Buffer;
report.GdRomSwapDiscCapabilities.Lba0Sense = lba0Sense;
report.GdRomSwapDiscCapabilities.Lba0Sense = lba0Sense.ToArray();
report.GdRomSwapDiscCapabilities.Lba0DecodedSense = Sense.PrettifySense(lba0Sense);
AaruLogging.WriteLine(report.GdRomSwapDiscCapabilities.Lba0Readable
@@ -300,7 +300,7 @@ public sealed partial class DeviceReport
AaruLogging.Write(Localization.Core.Reading_LBA_zero_as_audio_scrambled);
report.GdRomSwapDiscCapabilities.Lba0ScrambledReadable = !_dev.ReadCd(out byte[] lba0ScrambledBuffer,
out byte[] lba0ScrambledSense,
out ReadOnlySpan<byte> lba0ScrambledSense,
0,
2352,
1,
@@ -317,7 +317,7 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba0ScrambledData = lba0ScrambledBuffer;
report.GdRomSwapDiscCapabilities.Lba0ScrambledSense = lba0ScrambledSense;
report.GdRomSwapDiscCapabilities.Lba0ScrambledSense = lba0ScrambledSense.ToArray();
report.GdRomSwapDiscCapabilities.Lba0ScrambledDecodedSense = Sense.PrettifySense(lba0ScrambledSense);
AaruLogging.WriteLine(report.GdRomSwapDiscCapabilities.Lba0ScrambledReadable
@@ -330,7 +330,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba100000AudioReadable = !_dev.ReadCd(out byte[] lba100000AudioBuffer,
out byte[] lba100000AudioSenseBuffer,
out ReadOnlySpan<byte>
lba100000AudioSenseBuffer,
100000,
2352,
cluster,
@@ -347,10 +348,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba100000AudioData = lba100000AudioBuffer;
report.GdRomSwapDiscCapabilities.Lba100000AudioSense = lba100000AudioSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba100000AudioSense = lba100000AudioSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba100000AudioDecodedSense =
Sense.PrettifySense(lba100000AudioSenseBuffer);
Sense.PrettifySense(lba100000AudioSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba100000AudioReadableCluster = (int)cluster;
@@ -371,7 +372,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba50000AudioReadable = !_dev.ReadCd(out byte[] lba50000AudioBuffer,
out byte[] lba50000AudioSenseBuffer,
out ReadOnlySpan<byte>
lba50000AudioSenseBuffer,
50000,
2352,
cluster,
@@ -388,9 +390,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba50000AudioData = lba50000AudioBuffer;
report.GdRomSwapDiscCapabilities.Lba50000AudioSense = lba50000AudioSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba50000AudioSense = lba50000AudioSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba50000AudioDecodedSense = Sense.PrettifySense(lba50000AudioSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba50000AudioDecodedSense =
Sense.PrettifySense(lba50000AudioSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba50000AudioReadableCluster = (int)cluster;
@@ -411,7 +414,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba450000AudioReadable = !_dev.ReadCd(out byte[] lba450000AudioBuffer,
out byte[] lba450000AudioSenseBuffer,
out ReadOnlySpan<byte>
lba450000AudioSenseBuffer,
450000,
2352,
cluster,
@@ -428,10 +432,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba450000AudioData = lba450000AudioBuffer;
report.GdRomSwapDiscCapabilities.Lba450000AudioSense = lba450000AudioSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba450000AudioSense = lba450000AudioSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba450000AudioDecodedSense =
Sense.PrettifySense(lba450000AudioSenseBuffer);
Sense.PrettifySense(lba450000AudioSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba450000AudioReadableCluster = (int)cluster;
@@ -452,7 +456,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba400000AudioReadable = !_dev.ReadCd(out byte[] lba400000AudioBuffer,
out byte[] lba400000AudioSenseBuffer,
out ReadOnlySpan<byte>
lba400000AudioSenseBuffer,
400000,
2352,
cluster,
@@ -469,10 +474,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba400000AudioData = lba400000AudioBuffer;
report.GdRomSwapDiscCapabilities.Lba400000AudioSense = lba400000AudioSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba400000AudioSense = lba400000AudioSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba400000AudioDecodedSense =
Sense.PrettifySense(lba400000AudioSenseBuffer);
Sense.PrettifySense(lba400000AudioSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba400000AudioReadableCluster = (int)cluster;
@@ -493,7 +498,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba45000AudioReadable = !_dev.ReadCd(out byte[] lba45000AudioBuffer,
out byte[] lba45000AudioSenseBuffer,
out ReadOnlySpan<byte>
lba45000AudioSenseBuffer,
45000,
2352,
cluster,
@@ -510,9 +516,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba45000AudioData = lba45000AudioBuffer;
report.GdRomSwapDiscCapabilities.Lba45000AudioSense = lba45000AudioSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba45000AudioSense = lba45000AudioSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba45000AudioDecodedSense = Sense.PrettifySense(lba45000AudioSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba45000AudioDecodedSense =
Sense.PrettifySense(lba45000AudioSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba45000AudioReadableCluster = (int)cluster;
@@ -533,7 +540,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba44990AudioReadable = !_dev.ReadCd(out byte[] lba44990AudioBuffer,
out byte[] lba44990AudioSenseBuffer,
out ReadOnlySpan<byte>
lba44990AudioSenseBuffer,
44990,
2352,
cluster,
@@ -550,9 +558,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba44990AudioData = lba44990AudioBuffer;
report.GdRomSwapDiscCapabilities.Lba44990AudioSense = lba44990AudioSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba44990AudioSense = lba44990AudioSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba44990AudioDecodedSense = Sense.PrettifySense(lba44990AudioSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba44990AudioDecodedSense =
Sense.PrettifySense(lba44990AudioSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba44990AudioReadableCluster = (int)cluster;
@@ -573,7 +582,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba100000AudioPqReadable = !_dev.ReadCd(out byte[] lba100000AudioPqBuffer,
out byte[] lba100000AudioPqSenseBuffer,
out ReadOnlySpan<byte>
lba100000AudioPqSenseBuffer,
100000,
2368,
cluster,
@@ -590,10 +600,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba100000AudioPqData = lba100000AudioPqBuffer;
report.GdRomSwapDiscCapabilities.Lba100000AudioPqSense = lba100000AudioPqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba100000AudioPqSense = lba100000AudioPqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba100000AudioPqDecodedSense =
Sense.PrettifySense(lba100000AudioPqSenseBuffer);
Sense.PrettifySense(lba100000AudioPqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba100000AudioPqReadableCluster = (int)cluster;
@@ -614,7 +624,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba50000AudioPqReadable = !_dev.ReadCd(out byte[] lba50000AudioPqBuffer,
out byte[] lba50000AudioPqSenseBuffer,
out ReadOnlySpan<byte>
lba50000AudioPqSenseBuffer,
50000,
2368,
cluster,
@@ -631,10 +642,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba50000AudioPqData = lba50000AudioPqBuffer;
report.GdRomSwapDiscCapabilities.Lba50000AudioPqSense = lba50000AudioPqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba50000AudioPqSense = lba50000AudioPqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba50000AudioPqDecodedSense =
Sense.PrettifySense(lba50000AudioPqSenseBuffer);
Sense.PrettifySense(lba50000AudioPqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba50000AudioPqReadableCluster = (int)cluster;
@@ -655,7 +666,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba450000AudioPqReadable = !_dev.ReadCd(out byte[] lba450000AudioPqBuffer,
out byte[] lba450000AudioPqSenseBuffer,
out ReadOnlySpan<byte>
lba450000AudioPqSenseBuffer,
450000,
2368,
cluster,
@@ -672,10 +684,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba450000AudioPqData = lba450000AudioPqBuffer;
report.GdRomSwapDiscCapabilities.Lba450000AudioPqSense = lba450000AudioPqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba450000AudioPqSense = lba450000AudioPqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba450000AudioPqDecodedSense =
Sense.PrettifySense(lba450000AudioPqSenseBuffer);
Sense.PrettifySense(lba450000AudioPqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba450000AudioPqReadableCluster = (int)cluster;
@@ -696,7 +708,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba400000AudioPqReadable = !_dev.ReadCd(out byte[] lba400000AudioPqBuffer,
out byte[] lba400000AudioPqSenseBuffer,
out ReadOnlySpan<byte>
lba400000AudioPqSenseBuffer,
400000,
2368,
cluster,
@@ -713,10 +726,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba400000AudioPqData = lba400000AudioPqBuffer;
report.GdRomSwapDiscCapabilities.Lba400000AudioPqSense = lba400000AudioPqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba400000AudioPqSense = lba400000AudioPqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba400000AudioPqDecodedSense =
Sense.PrettifySense(lba400000AudioPqSenseBuffer);
Sense.PrettifySense(lba400000AudioPqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba400000AudioPqReadableCluster = (int)cluster;
@@ -737,7 +750,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba45000AudioPqReadable = !_dev.ReadCd(out byte[] lba45000AudioPqBuffer,
out byte[] lba45000AudioPqSenseBuffer,
out ReadOnlySpan<byte>
lba45000AudioPqSenseBuffer,
45000,
2368,
cluster,
@@ -754,10 +768,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba45000AudioPqData = lba45000AudioPqBuffer;
report.GdRomSwapDiscCapabilities.Lba45000AudioPqSense = lba45000AudioPqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba45000AudioPqSense = lba45000AudioPqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba45000AudioPqDecodedSense =
Sense.PrettifySense(lba45000AudioPqSenseBuffer);
Sense.PrettifySense(lba45000AudioPqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba45000AudioPqReadableCluster = (int)cluster;
@@ -778,7 +792,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba44990AudioPqReadable = !_dev.ReadCd(out byte[] lba44990AudioPqBuffer,
out byte[] lba44990AudioPqSenseBuffer,
out ReadOnlySpan<byte>
lba44990AudioPqSenseBuffer,
44990,
2368,
cluster,
@@ -795,10 +810,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba44990AudioPqData = lba44990AudioPqBuffer;
report.GdRomSwapDiscCapabilities.Lba44990AudioPqSense = lba44990AudioPqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba44990AudioPqSense = lba44990AudioPqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba44990AudioPqDecodedSense =
Sense.PrettifySense(lba44990AudioPqSenseBuffer);
Sense.PrettifySense(lba44990AudioPqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba44990AudioPqReadableCluster = (int)cluster;
@@ -819,7 +834,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba100000AudioRwReadable = !_dev.ReadCd(out byte[] lba100000AudioRwBuffer,
out byte[] lba100000AudioRwSenseBuffer,
out ReadOnlySpan<byte>
lba100000AudioRwSenseBuffer,
100000,
2448,
cluster,
@@ -836,10 +852,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba100000AudioRwData = lba100000AudioRwBuffer;
report.GdRomSwapDiscCapabilities.Lba100000AudioRwSense = lba100000AudioRwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba100000AudioRwSense = lba100000AudioRwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba100000AudioRwDecodedSense =
Sense.PrettifySense(lba100000AudioRwSenseBuffer);
Sense.PrettifySense(lba100000AudioRwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba100000AudioRwReadableCluster = (int)cluster;
@@ -860,7 +876,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba50000AudioRwReadable = !_dev.ReadCd(out byte[] lba50000AudioRwBuffer,
out byte[] lba50000AudioRwSenseBuffer,
out ReadOnlySpan<byte>
lba50000AudioRwSenseBuffer,
50000,
2448,
cluster,
@@ -877,10 +894,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba50000AudioRwData = lba50000AudioRwBuffer;
report.GdRomSwapDiscCapabilities.Lba50000AudioRwSense = lba50000AudioRwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba50000AudioRwSense = lba50000AudioRwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba50000AudioRwDecodedSense =
Sense.PrettifySense(lba50000AudioRwSenseBuffer);
Sense.PrettifySense(lba50000AudioRwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba50000AudioRwReadableCluster = (int)cluster;
@@ -901,7 +918,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba450000AudioRwReadable = !_dev.ReadCd(out byte[] lba450000AudioRwBuffer,
out byte[] lba450000AudioRwSenseBuffer,
out ReadOnlySpan<byte>
lba450000AudioRwSenseBuffer,
450000,
2448,
cluster,
@@ -918,10 +936,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba450000AudioRwData = lba450000AudioRwBuffer;
report.GdRomSwapDiscCapabilities.Lba450000AudioRwSense = lba450000AudioRwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba450000AudioRwSense = lba450000AudioRwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba450000AudioRwDecodedSense =
Sense.PrettifySense(lba450000AudioRwSenseBuffer);
Sense.PrettifySense(lba450000AudioRwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba450000AudioRwReadableCluster = (int)cluster;
@@ -942,7 +960,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba400000AudioRwReadable = !_dev.ReadCd(out byte[] lba400000AudioRwBuffer,
out byte[] lba400000AudioRwSenseBuffer,
out ReadOnlySpan<byte>
lba400000AudioRwSenseBuffer,
400000,
2448,
cluster,
@@ -959,10 +978,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba400000AudioRwData = lba400000AudioRwBuffer;
report.GdRomSwapDiscCapabilities.Lba400000AudioRwSense = lba400000AudioRwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba400000AudioRwSense = lba400000AudioRwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba400000AudioRwDecodedSense =
Sense.PrettifySense(lba400000AudioRwSenseBuffer);
Sense.PrettifySense(lba400000AudioRwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba400000AudioRwReadableCluster = (int)cluster;
@@ -983,7 +1002,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba45000AudioRwReadable = !_dev.ReadCd(out byte[] lba45000AudioRwBuffer,
out byte[] lba45000AudioRwSenseBuffer,
out ReadOnlySpan<byte>
lba45000AudioRwSenseBuffer,
45000,
2448,
cluster,
@@ -1000,10 +1020,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba45000AudioRwData = lba45000AudioRwBuffer;
report.GdRomSwapDiscCapabilities.Lba45000AudioRwSense = lba45000AudioRwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba45000AudioRwSense = lba45000AudioRwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba45000AudioRwDecodedSense =
Sense.PrettifySense(lba45000AudioRwSenseBuffer);
Sense.PrettifySense(lba45000AudioRwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba45000AudioRwReadableCluster = (int)cluster;
@@ -1024,7 +1044,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba44990AudioRwReadable = !_dev.ReadCd(out byte[] lba44990AudioRwBuffer,
out byte[] lba44990AudioRwSenseBuffer,
out ReadOnlySpan<byte>
lba44990AudioRwSenseBuffer,
44990,
2448,
cluster,
@@ -1041,10 +1062,10 @@ public sealed partial class DeviceReport
out _);
report.GdRomSwapDiscCapabilities.Lba44990AudioRwData = lba44990AudioRwBuffer;
report.GdRomSwapDiscCapabilities.Lba44990AudioRwSense = lba44990AudioRwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba44990AudioRwSense = lba44990AudioRwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba44990AudioRwDecodedSense =
Sense.PrettifySense(lba44990AudioRwSenseBuffer);
Sense.PrettifySense(lba44990AudioRwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba44990AudioRwReadableCluster = (int)cluster;
@@ -1065,7 +1086,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba100000Readable = !_dev.ReadCd(out byte[] lba100000Buffer,
out byte[] lba100000SenseBuffer,
out ReadOnlySpan<byte>
lba100000SenseBuffer,
100000,
2352,
cluster,
@@ -1081,9 +1103,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba100000Data = lba100000Buffer;
report.GdRomSwapDiscCapabilities.Lba100000Sense = lba100000SenseBuffer;
report.GdRomSwapDiscCapabilities.Lba100000DecodedSense = Sense.PrettifySense(lba100000SenseBuffer);
report.GdRomSwapDiscCapabilities.Lba100000Data = lba100000Buffer;
report.GdRomSwapDiscCapabilities.Lba100000Sense = lba100000SenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba100000DecodedSense =
Sense.PrettifySense(lba100000SenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba100000ReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba100000Readable) break;
@@ -1103,7 +1128,7 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba50000Readable = !_dev.ReadCd(out byte[] lba50000Buffer,
out byte[] lba50000SenseBuffer,
out ReadOnlySpan<byte> lba50000SenseBuffer,
50000,
2352,
cluster,
@@ -1119,9 +1144,9 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba50000Data = lba50000Buffer;
report.GdRomSwapDiscCapabilities.Lba50000Sense = lba50000SenseBuffer;
report.GdRomSwapDiscCapabilities.Lba50000DecodedSense = Sense.PrettifySense(lba50000SenseBuffer);
report.GdRomSwapDiscCapabilities.Lba50000Data = lba50000Buffer;
report.GdRomSwapDiscCapabilities.Lba50000Sense = lba50000SenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba50000DecodedSense = Sense.PrettifySense(lba50000SenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba50000ReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba50000Readable) break;
@@ -1141,7 +1166,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba450000Readable = !_dev.ReadCd(out byte[] lba450000Buffer,
out byte[] lba450000SenseBuffer,
out ReadOnlySpan<byte>
lba450000SenseBuffer,
450000,
2352,
cluster,
@@ -1157,9 +1183,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba450000Data = lba450000Buffer;
report.GdRomSwapDiscCapabilities.Lba450000Sense = lba450000SenseBuffer;
report.GdRomSwapDiscCapabilities.Lba450000DecodedSense = Sense.PrettifySense(lba450000SenseBuffer);
report.GdRomSwapDiscCapabilities.Lba450000Data = lba450000Buffer;
report.GdRomSwapDiscCapabilities.Lba450000Sense = lba450000SenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba450000DecodedSense =
Sense.PrettifySense(lba450000SenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba450000ReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba450000Readable) break;
@@ -1179,7 +1208,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba400000Readable = !_dev.ReadCd(out byte[] lba400000Buffer,
out byte[] lba400000SenseBuffer,
out ReadOnlySpan<byte>
lba400000SenseBuffer,
400000,
2352,
cluster,
@@ -1195,9 +1225,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba400000Data = lba400000Buffer;
report.GdRomSwapDiscCapabilities.Lba400000Sense = lba400000SenseBuffer;
report.GdRomSwapDiscCapabilities.Lba400000DecodedSense = Sense.PrettifySense(lba400000SenseBuffer);
report.GdRomSwapDiscCapabilities.Lba400000Data = lba400000Buffer;
report.GdRomSwapDiscCapabilities.Lba400000Sense = lba400000SenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba400000DecodedSense =
Sense.PrettifySense(lba400000SenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba400000ReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba400000Readable) break;
@@ -1217,7 +1250,7 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba45000Readable = !_dev.ReadCd(out byte[] lba45000Buffer,
out byte[] lba45000SenseBuffer,
out ReadOnlySpan<byte> lba45000SenseBuffer,
45000,
2352,
cluster,
@@ -1233,9 +1266,9 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba45000Data = lba45000Buffer;
report.GdRomSwapDiscCapabilities.Lba45000Sense = lba45000SenseBuffer;
report.GdRomSwapDiscCapabilities.Lba45000DecodedSense = Sense.PrettifySense(lba45000SenseBuffer);
report.GdRomSwapDiscCapabilities.Lba45000Data = lba45000Buffer;
report.GdRomSwapDiscCapabilities.Lba45000Sense = lba45000SenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba45000DecodedSense = Sense.PrettifySense(lba45000SenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba45000ReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba45000Readable) break;
@@ -1255,7 +1288,7 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba44990Readable = !_dev.ReadCd(out byte[] lba44990Buffer,
out byte[] lba44990SenseBuffer,
out ReadOnlySpan<byte> lba44990SenseBuffer,
44990,
2352,
cluster,
@@ -1271,9 +1304,9 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba44990Data = lba44990Buffer;
report.GdRomSwapDiscCapabilities.Lba44990Sense = lba44990SenseBuffer;
report.GdRomSwapDiscCapabilities.Lba44990DecodedSense = Sense.PrettifySense(lba44990SenseBuffer);
report.GdRomSwapDiscCapabilities.Lba44990Data = lba44990Buffer;
report.GdRomSwapDiscCapabilities.Lba44990Sense = lba44990SenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba44990DecodedSense = Sense.PrettifySense(lba44990SenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba44990ReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba44990Readable) break;
@@ -1293,7 +1326,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba100000PqReadable = !_dev.ReadCd(out byte[] lba100000PqBuffer,
out byte[] lba100000PqSenseBuffer,
out ReadOnlySpan<byte>
lba100000PqSenseBuffer,
100000,
2368,
cluster,
@@ -1309,9 +1343,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba100000PqData = lba100000PqBuffer;
report.GdRomSwapDiscCapabilities.Lba100000PqSense = lba100000PqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba100000PqDecodedSense = Sense.PrettifySense(lba100000PqSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba100000PqData = lba100000PqBuffer;
report.GdRomSwapDiscCapabilities.Lba100000PqSense = lba100000PqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba100000PqDecodedSense =
Sense.PrettifySense(lba100000PqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba100000PqReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba100000PqReadable) break;
@@ -1331,7 +1368,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba50000PqReadable = !_dev.ReadCd(out byte[] lba50000PqBuffer,
out byte[] lba50000PqSenseBuffer,
out ReadOnlySpan<byte>
lba50000PqSenseBuffer,
50000,
2368,
cluster,
@@ -1347,9 +1385,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba50000PqData = lba50000PqBuffer;
report.GdRomSwapDiscCapabilities.Lba50000PqSense = lba50000PqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba50000PqDecodedSense = Sense.PrettifySense(lba50000PqSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba50000PqData = lba50000PqBuffer;
report.GdRomSwapDiscCapabilities.Lba50000PqSense = lba50000PqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba50000PqDecodedSense =
Sense.PrettifySense(lba50000PqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba50000PqReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba50000PqReadable) break;
@@ -1369,7 +1410,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba450000PqReadable = !_dev.ReadCd(out byte[] lba450000PqBuffer,
out byte[] lba450000PqSenseBuffer,
out ReadOnlySpan<byte>
lba450000PqSenseBuffer,
450000,
2368,
cluster,
@@ -1385,9 +1427,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba450000PqData = lba450000PqBuffer;
report.GdRomSwapDiscCapabilities.Lba450000PqSense = lba450000PqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba450000PqDecodedSense = Sense.PrettifySense(lba450000PqSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba450000PqData = lba450000PqBuffer;
report.GdRomSwapDiscCapabilities.Lba450000PqSense = lba450000PqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba450000PqDecodedSense =
Sense.PrettifySense(lba450000PqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba450000PqReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba450000PqReadable) break;
@@ -1407,7 +1452,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba400000PqReadable = !_dev.ReadCd(out byte[] lba400000PqBuffer,
out byte[] lba400000PqSenseBuffer,
out ReadOnlySpan<byte>
lba400000PqSenseBuffer,
400000,
2368,
cluster,
@@ -1423,9 +1469,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba400000PqData = lba400000PqBuffer;
report.GdRomSwapDiscCapabilities.Lba400000PqSense = lba400000PqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba400000PqDecodedSense = Sense.PrettifySense(lba400000PqSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba400000PqData = lba400000PqBuffer;
report.GdRomSwapDiscCapabilities.Lba400000PqSense = lba400000PqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba400000PqDecodedSense =
Sense.PrettifySense(lba400000PqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba400000PqReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba400000PqReadable) break;
@@ -1445,7 +1494,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba45000PqReadable = !_dev.ReadCd(out byte[] lba45000PqBuffer,
out byte[] lba45000PqSenseBuffer,
out ReadOnlySpan<byte>
lba45000PqSenseBuffer,
45000,
2368,
cluster,
@@ -1461,9 +1511,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba45000PqData = lba45000PqBuffer;
report.GdRomSwapDiscCapabilities.Lba45000PqSense = lba45000PqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba45000PqDecodedSense = Sense.PrettifySense(lba45000PqSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba45000PqData = lba45000PqBuffer;
report.GdRomSwapDiscCapabilities.Lba45000PqSense = lba45000PqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba45000PqDecodedSense =
Sense.PrettifySense(lba45000PqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba45000PqReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba45000PqReadable) break;
@@ -1483,7 +1536,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba44990PqReadable = !_dev.ReadCd(out byte[] lba44990PqBuffer,
out byte[] lba44990PqSenseBuffer,
out ReadOnlySpan<byte>
lba44990PqSenseBuffer,
44990,
2368,
cluster,
@@ -1499,9 +1553,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba44990PqData = lba44990PqBuffer;
report.GdRomSwapDiscCapabilities.Lba44990PqSense = lba44990PqSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba44990PqDecodedSense = Sense.PrettifySense(lba44990PqSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba44990PqData = lba44990PqBuffer;
report.GdRomSwapDiscCapabilities.Lba44990PqSense = lba44990PqSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba44990PqDecodedSense =
Sense.PrettifySense(lba44990PqSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba44990PqReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba44990PqReadable) break;
@@ -1521,7 +1578,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba100000RwReadable = !_dev.ReadCd(out byte[] lba100000RwBuffer,
out byte[] lba100000RwSenseBuffer,
out ReadOnlySpan<byte>
lba100000RwSenseBuffer,
100000,
2448,
cluster,
@@ -1537,9 +1595,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba100000RwData = lba100000RwBuffer;
report.GdRomSwapDiscCapabilities.Lba100000RwSense = lba100000RwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba100000RwDecodedSense = Sense.PrettifySense(lba100000RwSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba100000RwData = lba100000RwBuffer;
report.GdRomSwapDiscCapabilities.Lba100000RwSense = lba100000RwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba100000RwDecodedSense =
Sense.PrettifySense(lba100000RwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba100000RwReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba100000RwReadable) break;
@@ -1559,7 +1620,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba50000RwReadable = !_dev.ReadCd(out byte[] lba50000RwBuffer,
out byte[] lba50000RwSenseBuffer,
out ReadOnlySpan<byte>
lba50000RwSenseBuffer,
50000,
2448,
cluster,
@@ -1575,9 +1637,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba50000RwData = lba50000RwBuffer;
report.GdRomSwapDiscCapabilities.Lba50000RwSense = lba50000RwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba50000RwDecodedSense = Sense.PrettifySense(lba50000RwSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba50000RwData = lba50000RwBuffer;
report.GdRomSwapDiscCapabilities.Lba50000RwSense = lba50000RwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba50000RwDecodedSense =
Sense.PrettifySense(lba50000RwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba50000RwReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba50000RwReadable) break;
@@ -1597,7 +1662,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba450000RwReadable = !_dev.ReadCd(out byte[] lba450000RwBuffer,
out byte[] lba450000RwSenseBuffer,
out ReadOnlySpan<byte>
lba450000RwSenseBuffer,
450000,
2448,
cluster,
@@ -1613,9 +1679,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba450000RwData = lba450000RwBuffer;
report.GdRomSwapDiscCapabilities.Lba450000RwSense = lba450000RwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba450000RwDecodedSense = Sense.PrettifySense(lba450000RwSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba450000RwData = lba450000RwBuffer;
report.GdRomSwapDiscCapabilities.Lba450000RwSense = lba450000RwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba450000RwDecodedSense =
Sense.PrettifySense(lba450000RwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba450000RwReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba450000RwReadable) break;
@@ -1635,7 +1704,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba400000RwReadable = !_dev.ReadCd(out byte[] lba400000RwBuffer,
out byte[] lba400000RwSenseBuffer,
out ReadOnlySpan<byte>
lba400000RwSenseBuffer,
400000,
2448,
cluster,
@@ -1651,9 +1721,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba400000RwData = lba400000RwBuffer;
report.GdRomSwapDiscCapabilities.Lba400000RwSense = lba400000RwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba400000RwDecodedSense = Sense.PrettifySense(lba400000RwSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba400000RwData = lba400000RwBuffer;
report.GdRomSwapDiscCapabilities.Lba400000RwSense = lba400000RwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba400000RwDecodedSense =
Sense.PrettifySense(lba400000RwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba400000RwReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba400000RwReadable) break;
@@ -1673,7 +1746,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba45000RwReadable = !_dev.ReadCd(out byte[] lba45000RwBuffer,
out byte[] lba45000RwSenseBuffer,
out ReadOnlySpan<byte>
lba45000RwSenseBuffer,
45000,
2448,
cluster,
@@ -1689,9 +1763,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba45000RwData = lba45000RwBuffer;
report.GdRomSwapDiscCapabilities.Lba45000RwSense = lba45000RwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba45000RwDecodedSense = Sense.PrettifySense(lba45000RwSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba45000RwData = lba45000RwBuffer;
report.GdRomSwapDiscCapabilities.Lba45000RwSense = lba45000RwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba45000RwDecodedSense =
Sense.PrettifySense(lba45000RwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba45000RwReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba45000RwReadable) break;
@@ -1711,7 +1788,8 @@ public sealed partial class DeviceReport
while(true)
{
report.GdRomSwapDiscCapabilities.Lba44990RwReadable = !_dev.ReadCd(out byte[] lba44990RwBuffer,
out byte[] lba44990RwSenseBuffer,
out ReadOnlySpan<byte>
lba44990RwSenseBuffer,
44990,
2448,
cluster,
@@ -1727,9 +1805,12 @@ public sealed partial class DeviceReport
_dev.Timeout,
out _);
report.GdRomSwapDiscCapabilities.Lba44990RwData = lba44990RwBuffer;
report.GdRomSwapDiscCapabilities.Lba44990RwSense = lba44990RwSenseBuffer;
report.GdRomSwapDiscCapabilities.Lba44990RwDecodedSense = Sense.PrettifySense(lba44990RwSenseBuffer);
report.GdRomSwapDiscCapabilities.Lba44990RwData = lba44990RwBuffer;
report.GdRomSwapDiscCapabilities.Lba44990RwSense = lba44990RwSenseBuffer.ToArray();
report.GdRomSwapDiscCapabilities.Lba44990RwDecodedSense =
Sense.PrettifySense(lba44990RwSenseBuffer.ToArray());
report.GdRomSwapDiscCapabilities.Lba44990RwReadableCluster = (int)cluster;
if(report.GdRomSwapDiscCapabilities.Lba44990RwReadable) break;

View File

@@ -578,15 +578,15 @@ public sealed partial class DeviceReport
public TestedMedia ReportMmcMedia(string mediaType, bool tryPlextor, bool tryPioneer, bool tryNec, bool tryHldtst,
bool tryMediaTekF106, bool tryLiteOn)
{
bool sense = true;
byte[] buffer = [];
byte[] senseBuffer = [];
var mediaTest = new TestedMedia();
bool sense = true;
byte[] buffer = [];
ReadOnlySpan<byte> senseBuffer = [];
var mediaTest = new TestedMedia();
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY).IsIndeterminate();
sense = _dev.ReadCapacity(out buffer, out senseBuffer, _dev.Timeout, out _);
sense = _dev.ReadCapacity(out buffer, out _, _dev.Timeout, out _);
});
if(!sense && !_dev.Error)
@@ -603,7 +603,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY_16).IsIndeterminate();
sense = _dev.ReadCapacity16(out buffer, out buffer, _dev.Timeout, out _);
sense = _dev.ReadCapacity16(out buffer, out _, _dev.Timeout, out _);
});
if(!sense && !_dev.Error)
@@ -623,7 +623,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE_10).IsIndeterminate();
sense = _dev.ModeSense10(out buffer,
out senseBuffer,
out _,
false,
true,
ScsiModeSensePageControl.Current,
@@ -643,7 +643,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE).IsIndeterminate();
sense = _dev.ModeSense(out buffer, out senseBuffer, _dev.Timeout, out _);
sense = _dev.ModeSense(out buffer, out _, _dev.Timeout, out _);
});
if(!sense && !_dev.Error)
@@ -669,8 +669,7 @@ public sealed partial class DeviceReport
{
ctx.AddTask(Localization.Core.Querying_CD_TOC).IsIndeterminate();
mediaTest.CanReadTOC =
!_dev.ReadTocPmaAtip(out buffer, out senseBuffer, false, 0, 0, _dev.Timeout, out _);
mediaTest.CanReadTOC = !_dev.ReadTocPmaAtip(out buffer, out _, false, 0, 0, _dev.Timeout, out _);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.CanReadTOC);
@@ -679,7 +678,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_CD_Full_TOC).IsIndeterminate();
mediaTest.CanReadFullTOC = !_dev.ReadRawToc(out buffer, out senseBuffer, 1, _dev.Timeout, out _);
mediaTest.CanReadFullTOC = !_dev.ReadRawToc(out buffer, out _, 1, _dev.Timeout, out _);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.CanReadFullTOC);
@@ -692,7 +691,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_CD_ATIP).IsIndeterminate();
mediaTest.CanReadATIP = !_dev.ReadAtip(out buffer, out senseBuffer, _dev.Timeout, out _);
mediaTest.CanReadATIP = !_dev.ReadAtip(out buffer, out _, _dev.Timeout, out _);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.CanReadATIP);
@@ -702,7 +701,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_CD_PMA).IsIndeterminate();
mediaTest.CanReadPMA = !_dev.ReadPma(out buffer, out senseBuffer, _dev.Timeout, out _);
mediaTest.CanReadPMA = !_dev.ReadPma(out buffer, out _, _dev.Timeout, out _);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.CanReadPMA);
@@ -720,7 +719,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_PFI).IsIndeterminate();
mediaTest.CanReadPFI = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -739,7 +738,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_DMI).IsIndeterminate();
mediaTest.CanReadDMI = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -761,7 +760,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_CMI).IsIndeterminate();
mediaTest.CanReadCMI = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -785,7 +784,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_BCA).IsIndeterminate();
mediaTest.CanReadBCA = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -804,7 +803,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_AACS).IsIndeterminate();
mediaTest.CanReadAACS = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -826,7 +825,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_BCA).IsIndeterminate();
mediaTest.CanReadBCA = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -845,7 +844,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_PFI).IsIndeterminate();
mediaTest.CanReadPFI = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -864,7 +863,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_DMI).IsIndeterminate();
mediaTest.CanReadDMI = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -891,7 +890,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_BD_BCA).IsIndeterminate();
mediaTest.CanReadBCA = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Bd,
0,
0,
@@ -915,7 +914,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_Disc_Definition_Structure).IsIndeterminate();
mediaTest.CanReadDDS = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -935,7 +934,7 @@ public sealed partial class DeviceReport
mediaTest.CanReadSpareAreaInformation =
!_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -961,7 +960,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_BD_DDS).IsIndeterminate();
mediaTest.CanReadDDS = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Bd,
0,
0,
@@ -981,7 +980,7 @@ public sealed partial class DeviceReport
mediaTest.CanReadSpareAreaInformation =
!_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Bd,
0,
0,
@@ -1005,7 +1004,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_PRI).IsIndeterminate();
mediaTest.CanReadPRI = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -1027,7 +1026,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_Media_ID).IsIndeterminate();
mediaTest.CanReadMediaID = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -1044,7 +1043,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_Embossed_PFI).IsIndeterminate();
mediaTest.CanReadRecordablePFI = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -1066,7 +1065,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_ADIP).IsIndeterminate();
mediaTest.CanReadADIP = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -1085,7 +1084,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_DCB).IsIndeterminate();
mediaTest.CanReadDCB = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -1107,7 +1106,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_HD_DVD_CMI).IsIndeterminate();
mediaTest.CanReadHDCMI = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -1129,7 +1128,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_DVD_Layer_Capacity).IsIndeterminate();
mediaTest.CanReadLayerCapacity = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Dvd,
0,
0,
@@ -1157,7 +1156,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_BD_Disc_Information).IsIndeterminate();
mediaTest.CanReadDiscInformation = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Bd,
0,
0,
@@ -1176,7 +1175,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_BD_PAC).IsIndeterminate();
mediaTest.CanReadPAC = !_dev.ReadDiscStructure(out buffer,
out senseBuffer,
out _,
MmcDiscStructureMediaType.Bd,
0,
0,
@@ -1198,7 +1197,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_scrambled).IsIndeterminate();
mediaTest.CanReadCdScrambled = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2352,
1,
@@ -1223,7 +1222,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Trying_SCSI_READ_6).IsIndeterminate();
mediaTest.SupportsRead6 = !_dev.Read6(out buffer, out senseBuffer, 16, 512, _dev.Timeout, out _);
mediaTest.SupportsRead6 = !_dev.Read6(out buffer, out _, 16, 512, _dev.Timeout, out _);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.SupportsRead6);
@@ -1235,7 +1234,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_10).IsIndeterminate();
mediaTest.SupportsRead10 = !_dev.Read10(out buffer,
out senseBuffer,
out _,
0,
false,
true,
@@ -1258,7 +1257,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_12).IsIndeterminate();
mediaTest.SupportsRead12 = !_dev.Read12(out buffer,
out senseBuffer,
out _,
0,
false,
true,
@@ -1282,7 +1281,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_16).IsIndeterminate();
mediaTest.SupportsRead16 = !_dev.Read16(out buffer,
out senseBuffer,
out _,
0,
false,
true,
@@ -1305,7 +1304,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Trying_SCSI_READ_6).IsIndeterminate();
mediaTest.SupportsRead6 = !_dev.Read6(out buffer, out senseBuffer, 16, 2048, _dev.Timeout, out _);
mediaTest.SupportsRead6 = !_dev.Read6(out buffer, out _, 16, 2048, _dev.Timeout, out _);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.SupportsRead6);
@@ -1317,7 +1316,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_10).IsIndeterminate();
mediaTest.SupportsRead10 = !_dev.Read10(out buffer,
out senseBuffer,
out _,
0,
false,
true,
@@ -1340,7 +1339,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_12).IsIndeterminate();
mediaTest.SupportsRead12 = !_dev.Read12(out buffer,
out senseBuffer,
out _,
0,
false,
true,
@@ -1364,7 +1363,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_16).IsIndeterminate();
mediaTest.SupportsRead16 = !_dev.Read16(out buffer,
out senseBuffer,
out _,
0,
false,
true,
@@ -1394,7 +1393,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD).IsIndeterminate();
mediaTest.SupportsReadCd = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2352,
1,
@@ -1420,7 +1419,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_MSF).IsIndeterminate();
mediaTest.SupportsReadCdMsf = !_dev.ReadCdMsf(out buffer,
out senseBuffer,
out _,
0x00000210,
0x00000211,
2352,
@@ -1447,7 +1446,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD).IsIndeterminate();
mediaTest.SupportsReadCd = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2048,
1,
@@ -1473,7 +1472,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_MSF).IsIndeterminate();
mediaTest.SupportsReadCdMsf = !_dev.ReadCdMsf(out buffer,
out senseBuffer,
out _,
0x00000210,
0x00000211,
2048,
@@ -1498,7 +1497,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_full_sector).IsIndeterminate();
mediaTest.SupportsReadCdRaw = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2352,
1,
@@ -1524,7 +1523,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_MSF_full_sector).IsIndeterminate();
mediaTest.SupportsReadCdMsfRaw = !_dev.ReadCdMsf(out buffer,
out senseBuffer,
out _,
0x00000210,
0x00000211,
2352,
@@ -1557,7 +1556,7 @@ public sealed partial class DeviceReport
if(mediaType == "Audio CD")
{
sense = _dev.ReadCd(out buffer,
out senseBuffer,
out _,
(uint)i,
2352,
1,
@@ -1576,7 +1575,7 @@ public sealed partial class DeviceReport
else
{
sense = _dev.ReadCd(out buffer,
out senseBuffer,
out _,
(uint)i,
2352,
1,
@@ -1621,7 +1620,7 @@ public sealed partial class DeviceReport
if(mediaType == "Audio CD")
{
sense = _dev.ReadCd(out buffer,
out senseBuffer,
out _,
(uint)i,
2352,
1,
@@ -1640,7 +1639,7 @@ public sealed partial class DeviceReport
else
{
sense = _dev.ReadCd(out buffer,
out senseBuffer,
out _,
(uint)i,
2352,
1,
@@ -1678,7 +1677,7 @@ public sealed partial class DeviceReport
if(mediaType == "Audio CD")
{
mediaTest.CanReadLeadOut = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
(uint)((mediaTest.Blocks ?? 0) + 1),
2352,
1,
@@ -1697,7 +1696,7 @@ public sealed partial class DeviceReport
else
{
mediaTest.CanReadLeadOut = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
(uint)((mediaTest.Blocks ?? 0) + 1),
2352,
1,
@@ -1732,7 +1731,7 @@ public sealed partial class DeviceReport
else
{
mediaTest.CanReadC2Pointers = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2646,
1,
@@ -1751,7 +1750,7 @@ public sealed partial class DeviceReport
if(!mediaTest.CanReadC2Pointers == true)
{
mediaTest.CanReadC2Pointers = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2648,
1,
@@ -1781,7 +1780,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_to_read_subchannels).IsIndeterminate();
mediaTest.CanReadPQSubchannel = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2368,
1,
@@ -1804,7 +1803,7 @@ public sealed partial class DeviceReport
mediaTest.PQSubchannelData = buffer;
mediaTest.CanReadRWSubchannel = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2448,
1,
@@ -1832,7 +1831,7 @@ public sealed partial class DeviceReport
else
{
mediaTest.CanReadCorrectedSubchannel = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2448,
1,
@@ -1870,7 +1869,7 @@ public sealed partial class DeviceReport
else
{
mediaTest.CanReadPQSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2662,
1,
@@ -1889,7 +1888,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadPQSubchannelWithC2 == false)
{
mediaTest.CanReadPQSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2664,
1,
@@ -1913,7 +1912,7 @@ public sealed partial class DeviceReport
mediaTest.PQSubchannelWithC2Data = buffer;
mediaTest.CanReadRWSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2712,
1,
@@ -1932,7 +1931,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadRWSubchannelWithC2 == false)
{
mediaTest.CanReadRWSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2714,
1,
@@ -1956,7 +1955,7 @@ public sealed partial class DeviceReport
mediaTest.RWSubchannelWithC2Data = buffer;
mediaTest.CanReadCorrectedSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2712,
1,
@@ -1975,7 +1974,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadCorrectedSubchannelWithC2 == false)
{
mediaTest.CanReadCorrectedSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
11,
2714,
1,
@@ -2012,7 +2011,7 @@ public sealed partial class DeviceReport
else
{
mediaTest.CanReadC2Pointers = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2646,
1,
@@ -2031,7 +2030,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadC2Pointers == false)
{
mediaTest.CanReadC2Pointers = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2648,
1,
@@ -2061,7 +2060,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_to_read_subchannels).IsIndeterminate();
mediaTest.CanReadPQSubchannel = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2368,
1,
@@ -2084,7 +2083,7 @@ public sealed partial class DeviceReport
mediaTest.PQSubchannelData = buffer;
mediaTest.CanReadRWSubchannel = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2448,
1,
@@ -2112,7 +2111,7 @@ public sealed partial class DeviceReport
else
{
mediaTest.CanReadCorrectedSubchannel = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2448,
1,
@@ -2149,7 +2148,7 @@ public sealed partial class DeviceReport
else
{
mediaTest.CanReadPQSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2662,
1,
@@ -2168,7 +2167,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadPQSubchannelWithC2 == false)
{
mediaTest.CanReadPQSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2664,
1,
@@ -2192,7 +2191,7 @@ public sealed partial class DeviceReport
mediaTest.PQSubchannelWithC2Data = buffer;
mediaTest.CanReadRWSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2712,
1,
@@ -2211,7 +2210,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadRWSubchannelWithC2 == false)
{
mediaTest.CanReadRWSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2714,
1,
@@ -2235,7 +2234,7 @@ public sealed partial class DeviceReport
mediaTest.RWSubchannelWithC2Data = buffer;
mediaTest.CanReadCorrectedSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2712,
1,
@@ -2259,7 +2258,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadCorrectedSubchannelWithC2 == false)
{
mediaTest.CanReadCorrectedSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2714,
1,
@@ -2296,7 +2295,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_to_read_C2_Pointers).IsIndeterminate();
mediaTest.CanReadC2Pointers = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2342,
1,
@@ -2315,7 +2314,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadC2Pointers == false)
{
mediaTest.CanReadC2Pointers = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2344,
1,
@@ -2343,7 +2342,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_to_read_subchannels).IsIndeterminate();
mediaTest.CanReadPQSubchannel = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2064,
1,
@@ -2366,7 +2365,7 @@ public sealed partial class DeviceReport
mediaTest.PQSubchannelData = buffer;
mediaTest.CanReadRWSubchannel = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2144,
1,
@@ -2394,7 +2393,7 @@ public sealed partial class DeviceReport
else
{
mediaTest.CanReadCorrectedSubchannel = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2144,
1,
@@ -2431,7 +2430,7 @@ public sealed partial class DeviceReport
else
{
mediaTest.CanReadPQSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2358,
1,
@@ -2450,7 +2449,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadPQSubchannelWithC2 == false)
{
mediaTest.CanReadPQSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2360,
1,
@@ -2474,7 +2473,7 @@ public sealed partial class DeviceReport
mediaTest.PQSubchannelWithC2Data = buffer;
mediaTest.CanReadRWSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2438,
1,
@@ -2493,7 +2492,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadRWSubchannelWithC2 == false)
{
mediaTest.CanReadRWSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2440,
1,
@@ -2517,7 +2516,7 @@ public sealed partial class DeviceReport
mediaTest.RWSubchannelWithC2Data = buffer;
mediaTest.CanReadCorrectedSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2438,
1,
@@ -2536,7 +2535,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadCorrectedSubchannelWithC2 == false)
{
mediaTest.CanReadCorrectedSubchannelWithC2 = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
16,
2440,
1,
@@ -2570,7 +2569,7 @@ public sealed partial class DeviceReport
mediaTest.SupportsPlextorReadCDDA =
!_dev.PlextorReadCdDa(out buffer,
out senseBuffer,
out _,
16,
2352,
1,
@@ -2594,7 +2593,7 @@ public sealed partial class DeviceReport
mediaTest.SupportsPioneerReadCDDA =
!_dev.PioneerReadCdDa(out buffer,
out senseBuffer,
out _,
16,
2352,
1,
@@ -2615,7 +2614,7 @@ public sealed partial class DeviceReport
mediaTest.SupportsPioneerReadCDDAMSF =
!_dev.PioneerReadCdDaMsf(out buffer,
out senseBuffer,
out _,
0x00000210,
0x00000211,
2352,
@@ -2637,8 +2636,7 @@ public sealed partial class DeviceReport
{
ctx.AddTask(Localization.Core.Trying_NEC_READ_CD_DA).IsIndeterminate();
mediaTest.SupportsNECReadCDDA =
!_dev.NecReadCdDa(out buffer, out senseBuffer, 16, 1, _dev.Timeout, out _);
mediaTest.SupportsNECReadCDDA = !_dev.NecReadCdDa(out buffer, out _, 16, 1, _dev.Timeout, out _);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.SupportsNECReadCDDA);
@@ -2648,16 +2646,19 @@ public sealed partial class DeviceReport
}
mediaTest.LongBlockSize = mediaTest.BlockSize;
byte[] senseBytes = [];
Spectre.ProgressSingleSpinner(ctx =>
{
ReadOnlySpan<byte> localSense;
ctx.AddTask(Localization.Core.Trying_SCSI_READ_LONG_10).IsIndeterminate();
sense = _dev.ReadLong10(out buffer, out senseBuffer, false, false, 16, 0xFFFF, _dev.Timeout, out _);
sense = _dev.ReadLong10(out buffer, out localSense, false, false, 16, 0xFFFF, _dev.Timeout, out _);
senseBytes = localSense.ToArray();
});
if(sense && !_dev.Error)
{
DecodedSense? decSense = Sense.Decode(senseBuffer);
DecodedSense? decSense = Sense.Decode(senseBytes);
if(decSense is { SenseKey: SenseKeys.IllegalRequest, ASC: 0x24, ASCQ: 0x00 })
{
@@ -2682,7 +2683,7 @@ public sealed partial class DeviceReport
if(mediaTest.SupportsReadLong == true && mediaTest.LongBlockSize == mediaTest.BlockSize)
{
// DVDs
sense = _dev.ReadLong10(out buffer, out senseBuffer, false, false, 16, 37856, _dev.Timeout, out _);
sense = _dev.ReadLong10(out buffer, out _, false, false, 16, 37856, _dev.Timeout, out _);
if(!sense && !_dev.Error)
{
@@ -2699,7 +2700,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_Plextor_trick_to_raw_read_DVDs).IsIndeterminate();
mediaTest.SupportsPlextorReadRawDVD =
!_dev.PlextorReadRawDvd(out buffer, out senseBuffer, 16, 1, _dev.Timeout, out _);
!_dev.PlextorReadRawDvd(out buffer, out _, 16, 1, _dev.Timeout, out _);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.SupportsPlextorReadRawDVD);
@@ -2717,7 +2718,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_HL_DT_ST_aka_LG_trick_to_raw_read_DVDs).IsIndeterminate();
mediaTest.SupportsHLDTSTReadRawDVD =
!_dev.HlDtStReadRawDvd(out buffer, out senseBuffer, 16, 1, _dev.Timeout, out _, 0xffff, false);
!_dev.HlDtStReadRawDvd(out buffer, out _, 16, 1, _dev.Timeout, out _, 0xffff, false);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.SupportsHLDTSTReadRawDVD);
@@ -2735,7 +2736,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_Lite_On_trick_to_raw_read_DVDs).IsIndeterminate();
mediaTest.SupportsLiteOnReadRawDVD =
!_dev.LiteOnReadRawDvd(out buffer, out senseBuffer, 16, 1, _dev.Timeout, out _, 0xffff, false);
!_dev.LiteOnReadRawDvd(out buffer, out _, 16, 1, _dev.Timeout, out _, 0xffff, false);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.SupportsLiteOnReadRawDVD);
@@ -2846,10 +2847,12 @@ public sealed partial class DeviceReport
if(!triedLba0) return;
mediaTest.CanReadF1_06 =
!_dev.MediaTekReadDram(out buffer, out senseBuffer, 0, 0xB00, _dev.Timeout, out _);
ReadOnlySpan<byte> localSense;
mediaTest.ReadF1_06Data = mediaTest.CanReadF1_06 == true ? buffer : senseBuffer;
mediaTest.CanReadF1_06 =
!_dev.MediaTekReadDram(out buffer, out localSense, 0, 0xB00, _dev.Timeout, out _);
mediaTest.ReadF1_06Data = mediaTest.CanReadF1_06 == true ? buffer : localSense.ToArray();
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.CanReadF1_06);
});
@@ -2990,10 +2993,12 @@ public sealed partial class DeviceReport
if(!triedLeadOut) return;
mediaTest.CanReadF1_06LeadOut =
!_dev.MediaTekReadDram(out buffer, out senseBuffer, 0, 0xB00, _dev.Timeout, out _);
ReadOnlySpan<byte> localSense;
mediaTest.ReadF1_06LeadOutData = mediaTest.CanReadF1_06LeadOut == true ? buffer : senseBuffer;
mediaTest.CanReadF1_06LeadOut =
!_dev.MediaTekReadDram(out buffer, out localSense, 0, 0xB00, _dev.Timeout, out _);
mediaTest.ReadF1_06LeadOutData = mediaTest.CanReadF1_06LeadOut == true ? buffer : localSense.ToArray();
// This means it has returned the same as previous read, so not really lead-out.
if(mediaTest.CanReadF1_06 == true &&
@@ -3001,7 +3006,7 @@ public sealed partial class DeviceReport
mediaTest.ReadF1_06Data.SequenceEqual(mediaTest.ReadF1_06LeadOutData))
{
mediaTest.CanReadF1_06LeadOut = false;
mediaTest.ReadF1_06LeadOutData = senseBuffer;
mediaTest.ReadF1_06LeadOutData = localSense.ToArray();
}
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.CanReadF1_06LeadOut);
@@ -3014,7 +3019,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_CD_Full_TOC).IsIndeterminate();
mediaTest.CanReadFullTOC = !_dev.ReadRawToc(out buffer, out senseBuffer, 1, _dev.Timeout, out _);
mediaTest.CanReadFullTOC = !_dev.ReadRawToc(out buffer, out _, 1, _dev.Timeout, out _);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.CanReadFullTOC);
@@ -3082,7 +3087,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_in_first_session_Lead_Out).IsIndeterminate();
mediaTest.CanReadingIntersessionLeadOut = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
firstSessionLeadOutLba,
2448,
1,
@@ -3101,7 +3106,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadingIntersessionLeadOut != false) return;
mediaTest.CanReadingIntersessionLeadOut = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
firstSessionLeadOutLba,
2368,
1,
@@ -3120,7 +3125,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadingIntersessionLeadOut == false)
{
mediaTest.CanReadingIntersessionLeadOut = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
firstSessionLeadOutLba,
2352,
1,
@@ -3149,7 +3154,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_CD_in_second_session_Lead_In).IsIndeterminate();
mediaTest.CanReadingIntersessionLeadIn = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
secondSessionLeadInLba,
2448,
1,
@@ -3168,7 +3173,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadingIntersessionLeadIn != false) return;
mediaTest.CanReadingIntersessionLeadIn = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
secondSessionLeadInLba,
2368,
1,
@@ -3187,7 +3192,7 @@ public sealed partial class DeviceReport
if(mediaTest.CanReadingIntersessionLeadIn == false)
{
mediaTest.CanReadingIntersessionLeadIn = !_dev.ReadCd(out buffer,
out senseBuffer,
out _,
secondSessionLeadInLba,
2352,
1,

View File

@@ -510,15 +510,15 @@ public sealed partial class DeviceReport
/// <returns>Media report</returns>
public TestedMedia ReportScsiMedia()
{
var mediaTest = new TestedMedia();
bool sense = true;
byte[] buffer = [];
byte[] senseBuffer = [];
var mediaTest = new TestedMedia();
bool sense = true;
byte[] buffer = [];
ReadOnlySpan<byte> senseBuffer = [];
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY).IsIndeterminate();
sense = _dev.ReadCapacity(out buffer, out senseBuffer, _dev.Timeout, out _);
sense = _dev.ReadCapacity(out buffer, out _, _dev.Timeout, out _);
});
if(!sense && !_dev.Error)
@@ -535,7 +535,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY_16).IsIndeterminate();
sense = _dev.ReadCapacity16(out buffer, out buffer, _dev.Timeout, out _);
sense = _dev.ReadCapacity16(out buffer, out _, _dev.Timeout, out _);
});
if(!sense && !_dev.Error)
@@ -555,7 +555,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE_10).IsIndeterminate();
sense = _dev.ModeSense10(out buffer,
out senseBuffer,
out _,
false,
true,
ScsiModeSensePageControl.Current,
@@ -574,7 +574,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE).IsIndeterminate();
sense = _dev.ModeSense(out buffer, out senseBuffer, _dev.Timeout, out _);
sense = _dev.ModeSense(out buffer, out _, _dev.Timeout, out _);
});
if(!sense && !_dev.Error)
@@ -597,7 +597,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_6).IsIndeterminate();
mediaTest.SupportsRead6 =
!_dev.Read6(out buffer, out senseBuffer, 0, mediaTest.BlockSize ?? 512, _dev.Timeout, out _);
!_dev.Read6(out buffer, out _, 0, mediaTest.BlockSize ?? 512, _dev.Timeout, out _);
});
AaruLogging.Debug(SCSI_MODULE_NAME, Localization.Core.Sense_equals_0, !mediaTest.SupportsRead6);
@@ -608,7 +608,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_10).IsIndeterminate();
mediaTest.SupportsRead10 = !_dev.Read10(out buffer,
out senseBuffer,
out _,
0,
false,
false,
@@ -630,7 +630,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_12).IsIndeterminate();
mediaTest.SupportsRead12 = !_dev.Read12(out buffer,
out senseBuffer,
out _,
0,
false,
false,
@@ -653,7 +653,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_16).IsIndeterminate();
mediaTest.SupportsRead16 = !_dev.Read16(out buffer,
out senseBuffer,
out _,
0,
false,
false,
@@ -671,16 +671,19 @@ public sealed partial class DeviceReport
mediaTest.Read16Data = buffer;
mediaTest.LongBlockSize = mediaTest.BlockSize;
byte[] senseBytes = [];
Spectre.ProgressSingleSpinner(ctx =>
{
ReadOnlySpan<byte> localSense;
ctx.AddTask(Localization.Core.Trying_SCSI_READ_LONG_10).IsIndeterminate();
sense = _dev.ReadLong10(out buffer, out senseBuffer, false, false, 0, 0xFFFF, _dev.Timeout, out _);
sense = _dev.ReadLong10(out buffer, out localSense, false, false, 0, 0xFFFF, _dev.Timeout, out _);
senseBytes = localSense.ToArray();
});
if(sense && !_dev.Error)
{
DecodedSense? decSense = Sense.Decode(senseBuffer);
DecodedSense? decSense = Sense.Decode(senseBytes);
if(decSense is { SenseKey: SenseKeys.IllegalRequest, ASC: 0x24, ASCQ: 0x00 })
{
@@ -704,12 +707,13 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ReadOnlySpan<byte> localSense;
ctx.AddTask(Localization.Core.Trying_SCSI_READ_LONG_16).IsIndeterminate();
sense = _dev.ReadLong16(out buffer, out senseBuffer, false, 0, 0xFFFF, _dev.Timeout, out _);
sense = _dev.ReadLong16(out buffer, out localSense, false, 0, 0xFFFF, _dev.Timeout, out _);
if(sense && !_dev.Error)
{
DecodedSense? decSense = Sense.Decode(senseBuffer);
DecodedSense? decSense = Sense.Decode(localSense);
if(decSense is { SenseKey: SenseKeys.IllegalRequest, ASC: 0x24, ASCQ: 0x00 })
{
@@ -753,14 +757,14 @@ public sealed partial class DeviceReport
{
sense = mediaTest.SupportsReadLong16 == true
? _dev.ReadLong16(out buffer,
out senseBuffer,
out localSense,
false,
0,
testSize,
_dev.Timeout,
out _)
: _dev.ReadLong10(out buffer,
out senseBuffer,
out localSense,
false,
false,
0,
@@ -790,14 +794,14 @@ public sealed partial class DeviceReport
{
sense = mediaTest.SupportsReadLong16 == true
? _dev.ReadLong16(out buffer,
out senseBuffer,
out localSense,
false,
0,
testSize,
_dev.Timeout,
out _)
: _dev.ReadLong10(out buffer,
out senseBuffer,
out localSense,
false,
false,
0,
@@ -817,9 +821,9 @@ public sealed partial class DeviceReport
case 2048:
{
sense = mediaTest.SupportsReadLong16 == true
? _dev.ReadLong16(out buffer, out senseBuffer, false, 0, 2380, _dev.Timeout, out _)
? _dev.ReadLong16(out buffer, out localSense, false, 0, 2380, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer,
out senseBuffer,
out localSense,
false,
false,
0,
@@ -834,9 +838,9 @@ public sealed partial class DeviceReport
case 4096:
{
sense = mediaTest.SupportsReadLong16 == true
? _dev.ReadLong16(out buffer, out senseBuffer, false, 0, 4760, _dev.Timeout, out _)
? _dev.ReadLong16(out buffer, out localSense, false, 0, 4760, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer,
out senseBuffer,
out localSense,
false,
false,
0,
@@ -851,9 +855,9 @@ public sealed partial class DeviceReport
case 8192:
{
sense = mediaTest.SupportsReadLong16 == true
? _dev.ReadLong16(out buffer, out senseBuffer, false, 0, 9424, _dev.Timeout, out _)
? _dev.ReadLong16(out buffer, out localSense, false, 0, 9424, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer,
out senseBuffer,
out localSense,
false,
false,
0,
@@ -872,8 +876,7 @@ public sealed partial class DeviceReport
{
ctx.AddTask(Localization.Core.Trying_SCSI_READ_MEDIA_SERIAL_NUMBER).IsIndeterminate();
mediaTest.CanReadMediaSerial =
!_dev.ReadMediaSerialNumber(out buffer, out senseBuffer, _dev.Timeout, out _);
mediaTest.CanReadMediaSerial = !_dev.ReadMediaSerialNumber(out buffer, out _, _dev.Timeout, out _);
});
return mediaTest;
@@ -883,9 +886,9 @@ public sealed partial class DeviceReport
/// <returns>Media report</returns>
public TestedMedia ReportScsi()
{
bool sense = true;
byte[] buffer = [];
byte[] senseBuffer = [];
bool sense = true;
byte[] buffer = [];
ReadOnlySpan<byte> senseBuffer = [];
var capabilities = new TestedMedia
{
@@ -895,7 +898,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY).IsIndeterminate();
sense = _dev.ReadCapacity(out buffer, out senseBuffer, _dev.Timeout, out _);
sense = _dev.ReadCapacity(out buffer, out _, _dev.Timeout, out _);
});
if(!sense && !_dev.Error)
@@ -912,7 +915,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_SCSI_READ_CAPACITY_16).IsIndeterminate();
sense = _dev.ReadCapacity16(out buffer, out buffer, _dev.Timeout, out _);
sense = _dev.ReadCapacity16(out buffer, out _, _dev.Timeout, out _);
});
if(!sense && !_dev.Error)
@@ -932,7 +935,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE_10).IsIndeterminate();
sense = _dev.ModeSense10(out buffer,
out senseBuffer,
out _,
false,
true,
ScsiModeSensePageControl.Current,
@@ -951,7 +954,7 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ctx.AddTask(Localization.Core.Querying_SCSI_MODE_SENSE).IsIndeterminate();
sense = _dev.ModeSense(out buffer, out senseBuffer, _dev.Timeout, out _);
sense = _dev.ModeSense(out buffer, out _, _dev.Timeout, out _);
});
if(!sense && !_dev.Error)
@@ -974,7 +977,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_6).IsIndeterminate();
capabilities.SupportsRead6 = !_dev.Read6(out buffer,
out senseBuffer,
out _,
0,
capabilities.BlockSize ?? 512,
_dev.Timeout,
@@ -989,7 +992,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_10).IsIndeterminate();
capabilities.SupportsRead10 = !_dev.Read10(out buffer,
out senseBuffer,
out _,
0,
false,
false,
@@ -1011,7 +1014,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_12).IsIndeterminate();
capabilities.SupportsRead12 = !_dev.Read12(out buffer,
out senseBuffer,
out _,
0,
false,
false,
@@ -1034,7 +1037,7 @@ public sealed partial class DeviceReport
ctx.AddTask(Localization.Core.Trying_SCSI_READ_16).IsIndeterminate();
capabilities.SupportsRead16 = !_dev.Read16(out buffer,
out senseBuffer,
out _,
0,
false,
false,
@@ -1052,16 +1055,19 @@ public sealed partial class DeviceReport
capabilities.Read16Data = buffer;
capabilities.LongBlockSize = capabilities.BlockSize;
byte[] senseBytes = [];
Spectre.ProgressSingleSpinner(ctx =>
{
ReadOnlySpan<byte> localSense;
ctx.AddTask(Localization.Core.Trying_SCSI_READ_LONG_10).IsIndeterminate();
sense = _dev.ReadLong10(out buffer, out senseBuffer, false, false, 0, 0xFFFF, _dev.Timeout, out _);
sense = _dev.ReadLong10(out buffer, out localSense, false, false, 0, 0xFFFF, _dev.Timeout, out _);
senseBytes = localSense.ToArray();
});
if(sense && !_dev.Error)
{
DecodedSense? decSense = Sense.Decode(senseBuffer);
DecodedSense? decSense = Sense.Decode(senseBytes);
if(decSense is { SenseKey: SenseKeys.IllegalRequest, ASC: 0x24, ASCQ: 0x00 })
{
@@ -1085,14 +1091,16 @@ public sealed partial class DeviceReport
Spectre.ProgressSingleSpinner(ctx =>
{
ReadOnlySpan<byte> localSense;
ctx.AddTask(Localization.Core.Trying_SCSI_READ_LONG_16).IsIndeterminate();
sense = _dev.ReadLong16(out buffer, out senseBuffer, false, 0, 0xFFFF, _dev.Timeout, out _);
sense = _dev.ReadLong16(out buffer, out localSense, false, 0, 0xFFFF, _dev.Timeout, out _);
senseBytes = localSense.ToArray();
});
if(sense && !_dev.Error)
{
capabilities.SupportsReadLong16 = true;
DecodedSense? decSense = Sense.Decode(senseBuffer);
DecodedSense? decSense = Sense.Decode(senseBytes);
if(decSense is { SenseKey: SenseKeys.IllegalRequest, ASC: 0x24, ASCQ: 0x00 })
{
@@ -1142,15 +1150,9 @@ public sealed partial class DeviceReport
})
{
sense = capabilities.SupportsReadLong16 == true
? _dev.ReadLong16(out buffer,
out senseBuffer,
false,
0,
testSize,
_dev.Timeout,
out _)
? _dev.ReadLong16(out buffer, out _, false, 0, testSize, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer,
out senseBuffer,
out _,
false,
false,
0,
@@ -1180,15 +1182,9 @@ public sealed partial class DeviceReport
})
{
sense = capabilities.SupportsReadLong16 == true
? _dev.ReadLong16(out buffer,
out senseBuffer,
false,
0,
testSize,
_dev.Timeout,
out _)
? _dev.ReadLong16(out buffer, out _, false, 0, testSize, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer,
out senseBuffer,
out _,
false,
false,
0,
@@ -1209,15 +1205,8 @@ public sealed partial class DeviceReport
case 2048:
{
sense = capabilities.SupportsReadLong16 == true
? _dev.ReadLong16(out buffer, out senseBuffer, false, 0, 2380, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer,
out senseBuffer,
false,
false,
0,
2380,
_dev.Timeout,
out _);
? _dev.ReadLong16(out buffer, out _, false, 0, 2380, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer, out _, false, false, 0, 2380, _dev.Timeout, out _);
if(sense || _dev.Error) return;
@@ -1229,15 +1218,8 @@ public sealed partial class DeviceReport
case 4096:
{
sense = capabilities.SupportsReadLong16 == true
? _dev.ReadLong16(out buffer, out senseBuffer, false, 0, 4760, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer,
out senseBuffer,
false,
false,
0,
4760,
_dev.Timeout,
out _);
? _dev.ReadLong16(out buffer, out _, false, 0, 4760, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer, out _, false, false, 0, 4760, _dev.Timeout, out _);
if(sense || _dev.Error) return;
@@ -1249,15 +1231,8 @@ public sealed partial class DeviceReport
case 8192:
{
sense = capabilities.SupportsReadLong16 == true
? _dev.ReadLong16(out buffer, out senseBuffer, false, 0, 9424, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer,
out senseBuffer,
false,
false,
0,
9424,
_dev.Timeout,
out _);
? _dev.ReadLong16(out buffer, out _, false, 0, 9424, _dev.Timeout, out _)
: _dev.ReadLong10(out buffer, out _, false, false, 0, 9424, _dev.Timeout, out _);
if(sense || _dev.Error) return;

View File

@@ -49,15 +49,15 @@ public sealed partial class MediaScan
{
ScanResults Scsi()
{
var results = new ScanResults();
MhddLog mhddLog;
IbgLog ibgLog;
byte[] senseBuf;
bool sense;
uint blockSize = 0;
ushort currentProfile = 0x0001;
bool foundReadCommand = false;
bool readcd = false;
var results = new ScanResults();
MhddLog mhddLog;
IbgLog ibgLog;
ReadOnlySpan<byte> senseBuf;
bool sense;
uint blockSize = 0;
ushort currentProfile = 0x0001;
bool foundReadCommand = false;
bool readcd = false;
results.Blocks = 0;
@@ -119,7 +119,7 @@ public sealed partial class MediaScan
{
StoppingErrorMessage?.Invoke(string.Format(Localization.Core
.Error_testing_unit_was_ready_0,
Sense.PrettifySense(senseBuf)));
Sense.PrettifySense(senseBuf.ToArray())));
return results;
}
@@ -148,7 +148,7 @@ public sealed partial class MediaScan
{
StoppingErrorMessage?.Invoke(string.Format(Localization.Core
.Error_testing_unit_was_ready_0,
Sense.PrettifySense(senseBuf)));
Sense.PrettifySense(senseBuf.ToArray())));
return results;
}
@@ -157,7 +157,7 @@ public sealed partial class MediaScan
}
default:
StoppingErrorMessage?.Invoke(string.Format(Localization.Core.Error_testing_unit_was_ready_0,
Sense.PrettifySense(senseBuf)));
Sense.PrettifySense(senseBuf.ToArray())));
return results;
}
@@ -458,7 +458,9 @@ public sealed partial class MediaScan
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_CD_error_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
;
senseDecoded = Sense.Decode(senseBuf);

View File

@@ -319,8 +319,8 @@ public sealed class ErrorLog
}
DecodedSense? decodedSense = Sense.Decode(senseBuffer);
string prettySense = Sense.PrettifySense(senseBuffer);
var hexSense = string.Join(' ', senseBuffer.Select(b => $"{b:X2}"));
string prettySense = Sense.PrettifySense(senseBuffer.ToArray());
string hexSense = string.Join(' ', senseBuffer.Select(b => $"{b:X2}"));
if(decodedSense.HasValue)
{
@@ -369,6 +369,9 @@ public sealed class ErrorLog
_logSw.Flush();
}
public void WriteLine(ulong block, bool osError, int errno, ReadOnlySpan<byte> senseBuffer) =>
WriteLine(block, osError, errno, senseBuffer.ToArray());
/// <summary>Register an SCSI error after trying to read</summary>
/// <param name="block">Starting block</param>
/// <param name="osError"><c>true</c> if operating system returned an error status instead of the device</param>
@@ -385,8 +388,8 @@ public sealed class ErrorLog
}
DecodedSense? decodedSense = Sense.Decode(senseBuffer);
string prettySense = Sense.PrettifySense(senseBuffer);
var hexSense = string.Join(' ', senseBuffer.Select(b => $"{b:X2}"));
string prettySense = Sense.PrettifySense(senseBuffer.ToArray());
string hexSense = string.Join(' ', senseBuffer.Select(b => $"{b:X2}"));
if(decodedSense.HasValue)
{
@@ -488,4 +491,9 @@ public sealed class ErrorLog
throw new NotImplementedException();
}
public void WriteLine(string command, bool osError, int errno, ReadOnlySpan<byte> senseBuffer)
{
WriteLine(command, osError, errno, senseBuffer.ToArray());
}
}

View File

@@ -66,13 +66,13 @@ public sealed class ScsiInfo
MediaType = MediaType.Unknown;
MediaInserted = false;
int resets = 0;
bool sense;
byte[] cmdBuf;
byte[] senseBuf;
bool containsFloppyPage = false;
int sessions = 1;
int firstTrackLastSession = 1;
int resets = 0;
bool sense;
byte[] cmdBuf;
ReadOnlySpan<byte> senseBuf;
bool containsFloppyPage = false;
int sessions = 1;
int firstTrackLastSession = 1;
if(dev.IsRemovable)
{
@@ -137,7 +137,7 @@ public sealed class ScsiInfo
if(sense)
{
AaruLogging.Error(Localization.Core.Error_testing_unit_was_ready_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
return;
}
@@ -146,7 +146,7 @@ public sealed class ScsiInfo
}
default:
AaruLogging.Error(Localization.Core.Error_testing_unit_was_ready_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
return;
}
@@ -211,7 +211,7 @@ public sealed class ScsiInfo
if(dev.ScsiType != PeripheralDeviceTypes.MultiMediaDevice)
{
AaruLogging.Error(Localization.Core.Unable_to_get_media_capacity);
AaruLogging.Error("{0}", Sense.PrettifySense(senseBuf));
AaruLogging.Error("{0}", Sense.PrettifySense(senseBuf.ToArray()));
}
}
@@ -262,7 +262,7 @@ public sealed class ScsiInfo
/*
sense = dev.ReadAttribute(out seqBuf, out senseBuf, ScsiAttributeAction.List, 0, dev.Timeout, out _);
if (sense)
AaruLogging.ErrorWriteLine("SCSI READ ATTRIBUTE:\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.ErrorWriteLine("SCSI READ ATTRIBUTE:\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
{
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_scsi_readattribute.bin", "SCSI READ ATTRIBUTE", seqBuf);
@@ -296,7 +296,7 @@ public sealed class ScsiInfo
if(sense)
{
AaruLogging.Debug(MODULE_NAME, "READ GET CONFIGURATION:\n{0}", Sense.PrettifySense(senseBuf));
AaruLogging.Debug(MODULE_NAME, "READ GET CONFIGURATION:\n{0}", Sense.PrettifySense(senseBuf.ToArray()));
if(dev.IsUsb && scsiMediumType is 0x40 or 0x41 or 0x42) MediaType = MediaType.FlashDrive;
}
@@ -371,7 +371,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Recognized_Format_Layers_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
RecognizedFormatLayers = cmdBuf;
@@ -390,7 +390,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Write_Protection_Status_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
WriteProtectionStatus = cmdBuf;
@@ -399,7 +399,7 @@ public sealed class ScsiInfo
/*
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.DVD, 0, 0, MmcDiscStructureFormat.CapabilityList, 0, dev.Timeout, out _);
if(sense)
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: Capability List\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: Capability List\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_readdiscstructure_capabilitylist.bin", "SCSI READ DISC STRUCTURE", cmdBuf);
*/
@@ -438,7 +438,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_PFI_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
{
@@ -490,7 +490,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_DMI_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
{
@@ -529,7 +529,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_CMI_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdCmi = cmdBuf;
@@ -558,7 +558,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_BCA_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdBca = cmdBuf;
@@ -577,7 +577,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_DVD_AACS_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdAacs = cmdBuf;
@@ -604,7 +604,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_DDS_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdRamDds = cmdBuf;
@@ -623,7 +623,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Medium_Status_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdRamCartridgeStatus = cmdBuf;
@@ -642,7 +642,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_SAI_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdRamSpareArea = cmdBuf;
@@ -669,7 +669,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Last_Out_Border_RMD_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
LastBorderOutRmd = cmdBuf;
@@ -698,7 +698,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Disc_Key_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdDiscKey = cmdBuf;
@@ -717,7 +717,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Sector_CMI_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdSectorCmi = cmdBuf;
@@ -728,47 +728,47 @@ public sealed class ScsiInfo
/*
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.DVD, 0, 0, MmcDiscStructureFormat.MediaIdentifier, 0, dev.Timeout, out _);
if(sense)
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: Media ID\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: Media ID\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_readdiscstructure_dvd_mediaid.bin", "SCSI READ DISC STRUCTURE", cmdBuf);
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.DVD, 0, 0, MmcDiscStructureFormat.MediaKeyBlock, 0, dev.Timeout, out _);
if(sense)
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: MKB\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: MKB\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_readdiscstructure_dvd_mkb.bin", "SCSI READ DISC STRUCTURE", cmdBuf);
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.DVD, 0, 0, MmcDiscStructureFormat.AACSVolId, 0, dev.Timeout, out _);
if(sense)
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS Volume ID\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS Volume ID\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_readdiscstructure_aacsvolid.bin", "SCSI READ DISC STRUCTURE", cmdBuf);
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.DVD, 0, 0, MmcDiscStructureFormat.AACSMediaSerial, 0, dev.Timeout, out _);
if(sense)
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS Media Serial Number\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS Media Serial Number\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_readdiscstructure_aacssn.bin", "SCSI READ DISC STRUCTURE", cmdBuf);
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.DVD, 0, 0, MmcDiscStructureFormat.AACSMediaId, 0, dev.Timeout, out _);
if(sense)
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS Media ID\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS Media ID\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_readdiscstructure_aacsmediaid.bin", "SCSI READ DISC STRUCTURE", cmdBuf);
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.DVD, 0, 0, MmcDiscStructureFormat.AACSMKB, 0, dev.Timeout, out _);
if(sense)
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS MKB\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS MKB\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_readdiscstructure_aacsmkb.bin", "SCSI READ DISC STRUCTURE", cmdBuf);
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.DVD, 0, 0, MmcDiscStructureFormat.AACSLBAExtents, 0, dev.Timeout, out _);
if(sense)
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS LBA Extents\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS LBA Extents\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_readdiscstructure_aacslbaextents.bin", "SCSI READ DISC STRUCTURE", cmdBuf);
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.DVD, 0, 0, MmcDiscStructureFormat.AACSMKBCPRM, 0, dev.Timeout, out _);
if(sense)
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS CPRM MKB\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS CPRM MKB\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_readdiscstructure_aacscprmmkb.bin", "SCSI READ DISC STRUCTURE", cmdBuf);
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.DVD, 0, 0, MmcDiscStructureFormat.AACSDataKeys, 0, dev.Timeout, out _);
if(sense)
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS Data Keys\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf));
AaruLogging.DebugWriteLine(MODULE_NAME, "READ DISC STRUCTURE: AACS Data Keys\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf.ToArray()));
else
DataFile.WriteTo(MODULE_NAME, outputPrefix, "_readdiscstructure_aacsdatakeys.bin", "SCSI READ DISC STRUCTURE", cmdBuf);
*/
@@ -793,7 +793,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Pre_Recorded_Info_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
{
@@ -828,7 +828,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_DVD_R_Media_ID_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdrMediaIdentifier = cmdBuf;
@@ -847,7 +847,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_DVD_R_PFI_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
{
@@ -880,7 +880,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_ADIP_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdPlusAdip = cmdBuf;
@@ -899,7 +899,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_DCB_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdPlusDcb = cmdBuf;
@@ -925,7 +925,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_HD_DVD_CMI_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
HddvdCopyrightInformation = cmdBuf;
@@ -955,7 +955,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_HD_DVD_R_Medium_Status,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
HddvdrMediumStatus = cmdBuf;
@@ -974,7 +974,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Last_RMD_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
HddvdrLastRmd = cmdBuf;
@@ -1002,7 +1002,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Layer_Capacity_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdrLayerCapacity = cmdBuf;
@@ -1032,7 +1032,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Middle_Zone_Start_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdrDlMiddleZoneStart = cmdBuf;
@@ -1051,7 +1051,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Jump_Interval_Size_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdrDlJumpIntervalSize = cmdBuf;
@@ -1070,7 +1070,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Manual_Layer_Jump_Start_LBA_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdrDlManualLayerJumpStartLba = cmdBuf;
@@ -1089,7 +1089,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Remap_Anchor_Point_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdrDlRemapAnchorPoint = cmdBuf;
@@ -1123,7 +1123,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_DI_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
BlurayDiscInformation = cmdBuf;
@@ -1142,7 +1142,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_PAC_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
BlurayPac = cmdBuf;
@@ -1161,7 +1161,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_BCA_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
BlurayBurstCuttingArea = cmdBuf;
@@ -1193,7 +1193,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_DDS_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
BlurayDds = cmdBuf;
@@ -1212,7 +1212,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Cartridge_Status_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
BlurayCartridgeStatus = cmdBuf;
@@ -1231,7 +1231,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
"READ DISC STRUCTURE: Spare Area Information\n{0}",
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
BluraySpareAreaInformation = cmdBuf;
@@ -1250,7 +1250,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_Raw_DFL_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
BlurayRawDfl = cmdBuf;
@@ -1265,7 +1265,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_001b_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
BlurayTrackResources = cmdBuf;
@@ -1280,7 +1280,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_010b_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
BlurayPowResources = cmdBuf;
@@ -1304,7 +1304,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_TOC_PMA_ATIP_TOC_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
{
@@ -1322,7 +1322,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_TOC_PMA_ATIP_ATIP_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
{
@@ -1346,7 +1346,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_TOC_PMA_ATIP_Session_Info_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else if(cmdBuf.Length > 4)
{
@@ -1366,7 +1366,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_TOC_PMA_ATIP_Raw_TOC_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else if(cmdBuf.Length > 4)
{
@@ -1381,7 +1381,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_TOC_PMA_ATIP_PMA_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else if(cmdBuf.Length > 4) Pma = cmdBuf;
@@ -1391,7 +1391,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_TOC_PMA_ATIP_CD_TEXT_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else if(cmdBuf.Length > 4)
{
@@ -1438,7 +1438,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_PFI_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
{
@@ -1475,7 +1475,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_STRUCTURE_DMI_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
DvdDmi = cmdBuf;
@@ -1487,9 +1487,9 @@ public sealed class ScsiInfo
sense = dev.ReadMediaSerialNumber(out cmdBuf, out senseBuf, dev.Timeout, out _);
if(sense)
{
AaruLogging.Debug(MODULE_NAME, Localization.Core.READ_MEDIA_SERIAL_NUMBER_0, Sense.PrettifySense(senseBuf));
}
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_MEDIA_SERIAL_NUMBER_0,
Sense.PrettifySense(senseBuf.ToArray()));
else
{
if(cmdBuf.Length >= 4) MediaSerialNumber = cmdBuf;
@@ -1517,7 +1517,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.KREON_EXTRACT_SS_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
XboxSecuritySector = cmdBuf;
@@ -1702,7 +1702,7 @@ public sealed class ScsiInfo
{
AaruLogging.Debug(MODULE_NAME,
Localization.Core.READ_DISC_INFORMATION_000b_0,
Sense.PrettifySense(senseBuf));
Sense.PrettifySense(senseBuf.ToArray()));
}
else
{