* DiscImageChef.Devices/Device/AtaCommands/Ata28.cs:

Correct SEEK command to not transfer anything.

	* DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs:
	  Correct SEEK command to not transfer anything.
	Added differentiation between READ and READ WITH RETRIES for
	  CHS mode.
	Changed blocksize to unsigned on READ LONG.

	* DiscImageChef.Devices/Device/AtaCommands/MCPT.cs:
	  Change MCPT enable and disable commands to use CHS
	  registers.

	* DiscImageChef.Devices/Linux/Command.cs:
	  Linux kernel granularity for SG_IO is only 1ms, use .NET
	  counters for faster times. Solves "infinity" speeds on SSDs.

	* DiscImageChef/Commands/DumpMedia.cs:
	* DiscImageChef/Commands/MediaInfo.cs:
	* DiscImageChef/Commands/MediaScan.cs:
	* DiscImageChef.Metadata/DeviceReport.cs:
	* DiscImageChef/Commands/DeviceReport.cs:
	  Added support for ATA devices.

	* DiscImageChef/Commands/DeviceInfo.cs:
	  Added support for Media Card Pass Through detection and
	  information.
This commit is contained in:
2016-02-10 03:00:39 +00:00
parent 9bb1134973
commit 98aacadfe9
13 changed files with 1991 additions and 192 deletions

View File

