From 4b2903fab810662a7e2b825dc69d18a7152cfce5 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 3 Jun 2017 01:24:58 +0100 Subject: [PATCH] * DiscImageChef.Core/Devices/Scanning/ATA.cs: Correctly use LBA mode. Call FindReadCommand(). * DiscImageChef.Core/Devices/Dumping/ATA.cs: Call FindReadCommand(). --- DiscImageChef.Core/Devices/Dumping/ATA.cs | 5 +++++ DiscImageChef.Core/Devices/Scanning/ATA.cs | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/DiscImageChef.Core/Devices/Dumping/ATA.cs b/DiscImageChef.Core/Devices/Dumping/ATA.cs index f0aaf240..3b10a0f1 100644 --- a/DiscImageChef.Core/Devices/Dumping/ATA.cs +++ b/DiscImageChef.Core/Devices/Dumping/ATA.cs @@ -178,6 +178,11 @@ namespace DiscImageChef.Core.Devices.Dumping } uint blockSize = ataReader.LogicalBlockSize; uint physicalsectorsize = ataReader.PhysicalBlockSize; + if(ataReader.FindReadCommand()) + { + DicConsole.ErrorWriteLine(ataReader.ErrorMessage); + return; + } // Check how many blocks to read, if error show and return if(ataReader.GetBlocksToRead()) { diff --git a/DiscImageChef.Core/Devices/Scanning/ATA.cs b/DiscImageChef.Core/Devices/Scanning/ATA.cs index 0ed4fd18..e370be69 100644 --- a/DiscImageChef.Core/Devices/Scanning/ATA.cs +++ b/DiscImageChef.Core/Devices/Scanning/ATA.cs @@ -56,7 +56,6 @@ namespace DiscImageChef.Core.Devices.Scanning results.blocks = 0; ushort currentProfile = 0x0001; Decoders.ATA.AtaErrorRegistersCHS errorChs; - bool lbaMode = false; uint timeout = 5; double duration = 0; @@ -69,6 +68,11 @@ namespace DiscImageChef.Core.Devices.Scanning Reader ataReader = new Reader(dev, timeout, cmdBuf); // Fill reader blocks results.blocks = ataReader.GetDeviceBlocks(); + if(ataReader.FindReadCommand()) + { + DicConsole.ErrorWriteLine(ataReader.ErrorMessage); + return results; + } // Check block sizes if(ataReader.GetBlockSize()) { @@ -77,7 +81,7 @@ namespace DiscImageChef.Core.Devices.Scanning } uint blockSize = ataReader.LogicalBlockSize; // Check how many blocks to read, if error show and return - if(ataReader.GetBlocksToRead(254)) + if(ataReader.GetBlocksToRead(64)) { DicConsole.ErrorWriteLine(ataReader.ErrorMessage); return results; @@ -121,7 +125,7 @@ namespace DiscImageChef.Core.Devices.Scanning e.Cancel = aborted = true; }; - if(lbaMode) + if(ataReader.IsLBA) { DicConsole.WriteLine("Reading {0} sectors at a time.", blocksToRead);