@@ -51,6 +51,10 @@ namespace DiscImageChef.Metadata
public ataType ATA;
public ataType ATAPI;
public scsiType SCSI;
public bool CompactFlash;
[XmlIgnoreAttribute()]
public bool CompactFlashSpecified;
}
public class usbType
@@ -73,8 +77,6 @@ namespace DiscImageChef.Metadata
public class ataType
{
public chsType CHS;
public chsType CurrentCHS;
public string AdditionalPID;
public Identify.TransferMode APIOSupported;
@@ -98,7 +100,6 @@ namespace DiscImageChef.Metadata
public Identify.TransferMode DMAActive;
public Identify.TransferMode DMASupported;
public byte DMATransferTimingMode;
public ushort EccBytes;
public ushort EnhancedSecurityEraseTime;
public Identify.CommandSetBit EnabledCommandSet;
public Identify.CommandSetBit2 EnabledCommandSet2;
@@ -111,11 +112,6 @@ namespace DiscImageChef.Metadata
public Identify.GeneralConfigurationBit GeneralConfiguration;
public ushort HardwareResetResult;
public ushort InterseekDelay;
public uint LBASectors;
public uint LBASectorsCurrent;
public ulong LBA48Sectors;
public ushort LogicalAlignment;
public uint LogicalSectorWords;
public Identify.MajorVersionBit MajorVersion;
public ushort MasterPasswordRevisionCode;
public ushort MaxDownloadMicroMode3;
@@ -134,9 +130,7 @@ namespace DiscImageChef.Metadata
public uint NVCacheSize;
public ushort NVCacheWriteSpeed;
public byte NVEstimatedSpinUp;
public ushort NominalRotationRate;
public ushort PacketBusRelease;
public ushort PhysLogSectorSize;
public byte PIOTransferTimingMode;
public byte RecommendedAAM;
public ushort RecommendedMDMACycleTime;
@@ -160,12 +154,14 @@ namespace DiscImageChef.Metadata
public Identify.TrustedComputingBit TrustedComputing;
public Identify.TransferMode UDMAActive;
public Identify.TransferMode UDMASupported;
public ushort UnformattedBPT;
public ushort UnformattedBPS;
public byte WRVMode;
public uint WRVSectorCountMode3;
public uint WRVSectorCountMode2;
public testedMediaType ReadCapabilities;
public testedMediaType[] RemovableMedias;
[XmlIgnoreAttribute()]
public bool AdditionalPIDSpecified;
[XmlIgnoreAttribute()]
@@ -211,8 +207,6 @@ namespace DiscImageChef.Metadata
[XmlIgnoreAttribute()]
public bool DMATransferTimingModeSpecified;
[XmlIgnoreAttribute()]
public bool EccBytesSpecified;
[XmlIgnoreAttribute()]
public bool EnhancedSecurityEraseTimeSpecified;
[XmlIgnoreAttribute()]
public bool EnabledCommandSetSpecified;
@@ -239,16 +233,6 @@ namespace DiscImageChef.Metadata
[XmlIgnoreAttribute()]
public bool InterseekDelaySpecified;
[XmlIgnoreAttribute()]
public bool LBASectorsSpecified;
[XmlIgnoreAttribute()]
public bool LBASectorsCurrentSpecified;
[XmlIgnoreAttribute()]
public bool LBA48SectorsSpecified;
[XmlIgnoreAttribute()]
public bool LogicalAlignmentSpecified;
[XmlIgnoreAttribute()]
public bool LogicalSectorWordsSpecified;
[XmlIgnoreAttribute()]
public bool MajorVersionSpecified;
[XmlIgnoreAttribute()]
public bool MasterPasswordRevisionCodeSpecified;
@@ -285,12 +269,8 @@ namespace DiscImageChef.Metadata
[XmlIgnoreAttribute()]
public bool NVEstimatedSpinUpSpecified;
[XmlIgnoreAttribute()]
public bool NominalRotationRateSpecified;
[XmlIgnoreAttribute()]
public bool PacketBusReleaseSpecified;
[XmlIgnoreAttribute()]
public bool PhysLogSectorSizeSpecified;
[XmlIgnoreAttribute()]
public bool PIOTransferTimingModeSpecified;
[XmlIgnoreAttribute()]
public bool RecommendedAAMSpecified;
@@ -337,10 +317,6 @@ namespace DiscImageChef.Metadata
[XmlIgnoreAttribute()]
public bool UDMASupportedSpecified;
[XmlIgnoreAttribute()]
public bool UnformattedBPTSpecified;
[XmlIgnoreAttribute()]
public bool UnformattedBPSSpecified;
[XmlIgnoreAttribute()]
public bool WRVModeSpecified;
[XmlIgnoreAttribute()]
public bool WRVSectorCountMode3Specified;
@@ -888,6 +864,82 @@ namespace DiscImageChef.Metadata
public bool SupportsReadLong16Specified;
[XmlIgnoreAttribute()]
public bool SupportsReadLongSpecified;
public chsType CHS;
public chsType CurrentCHS;
public uint LBASectors;
public ulong LBA48Sectors;
public ushort LogicalAlignment;
public ushort NominalRotationRate;
public uint PhysicalBlockSize;
public bool SolidStateDevice;
public ushort UnformattedBPT;
public ushort UnformattedBPS;
[XmlIgnoreAttribute()]
public bool LBASectorsSpecified;
[XmlIgnoreAttribute()]
public bool LBA48SectorsSpecified;
[XmlIgnoreAttribute()]
public bool LogicalAlignmentSpecified;
[XmlIgnoreAttribute()]
public bool NominalRotationRateSpecified;
[XmlIgnoreAttribute()]
public bool PhysicalBlockSizeSpecified;
[XmlIgnoreAttribute()]
public bool SolidStateDeviceSpecified;
[XmlIgnoreAttribute()]
public bool UnformattedBPTSpecified;
[XmlIgnoreAttribute()]
public bool UnformattedBPSSpecified;
public bool SupportsReadDmaLba;
public bool SupportsReadDmaRetryLba;
public bool SupportsReadLba;
public bool SupportsReadRetryLba;
public bool SupportsReadLongLba;
public bool SupportsReadLongRetryLba;
public bool SupportsSeekLba;
public bool SupportsReadDmaLba48;
public bool SupportsReadLba48;
public bool SupportsReadDma;
public bool SupportsReadDmaRetry;
public bool SupportsReadRetry;
public bool SupportsReadLongRetry;
public bool SupportsSeek;
[XmlIgnoreAttribute()]
public bool SupportsReadDmaLbaSpecified;
[XmlIgnoreAttribute()]
public bool SupportsReadDmaRetryLbaSpecified;
[XmlIgnoreAttribute()]
public bool SupportsReadLbaSpecified;
[XmlIgnoreAttribute()]
public bool SupportsReadRetryLbaSpecified;
[XmlIgnoreAttribute()]
public bool SupportsReadLongLbaSpecified;
[XmlIgnoreAttribute()]
public bool SupportsReadLongRetryLbaSpecified;
[XmlIgnoreAttribute()]
public bool SupportsSeekLbaSpecified;
[XmlIgnoreAttribute()]
public bool SupportsReadDmaLba48Specified;
[XmlIgnoreAttribute()]
public bool SupportsReadLba48Specified;
[XmlIgnoreAttribute()]
public bool SupportsReadDmaSpecified;
[XmlIgnoreAttribute()]
public bool SupportsReadDmaRetrySpecified;
[XmlIgnoreAttribute()]
public bool SupportsReadRetrySpecified;
[XmlIgnoreAttribute()]
public bool SupportsReadLongRetrySpecified;
[XmlIgnoreAttribute()]
public bool SupportsSeekSpecified;
}
public class sscType