Files
Aaru/SCSI/Sense.cs

1926 lines
92 KiB
C#
Raw Normal View History

2017-05-19 20:28:49 +01:00
// /***************************************************************************
// The Disc Image Chef
// ----------------------------------------------------------------------------
//
// Filename : Sense.cs
* LICENSE.MIT: * LICENSE.LGPL: Added LICENSE files for LGPL and MIT licenses. * DiscImageChef.Devices/Enums.cs: * DiscImageChef.Partitions/MBR.cs: * DiscImageChef.Partitions/RDB.cs: * DiscImageChef.DiscImages/GDI.cs: * DiscImageChef.Partitions/Sun.cs: * DiscImageChef.DiscImages/VHD.cs: * DiscImageChef.Partitions/GPT.cs: * DiscImageChef.Filesystems/FFS.cs: * DiscImageChef.Filesystems/FAT.cs: * DiscImageChef.Partitions/NeXT.cs: * DiscImageChef.Devices/Command.cs: * DiscImageChef.DiscImages/Nero.cs: * DiscImageChef.Decoders/CD/PMA.cs: * DiscImageChef.Decoders/CD/TOC.cs: * DiscImageChef.Filesystems/BFS.cs: * DiscImageChef.Filesystems/ODS.cs: * DiscImageChef.Helpers/PrintHex.cs: * DiscImageChef.Helpers/Swapping.cs: * DiscImageChef.Decoders/DVD/PRI.cs: * DiscImageChef.Decoders/DVD/DMI.cs: * DiscImageChef.Decoders/DVD/DDS.cs: * DiscImageChef.Decoders/DVD/RMD.cs: * DiscImageChef.Decoders/DVD/UDI.cs: * DiscImageChef.Partitions/Atari.cs: * DiscImageChef.Decoders/DVD/BCA.cs: * DiscImageChef.Filesystems/SysV.cs: * DiscImageChef.Filesystems/HPFS.cs: * DiscImageChef.Filesystems/NTFS.cs: * DiscImageChef.Filesystems/APFS.cs: * DiscImageChef.Decoders/DVD/PFI.cs: * DiscImageChef.Decoders/CD/ATIP.cs: * DiscImageChef.Filesystems/Acorn.cs: * DiscImageChef.DiscImages/CDRWin.cs: * DiscImageChef.DiscImages/CDRDAO.cs: * DiscImageChef.Filesystems/BTRFS.cs: * DiscImageChef.Decoders/Xbox/DMI.cs: * DiscImageChef.Helpers/ArrayFill.cs: * DiscImageChef.Settings/Settings.cs: * DiscImageChef.Filesystems/Opera.cs: * DiscImageChef.Filesystems/extFS.cs: * DiscImageChef.Decoders/DVD/CPRM.cs: * DiscImageChef.Decoders/DVD/ADIP.cs: * DiscImageChef.Decoders/CD/Enums.cs: * DiscImageChef.Decoders/DVD/AACS.cs: * DiscImageChef.Decoders/SCSI/EVPD.cs: * DiscImageChef.Filesystems/ProDOS.cs: * DiscImageChef.Metadata/MediaType.cs: * DiscImageChef.Console/DicConsole.cs: * DiscImageChef.Decoders/DVD/Spare.cs: * DiscImageChef.Filesystems/ext2FS.cs: * DiscImageChef.Decoders/DVD/Enums.cs: * DiscImageChef.Filesystems/Symbian.cs: * DiscImageChef.Decoders/SCSI/Types.cs: * DiscImageChef.Filesystems/UNIXBFS.cs: * DiscImageChef.DiscImages/TeleDisk.cs: * DiscImageChef.Decoders/SCSI/Sense.cs: * DiscImageChef.Decoders/CD/FullTOC.cs: * DiscImageChef.Decoders/Blu-ray/DI.cs: * DiscImageChef.Decoders/ATA/Errors.cs: * DiscImageChef.Filesystems/ISO9660.cs: * DiscImageChef.Filesystems/MinixFS.cs: * DiscImageChef.Devices/Linux/Enums.cs: * DiscImageChef.Filesystems/SolarFS.cs: * DiscImageChef.Filesystems/Structs.cs: * DiscImageChef.DiscImages/Apple2MG.cs: * DiscImageChef.Decoders/SCSI/Modes.cs: * DiscImageChef.Metadata/Dimensions.cs: * DiscImageChef.Partitions/AppleMap.cs: * DiscImageChef.Decoders/Floppy/ISO.cs: * DiscImageChef.Decoders/DVD/Layers.cs: * DiscImageChef.Decoders/CD/Session.cs: * DiscImageChef.Decoders/SCSI/Enums.cs: * DiscImageChef.Filesystems/Nintendo.cs: * DiscImageChef.Helpers/DateHandlers.cs: * DiscImageChef.Filesystems/AmigaDOS.cs: * DiscImageChef.DiscImages/ImageInfo.cs: * DiscImageChef.Checksums/MD5Context.cs: * DiscImageChef.Devices/Linux/Extern.cs: * DiscImageChef.Filesystems/AppleHFS.cs: * DiscImageChef.Filesystems/AppleMFS.cs: * DiscImageChef.Helpers/ArrayIsEmpty.cs: * DiscImageChef.Decoders/Blu-ray/BCA.cs: * DiscImageChef.Decoders/Blu-ray/DDS.cs: * DiscImageChef.Filesystems/PCEngine.cs: * DiscImageChef.Decoders/ATA/Identify.cs: * DiscImageChef.Devices/Linux/Command.cs: * DiscImageChef.Devices/FreeBSD/Enums.cs: * DiscImageChef.Decoders/SCSI/Inquiry.cs: * DiscImageChef.Metadata/DeviceReport.cs: * DiscImageChef.Decoders/Floppy/Amiga.cs: * DiscImageChef.Devices/Linux/Structs.cs: * DiscImageChef.Devices/Windows/Enums.cs: * DiscImageChef.Decoders/DVD/CSS&CPRM.cs: * DiscImageChef.Checksums/SHA1Context.cs: * DiscImageChef.DiscImages/DiskCopy42.cs: * DiscImageChef.Partitions/PartPlugin.cs: * DiscImageChef.CommonTypes/Partition.cs: * DiscImageChef.Decoders/Floppy/Enums.cs: * DiscImageChef.CommonTypes/MediaType.cs: * DiscImageChef.Decoders/Floppy/Apple2.cs: * DiscImageChef.Devices/Windows/Extern.cs: * DiscImageChef.Decoders/SCSI/MMC/CPRM.cs: * DiscImageChef.Helpers/StringHandlers.cs: * DiscImageChef.DiscImages/ImagePlugin.cs: * DiscImageChef.Checksums/CRC64Context.cs: * DiscImageChef.Checksums/CRC32Context.cs: * DiscImageChef.DiscImages/ZZZRawImage.cs: * DiscImageChef.Checksums/CRC16Context.cs: * DiscImageChef.Filesystems/LisaFS/Dir.cs: * DiscImageChef.Decoders/DVD/Cartridge.cs: * DiscImageChef.Decoders/Blu-ray/Spare.cs: * DiscImageChef.Filesystems/Filesystem.cs: * DiscImageChef.Decoders/SCSI/MMC/AACS.cs: * DiscImageChef.Devices/FreeBSD/Extern.cs: * DiscImageChef.Devices/Device/Commands.cs: * DiscImageChef.Checksums/SHA384Context.cs: * DiscImageChef.Devices/FreeBSD/Command.cs: * DiscImageChef.Checksums/SHA512Context.cs: * DiscImageChef.Decoders/SCSI/MMC/Enums.cs: * DiscImageChef.Devices/Windows/Command.cs: * DiscImageChef.Devices/FreeBSD/Structs.cs: * DiscImageChef.Devices/Windows/Structs.cs: * DiscImageChef.Filesystems/LisaFS/Info.cs: * DiscImageChef.Checksums/SHA256Context.cs: * DiscImageChef.Filesystems/LisaFS/File.cs: * DiscImageChef.Filesystems/AppleHFSPlus.cs: * DiscImageChef.Filesystems/LisaFS/Super.cs: * DiscImageChef.Filesystems/LisaFS/Xattr.cs: * DiscImageChef.Checksums/Adler32Context.cs: * DiscImageChef.Decoders/Floppy/System34.cs: * DiscImageChef.Checksums/SpamSumContext.cs: * DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs: * DiscImageChef.Devices/Device/Variables.cs: * DiscImageChef.Filesystems/LisaFS/Consts.cs: * DiscImageChef.Filesystems/LisaFS/LisaFS.cs: * DiscImageChef.Decoders/Floppy/Commodore.cs: * DiscImageChef.Checksums/FletcherContext.cs: * DiscImageChef.Filesystems/LisaFS/Extent.cs: * DiscImageChef.Devices/Device/Destructor.cs: * DiscImageChef.Decoders/Floppy/AppleSony.cs: * DiscImageChef.Filesystems/LisaFS/Structs.cs: * DiscImageChef.Decoders/SCSI/VendorString.cs: * DiscImageChef.Decoders/SCSI/MMC/Features.cs: * DiscImageChef.Devices/Device/Constructor.cs: * DiscImageChef.Checksums/RIPEMD160Context.cs: * DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs: * DiscImageChef.Decoders/Blu-ray/Cartridge.cs: * DiscImageChef.Decoders/Floppy/System3740.cs: * DiscImageChef.Filesystems/LisaFS/Encoding.cs: * DiscImageChef.Decoders/SCSI/ModesEncoders.cs: * DiscImageChef.CommonTypes/MediaTypeFromSCSI.cs: * DiscImageChef.Helpers/BigEndianBitConverter.cs: * DiscImageChef.Decoders/Floppy/Perpendicular.cs: * DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs: * DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs: * DiscImageChef.Devices/Device/ScsiCommands/HP.cs: * DiscImageChef.Devices/Device/AtaCommands/Cfa.cs: * DiscImageChef.Devices/Device/ScsiCommands/NEC.cs: * DiscImageChef.Helpers/EndianAwareBinaryReader.cs: * DiscImageChef.Devices/Device/ScsiCommands/MMC.cs: * DiscImageChef.Devices/Device/AtaCommands/MCPT.cs: * DiscImageChef.Devices/Device/ScsiCommands/SSC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SPC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SMC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SBC.cs: * DiscImageChef.Metadata/Properties/AssemblyInfo.cs: * DiscImageChef.Devices/Device/AtaCommands/Atapi.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata28.cs: * DiscImageChef.Devices/Device/AtaCommands/Smart.cs: * DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata48.cs: * DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs: * DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs: * DiscImageChef.Devices/Device/ScsiCommands/SyQuest.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plextor.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plasmon.cs: * DiscImageChef.Devices/Device/ScsiCommands/Pioneer.cs: * DiscImageChef.Devices/Device/ScsiCommands/Adaptec.cs: * DiscImageChef.Devices/Device/ScsiCommands/Fujitsu.cs: * DiscImageChef.Devices/Device/ScsiCommands/HL-DT-ST.cs: * DiscImageChef.Devices/Device/ScsiCommands/Certance.cs: * DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs: * DiscImageChef.Devices/Device/ScsiCommands/ArchiveCorp.cs: Relicensed as LGPL. Updated standard header. * DiscImageChef/Main.cs: * DiscImageChef/Plugins.cs: * DiscImageChef/Options.cs: * DiscImageChef/Commands/Ls.cs: * DiscImageChef/Core/IBGLog.cs: * DiscImageChef/Core/MHDDLog.cs: * DiscImageChef/AssemblyInfo.cs: * DiscImageChef/Core/Checksum.cs: * DiscImageChef/Commands/Decode.cs: * DiscImageChef/Core/Statistics.cs: * DiscImageChef/Commands/Verify.cs: * DiscImageChef/Commands/Formats.cs: * DiscImageChef/Commands/Entropy.cs: * DiscImageChef/Commands/Compare.cs: * DiscImageChef.Interop/DetectOS.cs: * DiscImageChef/Commands/Analyze.cs: * DiscImageChef/Commands/Commands.cs: * DiscImageChef/Commands/PrintHex.cs: * DiscImageChef/Commands/Checksum.cs: * DiscImageChef/DetectImageFormat.cs: * DiscImageChef/Commands/DumpMedia.cs: * DiscImageChef/Commands/Benchmark.cs: * DiscImageChef/Commands/Configure.cs: * DiscImageChef/Commands/MediaInfo.cs: * DiscImageChef.Interop/PlatformID.cs: * DiscImageChef/Commands/MediaScan.cs: * DiscImageChef/Commands/Statistics.cs: * DiscImageChef/Commands/DeviceInfo.cs: * DiscImageChef.Checksums/ReedSolomon.cs: * DiscImageChef/Commands/DeviceReport.cs: * DiscImageChef/Commands/ExtractFiles.cs: * DiscImageChef.Checksums/CDChecksums.cs: * DiscImageChef/Commands/CreateSidecar.cs: Updated standard header. * DiscImageChef.Checksums/DiscImageChef.Checksums.csproj: Relicensed project as LGPL. Updated standard header. Embed license as resource. * DiscImageChef.Console/DiscImageChef.Console.csproj: * DiscImageChef.Devices/DiscImageChef.Devices.csproj: * DiscImageChef.Helpers/DiscImageChef.Helpers.csproj: * DiscImageChef.Settings/DiscImageChef.Settings.csproj: * DiscImageChef.Decoders/DiscImageChef.Decoders.csproj: * DiscImageChef.Metadata/DiscImageChef.Metadata.csproj: * DiscImageChef.Partitions/DiscImageChef.Partitions.csproj: * DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj: * DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj: * DiscImageChef.CommonTypes/DiscImageChef.CommonTypes.csproj: Relicensed as LGPL. Updated standard header. Embed license as resource. * DiscImageChef/DiscImageChef.csproj: * DiscImageChef.Interop/DiscImageChef.Interop.csproj: Updated standard header. Embed license as resource.
2016-07-28 18:13:49 +01:00
// Author(s) : Natalia Portillo <claunia@claunia.com>
//
* LICENSE.MIT: * LICENSE.LGPL: Added LICENSE files for LGPL and MIT licenses. * DiscImageChef.Devices/Enums.cs: * DiscImageChef.Partitions/MBR.cs: * DiscImageChef.Partitions/RDB.cs: * DiscImageChef.DiscImages/GDI.cs: * DiscImageChef.Partitions/Sun.cs: * DiscImageChef.DiscImages/VHD.cs: * DiscImageChef.Partitions/GPT.cs: * DiscImageChef.Filesystems/FFS.cs: * DiscImageChef.Filesystems/FAT.cs: * DiscImageChef.Partitions/NeXT.cs: * DiscImageChef.Devices/Command.cs: * DiscImageChef.DiscImages/Nero.cs: * DiscImageChef.Decoders/CD/PMA.cs: * DiscImageChef.Decoders/CD/TOC.cs: * DiscImageChef.Filesystems/BFS.cs: * DiscImageChef.Filesystems/ODS.cs: * DiscImageChef.Helpers/PrintHex.cs: * DiscImageChef.Helpers/Swapping.cs: * DiscImageChef.Decoders/DVD/PRI.cs: * DiscImageChef.Decoders/DVD/DMI.cs: * DiscImageChef.Decoders/DVD/DDS.cs: * DiscImageChef.Decoders/DVD/RMD.cs: * DiscImageChef.Decoders/DVD/UDI.cs: * DiscImageChef.Partitions/Atari.cs: * DiscImageChef.Decoders/DVD/BCA.cs: * DiscImageChef.Filesystems/SysV.cs: * DiscImageChef.Filesystems/HPFS.cs: * DiscImageChef.Filesystems/NTFS.cs: * DiscImageChef.Filesystems/APFS.cs: * DiscImageChef.Decoders/DVD/PFI.cs: * DiscImageChef.Decoders/CD/ATIP.cs: * DiscImageChef.Filesystems/Acorn.cs: * DiscImageChef.DiscImages/CDRWin.cs: * DiscImageChef.DiscImages/CDRDAO.cs: * DiscImageChef.Filesystems/BTRFS.cs: * DiscImageChef.Decoders/Xbox/DMI.cs: * DiscImageChef.Helpers/ArrayFill.cs: * DiscImageChef.Settings/Settings.cs: * DiscImageChef.Filesystems/Opera.cs: * DiscImageChef.Filesystems/extFS.cs: * DiscImageChef.Decoders/DVD/CPRM.cs: * DiscImageChef.Decoders/DVD/ADIP.cs: * DiscImageChef.Decoders/CD/Enums.cs: * DiscImageChef.Decoders/DVD/AACS.cs: * DiscImageChef.Decoders/SCSI/EVPD.cs: * DiscImageChef.Filesystems/ProDOS.cs: * DiscImageChef.Metadata/MediaType.cs: * DiscImageChef.Console/DicConsole.cs: * DiscImageChef.Decoders/DVD/Spare.cs: * DiscImageChef.Filesystems/ext2FS.cs: * DiscImageChef.Decoders/DVD/Enums.cs: * DiscImageChef.Filesystems/Symbian.cs: * DiscImageChef.Decoders/SCSI/Types.cs: * DiscImageChef.Filesystems/UNIXBFS.cs: * DiscImageChef.DiscImages/TeleDisk.cs: * DiscImageChef.Decoders/SCSI/Sense.cs: * DiscImageChef.Decoders/CD/FullTOC.cs: * DiscImageChef.Decoders/Blu-ray/DI.cs: * DiscImageChef.Decoders/ATA/Errors.cs: * DiscImageChef.Filesystems/ISO9660.cs: * DiscImageChef.Filesystems/MinixFS.cs: * DiscImageChef.Devices/Linux/Enums.cs: * DiscImageChef.Filesystems/SolarFS.cs: * DiscImageChef.Filesystems/Structs.cs: * DiscImageChef.DiscImages/Apple2MG.cs: * DiscImageChef.Decoders/SCSI/Modes.cs: * DiscImageChef.Metadata/Dimensions.cs: * DiscImageChef.Partitions/AppleMap.cs: * DiscImageChef.Decoders/Floppy/ISO.cs: * DiscImageChef.Decoders/DVD/Layers.cs: * DiscImageChef.Decoders/CD/Session.cs: * DiscImageChef.Decoders/SCSI/Enums.cs: * DiscImageChef.Filesystems/Nintendo.cs: * DiscImageChef.Helpers/DateHandlers.cs: * DiscImageChef.Filesystems/AmigaDOS.cs: * DiscImageChef.DiscImages/ImageInfo.cs: * DiscImageChef.Checksums/MD5Context.cs: * DiscImageChef.Devices/Linux/Extern.cs: * DiscImageChef.Filesystems/AppleHFS.cs: * DiscImageChef.Filesystems/AppleMFS.cs: * DiscImageChef.Helpers/ArrayIsEmpty.cs: * DiscImageChef.Decoders/Blu-ray/BCA.cs: * DiscImageChef.Decoders/Blu-ray/DDS.cs: * DiscImageChef.Filesystems/PCEngine.cs: * DiscImageChef.Decoders/ATA/Identify.cs: * DiscImageChef.Devices/Linux/Command.cs: * DiscImageChef.Devices/FreeBSD/Enums.cs: * DiscImageChef.Decoders/SCSI/Inquiry.cs: * DiscImageChef.Metadata/DeviceReport.cs: * DiscImageChef.Decoders/Floppy/Amiga.cs: * DiscImageChef.Devices/Linux/Structs.cs: * DiscImageChef.Devices/Windows/Enums.cs: * DiscImageChef.Decoders/DVD/CSS&CPRM.cs: * DiscImageChef.Checksums/SHA1Context.cs: * DiscImageChef.DiscImages/DiskCopy42.cs: * DiscImageChef.Partitions/PartPlugin.cs: * DiscImageChef.CommonTypes/Partition.cs: * DiscImageChef.Decoders/Floppy/Enums.cs: * DiscImageChef.CommonTypes/MediaType.cs: * DiscImageChef.Decoders/Floppy/Apple2.cs: * DiscImageChef.Devices/Windows/Extern.cs: * DiscImageChef.Decoders/SCSI/MMC/CPRM.cs: * DiscImageChef.Helpers/StringHandlers.cs: * DiscImageChef.DiscImages/ImagePlugin.cs: * DiscImageChef.Checksums/CRC64Context.cs: * DiscImageChef.Checksums/CRC32Context.cs: * DiscImageChef.DiscImages/ZZZRawImage.cs: * DiscImageChef.Checksums/CRC16Context.cs: * DiscImageChef.Filesystems/LisaFS/Dir.cs: * DiscImageChef.Decoders/DVD/Cartridge.cs: * DiscImageChef.Decoders/Blu-ray/Spare.cs: * DiscImageChef.Filesystems/Filesystem.cs: * DiscImageChef.Decoders/SCSI/MMC/AACS.cs: * DiscImageChef.Devices/FreeBSD/Extern.cs: * DiscImageChef.Devices/Device/Commands.cs: * DiscImageChef.Checksums/SHA384Context.cs: * DiscImageChef.Devices/FreeBSD/Command.cs: * DiscImageChef.Checksums/SHA512Context.cs: * DiscImageChef.Decoders/SCSI/MMC/Enums.cs: * DiscImageChef.Devices/Windows/Command.cs: * DiscImageChef.Devices/FreeBSD/Structs.cs: * DiscImageChef.Devices/Windows/Structs.cs: * DiscImageChef.Filesystems/LisaFS/Info.cs: * DiscImageChef.Checksums/SHA256Context.cs: * DiscImageChef.Filesystems/LisaFS/File.cs: * DiscImageChef.Filesystems/AppleHFSPlus.cs: * DiscImageChef.Filesystems/LisaFS/Super.cs: * DiscImageChef.Filesystems/LisaFS/Xattr.cs: * DiscImageChef.Checksums/Adler32Context.cs: * DiscImageChef.Decoders/Floppy/System34.cs: * DiscImageChef.Checksums/SpamSumContext.cs: * DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs: * DiscImageChef.Devices/Device/Variables.cs: * DiscImageChef.Filesystems/LisaFS/Consts.cs: * DiscImageChef.Filesystems/LisaFS/LisaFS.cs: * DiscImageChef.Decoders/Floppy/Commodore.cs: * DiscImageChef.Checksums/FletcherContext.cs: * DiscImageChef.Filesystems/LisaFS/Extent.cs: * DiscImageChef.Devices/Device/Destructor.cs: * DiscImageChef.Decoders/Floppy/AppleSony.cs: * DiscImageChef.Filesystems/LisaFS/Structs.cs: * DiscImageChef.Decoders/SCSI/VendorString.cs: * DiscImageChef.Decoders/SCSI/MMC/Features.cs: * DiscImageChef.Devices/Device/Constructor.cs: * DiscImageChef.Checksums/RIPEMD160Context.cs: * DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs: * DiscImageChef.Decoders/Blu-ray/Cartridge.cs: * DiscImageChef.Decoders/Floppy/System3740.cs: * DiscImageChef.Filesystems/LisaFS/Encoding.cs: * DiscImageChef.Decoders/SCSI/ModesEncoders.cs: * DiscImageChef.CommonTypes/MediaTypeFromSCSI.cs: * DiscImageChef.Helpers/BigEndianBitConverter.cs: * DiscImageChef.Decoders/Floppy/Perpendicular.cs: * DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs: * DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs: * DiscImageChef.Devices/Device/ScsiCommands/HP.cs: * DiscImageChef.Devices/Device/AtaCommands/Cfa.cs: * DiscImageChef.Devices/Device/ScsiCommands/NEC.cs: * DiscImageChef.Helpers/EndianAwareBinaryReader.cs: * DiscImageChef.Devices/Device/ScsiCommands/MMC.cs: * DiscImageChef.Devices/Device/AtaCommands/MCPT.cs: * DiscImageChef.Devices/Device/ScsiCommands/SSC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SPC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SMC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SBC.cs: * DiscImageChef.Metadata/Properties/AssemblyInfo.cs: * DiscImageChef.Devices/Device/AtaCommands/Atapi.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata28.cs: * DiscImageChef.Devices/Device/AtaCommands/Smart.cs: * DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata48.cs: * DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs: * DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs: * DiscImageChef.Devices/Device/ScsiCommands/SyQuest.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plextor.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plasmon.cs: * DiscImageChef.Devices/Device/ScsiCommands/Pioneer.cs: * DiscImageChef.Devices/Device/ScsiCommands/Adaptec.cs: * DiscImageChef.Devices/Device/ScsiCommands/Fujitsu.cs: * DiscImageChef.Devices/Device/ScsiCommands/HL-DT-ST.cs: * DiscImageChef.Devices/Device/ScsiCommands/Certance.cs: * DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs: * DiscImageChef.Devices/Device/ScsiCommands/ArchiveCorp.cs: Relicensed as LGPL. Updated standard header. * DiscImageChef/Main.cs: * DiscImageChef/Plugins.cs: * DiscImageChef/Options.cs: * DiscImageChef/Commands/Ls.cs: * DiscImageChef/Core/IBGLog.cs: * DiscImageChef/Core/MHDDLog.cs: * DiscImageChef/AssemblyInfo.cs: * DiscImageChef/Core/Checksum.cs: * DiscImageChef/Commands/Decode.cs: * DiscImageChef/Core/Statistics.cs: * DiscImageChef/Commands/Verify.cs: * DiscImageChef/Commands/Formats.cs: * DiscImageChef/Commands/Entropy.cs: * DiscImageChef/Commands/Compare.cs: * DiscImageChef.Interop/DetectOS.cs: * DiscImageChef/Commands/Analyze.cs: * DiscImageChef/Commands/Commands.cs: * DiscImageChef/Commands/PrintHex.cs: * DiscImageChef/Commands/Checksum.cs: * DiscImageChef/DetectImageFormat.cs: * DiscImageChef/Commands/DumpMedia.cs: * DiscImageChef/Commands/Benchmark.cs: * DiscImageChef/Commands/Configure.cs: * DiscImageChef/Commands/MediaInfo.cs: * DiscImageChef.Interop/PlatformID.cs: * DiscImageChef/Commands/MediaScan.cs: * DiscImageChef/Commands/Statistics.cs: * DiscImageChef/Commands/DeviceInfo.cs: * DiscImageChef.Checksums/ReedSolomon.cs: * DiscImageChef/Commands/DeviceReport.cs: * DiscImageChef/Commands/ExtractFiles.cs: * DiscImageChef.Checksums/CDChecksums.cs: * DiscImageChef/Commands/CreateSidecar.cs: Updated standard header. * DiscImageChef.Checksums/DiscImageChef.Checksums.csproj: Relicensed project as LGPL. Updated standard header. Embed license as resource. * DiscImageChef.Console/DiscImageChef.Console.csproj: * DiscImageChef.Devices/DiscImageChef.Devices.csproj: * DiscImageChef.Helpers/DiscImageChef.Helpers.csproj: * DiscImageChef.Settings/DiscImageChef.Settings.csproj: * DiscImageChef.Decoders/DiscImageChef.Decoders.csproj: * DiscImageChef.Metadata/DiscImageChef.Metadata.csproj: * DiscImageChef.Partitions/DiscImageChef.Partitions.csproj: * DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj: * DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj: * DiscImageChef.CommonTypes/DiscImageChef.CommonTypes.csproj: Relicensed as LGPL. Updated standard header. Embed license as resource. * DiscImageChef/DiscImageChef.csproj: * DiscImageChef.Interop/DiscImageChef.Interop.csproj: Updated standard header. Embed license as resource.
2016-07-28 18:13:49 +01:00
// Component : Device structures decoders.
//
// --[ Description ] ----------------------------------------------------------
//
* LICENSE.MIT: * LICENSE.LGPL: Added LICENSE files for LGPL and MIT licenses. * DiscImageChef.Devices/Enums.cs: * DiscImageChef.Partitions/MBR.cs: * DiscImageChef.Partitions/RDB.cs: * DiscImageChef.DiscImages/GDI.cs: * DiscImageChef.Partitions/Sun.cs: * DiscImageChef.DiscImages/VHD.cs: * DiscImageChef.Partitions/GPT.cs: * DiscImageChef.Filesystems/FFS.cs: * DiscImageChef.Filesystems/FAT.cs: * DiscImageChef.Partitions/NeXT.cs: * DiscImageChef.Devices/Command.cs: * DiscImageChef.DiscImages/Nero.cs: * DiscImageChef.Decoders/CD/PMA.cs: * DiscImageChef.Decoders/CD/TOC.cs: * DiscImageChef.Filesystems/BFS.cs: * DiscImageChef.Filesystems/ODS.cs: * DiscImageChef.Helpers/PrintHex.cs: * DiscImageChef.Helpers/Swapping.cs: * DiscImageChef.Decoders/DVD/PRI.cs: * DiscImageChef.Decoders/DVD/DMI.cs: * DiscImageChef.Decoders/DVD/DDS.cs: * DiscImageChef.Decoders/DVD/RMD.cs: * DiscImageChef.Decoders/DVD/UDI.cs: * DiscImageChef.Partitions/Atari.cs: * DiscImageChef.Decoders/DVD/BCA.cs: * DiscImageChef.Filesystems/SysV.cs: * DiscImageChef.Filesystems/HPFS.cs: * DiscImageChef.Filesystems/NTFS.cs: * DiscImageChef.Filesystems/APFS.cs: * DiscImageChef.Decoders/DVD/PFI.cs: * DiscImageChef.Decoders/CD/ATIP.cs: * DiscImageChef.Filesystems/Acorn.cs: * DiscImageChef.DiscImages/CDRWin.cs: * DiscImageChef.DiscImages/CDRDAO.cs: * DiscImageChef.Filesystems/BTRFS.cs: * DiscImageChef.Decoders/Xbox/DMI.cs: * DiscImageChef.Helpers/ArrayFill.cs: * DiscImageChef.Settings/Settings.cs: * DiscImageChef.Filesystems/Opera.cs: * DiscImageChef.Filesystems/extFS.cs: * DiscImageChef.Decoders/DVD/CPRM.cs: * DiscImageChef.Decoders/DVD/ADIP.cs: * DiscImageChef.Decoders/CD/Enums.cs: * DiscImageChef.Decoders/DVD/AACS.cs: * DiscImageChef.Decoders/SCSI/EVPD.cs: * DiscImageChef.Filesystems/ProDOS.cs: * DiscImageChef.Metadata/MediaType.cs: * DiscImageChef.Console/DicConsole.cs: * DiscImageChef.Decoders/DVD/Spare.cs: * DiscImageChef.Filesystems/ext2FS.cs: * DiscImageChef.Decoders/DVD/Enums.cs: * DiscImageChef.Filesystems/Symbian.cs: * DiscImageChef.Decoders/SCSI/Types.cs: * DiscImageChef.Filesystems/UNIXBFS.cs: * DiscImageChef.DiscImages/TeleDisk.cs: * DiscImageChef.Decoders/SCSI/Sense.cs: * DiscImageChef.Decoders/CD/FullTOC.cs: * DiscImageChef.Decoders/Blu-ray/DI.cs: * DiscImageChef.Decoders/ATA/Errors.cs: * DiscImageChef.Filesystems/ISO9660.cs: * DiscImageChef.Filesystems/MinixFS.cs: * DiscImageChef.Devices/Linux/Enums.cs: * DiscImageChef.Filesystems/SolarFS.cs: * DiscImageChef.Filesystems/Structs.cs: * DiscImageChef.DiscImages/Apple2MG.cs: * DiscImageChef.Decoders/SCSI/Modes.cs: * DiscImageChef.Metadata/Dimensions.cs: * DiscImageChef.Partitions/AppleMap.cs: * DiscImageChef.Decoders/Floppy/ISO.cs: * DiscImageChef.Decoders/DVD/Layers.cs: * DiscImageChef.Decoders/CD/Session.cs: * DiscImageChef.Decoders/SCSI/Enums.cs: * DiscImageChef.Filesystems/Nintendo.cs: * DiscImageChef.Helpers/DateHandlers.cs: * DiscImageChef.Filesystems/AmigaDOS.cs: * DiscImageChef.DiscImages/ImageInfo.cs: * DiscImageChef.Checksums/MD5Context.cs: * DiscImageChef.Devices/Linux/Extern.cs: * DiscImageChef.Filesystems/AppleHFS.cs: * DiscImageChef.Filesystems/AppleMFS.cs: * DiscImageChef.Helpers/ArrayIsEmpty.cs: * DiscImageChef.Decoders/Blu-ray/BCA.cs: * DiscImageChef.Decoders/Blu-ray/DDS.cs: * DiscImageChef.Filesystems/PCEngine.cs: * DiscImageChef.Decoders/ATA/Identify.cs: * DiscImageChef.Devices/Linux/Command.cs: * DiscImageChef.Devices/FreeBSD/Enums.cs: * DiscImageChef.Decoders/SCSI/Inquiry.cs: * DiscImageChef.Metadata/DeviceReport.cs: * DiscImageChef.Decoders/Floppy/Amiga.cs: * DiscImageChef.Devices/Linux/Structs.cs: * DiscImageChef.Devices/Windows/Enums.cs: * DiscImageChef.Decoders/DVD/CSS&CPRM.cs: * DiscImageChef.Checksums/SHA1Context.cs: * DiscImageChef.DiscImages/DiskCopy42.cs: * DiscImageChef.Partitions/PartPlugin.cs: * DiscImageChef.CommonTypes/Partition.cs: * DiscImageChef.Decoders/Floppy/Enums.cs: * DiscImageChef.CommonTypes/MediaType.cs: * DiscImageChef.Decoders/Floppy/Apple2.cs: * DiscImageChef.Devices/Windows/Extern.cs: * DiscImageChef.Decoders/SCSI/MMC/CPRM.cs: * DiscImageChef.Helpers/StringHandlers.cs: * DiscImageChef.DiscImages/ImagePlugin.cs: * DiscImageChef.Checksums/CRC64Context.cs: * DiscImageChef.Checksums/CRC32Context.cs: * DiscImageChef.DiscImages/ZZZRawImage.cs: * DiscImageChef.Checksums/CRC16Context.cs: * DiscImageChef.Filesystems/LisaFS/Dir.cs: * DiscImageChef.Decoders/DVD/Cartridge.cs: * DiscImageChef.Decoders/Blu-ray/Spare.cs: * DiscImageChef.Filesystems/Filesystem.cs: * DiscImageChef.Decoders/SCSI/MMC/AACS.cs: * DiscImageChef.Devices/FreeBSD/Extern.cs: * DiscImageChef.Devices/Device/Commands.cs: * DiscImageChef.Checksums/SHA384Context.cs: * DiscImageChef.Devices/FreeBSD/Command.cs: * DiscImageChef.Checksums/SHA512Context.cs: * DiscImageChef.Decoders/SCSI/MMC/Enums.cs: * DiscImageChef.Devices/Windows/Command.cs: * DiscImageChef.Devices/FreeBSD/Structs.cs: * DiscImageChef.Devices/Windows/Structs.cs: * DiscImageChef.Filesystems/LisaFS/Info.cs: * DiscImageChef.Checksums/SHA256Context.cs: * DiscImageChef.Filesystems/LisaFS/File.cs: * DiscImageChef.Filesystems/AppleHFSPlus.cs: * DiscImageChef.Filesystems/LisaFS/Super.cs: * DiscImageChef.Filesystems/LisaFS/Xattr.cs: * DiscImageChef.Checksums/Adler32Context.cs: * DiscImageChef.Decoders/Floppy/System34.cs: * DiscImageChef.Checksums/SpamSumContext.cs: * DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs: * DiscImageChef.Devices/Device/Variables.cs: * DiscImageChef.Filesystems/LisaFS/Consts.cs: * DiscImageChef.Filesystems/LisaFS/LisaFS.cs: * DiscImageChef.Decoders/Floppy/Commodore.cs: * DiscImageChef.Checksums/FletcherContext.cs: * DiscImageChef.Filesystems/LisaFS/Extent.cs: * DiscImageChef.Devices/Device/Destructor.cs: * DiscImageChef.Decoders/Floppy/AppleSony.cs: * DiscImageChef.Filesystems/LisaFS/Structs.cs: * DiscImageChef.Decoders/SCSI/VendorString.cs: * DiscImageChef.Decoders/SCSI/MMC/Features.cs: * DiscImageChef.Devices/Device/Constructor.cs: * DiscImageChef.Checksums/RIPEMD160Context.cs: * DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs: * DiscImageChef.Decoders/Blu-ray/Cartridge.cs: * DiscImageChef.Decoders/Floppy/System3740.cs: * DiscImageChef.Filesystems/LisaFS/Encoding.cs: * DiscImageChef.Decoders/SCSI/ModesEncoders.cs: * DiscImageChef.CommonTypes/MediaTypeFromSCSI.cs: * DiscImageChef.Helpers/BigEndianBitConverter.cs: * DiscImageChef.Decoders/Floppy/Perpendicular.cs: * DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs: * DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs: * DiscImageChef.Devices/Device/ScsiCommands/HP.cs: * DiscImageChef.Devices/Device/AtaCommands/Cfa.cs: * DiscImageChef.Devices/Device/ScsiCommands/NEC.cs: * DiscImageChef.Helpers/EndianAwareBinaryReader.cs: * DiscImageChef.Devices/Device/ScsiCommands/MMC.cs: * DiscImageChef.Devices/Device/AtaCommands/MCPT.cs: * DiscImageChef.Devices/Device/ScsiCommands/SSC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SPC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SMC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SBC.cs: * DiscImageChef.Metadata/Properties/AssemblyInfo.cs: * DiscImageChef.Devices/Device/AtaCommands/Atapi.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata28.cs: * DiscImageChef.Devices/Device/AtaCommands/Smart.cs: * DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata48.cs: * DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs: * DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs: * DiscImageChef.Devices/Device/ScsiCommands/SyQuest.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plextor.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plasmon.cs: * DiscImageChef.Devices/Device/ScsiCommands/Pioneer.cs: * DiscImageChef.Devices/Device/ScsiCommands/Adaptec.cs: * DiscImageChef.Devices/Device/ScsiCommands/Fujitsu.cs: * DiscImageChef.Devices/Device/ScsiCommands/HL-DT-ST.cs: * DiscImageChef.Devices/Device/ScsiCommands/Certance.cs: * DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs: * DiscImageChef.Devices/Device/ScsiCommands/ArchiveCorp.cs: Relicensed as LGPL. Updated standard header. * DiscImageChef/Main.cs: * DiscImageChef/Plugins.cs: * DiscImageChef/Options.cs: * DiscImageChef/Commands/Ls.cs: * DiscImageChef/Core/IBGLog.cs: * DiscImageChef/Core/MHDDLog.cs: * DiscImageChef/AssemblyInfo.cs: * DiscImageChef/Core/Checksum.cs: * DiscImageChef/Commands/Decode.cs: * DiscImageChef/Core/Statistics.cs: * DiscImageChef/Commands/Verify.cs: * DiscImageChef/Commands/Formats.cs: * DiscImageChef/Commands/Entropy.cs: * DiscImageChef/Commands/Compare.cs: * DiscImageChef.Interop/DetectOS.cs: * DiscImageChef/Commands/Analyze.cs: * DiscImageChef/Commands/Commands.cs: * DiscImageChef/Commands/PrintHex.cs: * DiscImageChef/Commands/Checksum.cs: * DiscImageChef/DetectImageFormat.cs: * DiscImageChef/Commands/DumpMedia.cs: * DiscImageChef/Commands/Benchmark.cs: * DiscImageChef/Commands/Configure.cs: * DiscImageChef/Commands/MediaInfo.cs: * DiscImageChef.Interop/PlatformID.cs: * DiscImageChef/Commands/MediaScan.cs: * DiscImageChef/Commands/Statistics.cs: * DiscImageChef/Commands/DeviceInfo.cs: * DiscImageChef.Checksums/ReedSolomon.cs: * DiscImageChef/Commands/DeviceReport.cs: * DiscImageChef/Commands/ExtractFiles.cs: * DiscImageChef.Checksums/CDChecksums.cs: * DiscImageChef/Commands/CreateSidecar.cs: Updated standard header. * DiscImageChef.Checksums/DiscImageChef.Checksums.csproj: Relicensed project as LGPL. Updated standard header. Embed license as resource. * DiscImageChef.Console/DiscImageChef.Console.csproj: * DiscImageChef.Devices/DiscImageChef.Devices.csproj: * DiscImageChef.Helpers/DiscImageChef.Helpers.csproj: * DiscImageChef.Settings/DiscImageChef.Settings.csproj: * DiscImageChef.Decoders/DiscImageChef.Decoders.csproj: * DiscImageChef.Metadata/DiscImageChef.Metadata.csproj: * DiscImageChef.Partitions/DiscImageChef.Partitions.csproj: * DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj: * DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj: * DiscImageChef.CommonTypes/DiscImageChef.CommonTypes.csproj: Relicensed as LGPL. Updated standard header. Embed license as resource. * DiscImageChef/DiscImageChef.csproj: * DiscImageChef.Interop/DiscImageChef.Interop.csproj: Updated standard header. Embed license as resource.
2016-07-28 18:13:49 +01:00
// Decodes SCSI SENSE.
//
// --[ License ] --------------------------------------------------------------
//
* LICENSE.MIT: * LICENSE.LGPL: Added LICENSE files for LGPL and MIT licenses. * DiscImageChef.Devices/Enums.cs: * DiscImageChef.Partitions/MBR.cs: * DiscImageChef.Partitions/RDB.cs: * DiscImageChef.DiscImages/GDI.cs: * DiscImageChef.Partitions/Sun.cs: * DiscImageChef.DiscImages/VHD.cs: * DiscImageChef.Partitions/GPT.cs: * DiscImageChef.Filesystems/FFS.cs: * DiscImageChef.Filesystems/FAT.cs: * DiscImageChef.Partitions/NeXT.cs: * DiscImageChef.Devices/Command.cs: * DiscImageChef.DiscImages/Nero.cs: * DiscImageChef.Decoders/CD/PMA.cs: * DiscImageChef.Decoders/CD/TOC.cs: * DiscImageChef.Filesystems/BFS.cs: * DiscImageChef.Filesystems/ODS.cs: * DiscImageChef.Helpers/PrintHex.cs: * DiscImageChef.Helpers/Swapping.cs: * DiscImageChef.Decoders/DVD/PRI.cs: * DiscImageChef.Decoders/DVD/DMI.cs: * DiscImageChef.Decoders/DVD/DDS.cs: * DiscImageChef.Decoders/DVD/RMD.cs: * DiscImageChef.Decoders/DVD/UDI.cs: * DiscImageChef.Partitions/Atari.cs: * DiscImageChef.Decoders/DVD/BCA.cs: * DiscImageChef.Filesystems/SysV.cs: * DiscImageChef.Filesystems/HPFS.cs: * DiscImageChef.Filesystems/NTFS.cs: * DiscImageChef.Filesystems/APFS.cs: * DiscImageChef.Decoders/DVD/PFI.cs: * DiscImageChef.Decoders/CD/ATIP.cs: * DiscImageChef.Filesystems/Acorn.cs: * DiscImageChef.DiscImages/CDRWin.cs: * DiscImageChef.DiscImages/CDRDAO.cs: * DiscImageChef.Filesystems/BTRFS.cs: * DiscImageChef.Decoders/Xbox/DMI.cs: * DiscImageChef.Helpers/ArrayFill.cs: * DiscImageChef.Settings/Settings.cs: * DiscImageChef.Filesystems/Opera.cs: * DiscImageChef.Filesystems/extFS.cs: * DiscImageChef.Decoders/DVD/CPRM.cs: * DiscImageChef.Decoders/DVD/ADIP.cs: * DiscImageChef.Decoders/CD/Enums.cs: * DiscImageChef.Decoders/DVD/AACS.cs: * DiscImageChef.Decoders/SCSI/EVPD.cs: * DiscImageChef.Filesystems/ProDOS.cs: * DiscImageChef.Metadata/MediaType.cs: * DiscImageChef.Console/DicConsole.cs: * DiscImageChef.Decoders/DVD/Spare.cs: * DiscImageChef.Filesystems/ext2FS.cs: * DiscImageChef.Decoders/DVD/Enums.cs: * DiscImageChef.Filesystems/Symbian.cs: * DiscImageChef.Decoders/SCSI/Types.cs: * DiscImageChef.Filesystems/UNIXBFS.cs: * DiscImageChef.DiscImages/TeleDisk.cs: * DiscImageChef.Decoders/SCSI/Sense.cs: * DiscImageChef.Decoders/CD/FullTOC.cs: * DiscImageChef.Decoders/Blu-ray/DI.cs: * DiscImageChef.Decoders/ATA/Errors.cs: * DiscImageChef.Filesystems/ISO9660.cs: * DiscImageChef.Filesystems/MinixFS.cs: * DiscImageChef.Devices/Linux/Enums.cs: * DiscImageChef.Filesystems/SolarFS.cs: * DiscImageChef.Filesystems/Structs.cs: * DiscImageChef.DiscImages/Apple2MG.cs: * DiscImageChef.Decoders/SCSI/Modes.cs: * DiscImageChef.Metadata/Dimensions.cs: * DiscImageChef.Partitions/AppleMap.cs: * DiscImageChef.Decoders/Floppy/ISO.cs: * DiscImageChef.Decoders/DVD/Layers.cs: * DiscImageChef.Decoders/CD/Session.cs: * DiscImageChef.Decoders/SCSI/Enums.cs: * DiscImageChef.Filesystems/Nintendo.cs: * DiscImageChef.Helpers/DateHandlers.cs: * DiscImageChef.Filesystems/AmigaDOS.cs: * DiscImageChef.DiscImages/ImageInfo.cs: * DiscImageChef.Checksums/MD5Context.cs: * DiscImageChef.Devices/Linux/Extern.cs: * DiscImageChef.Filesystems/AppleHFS.cs: * DiscImageChef.Filesystems/AppleMFS.cs: * DiscImageChef.Helpers/ArrayIsEmpty.cs: * DiscImageChef.Decoders/Blu-ray/BCA.cs: * DiscImageChef.Decoders/Blu-ray/DDS.cs: * DiscImageChef.Filesystems/PCEngine.cs: * DiscImageChef.Decoders/ATA/Identify.cs: * DiscImageChef.Devices/Linux/Command.cs: * DiscImageChef.Devices/FreeBSD/Enums.cs: * DiscImageChef.Decoders/SCSI/Inquiry.cs: * DiscImageChef.Metadata/DeviceReport.cs: * DiscImageChef.Decoders/Floppy/Amiga.cs: * DiscImageChef.Devices/Linux/Structs.cs: * DiscImageChef.Devices/Windows/Enums.cs: * DiscImageChef.Decoders/DVD/CSS&CPRM.cs: * DiscImageChef.Checksums/SHA1Context.cs: * DiscImageChef.DiscImages/DiskCopy42.cs: * DiscImageChef.Partitions/PartPlugin.cs: * DiscImageChef.CommonTypes/Partition.cs: * DiscImageChef.Decoders/Floppy/Enums.cs: * DiscImageChef.CommonTypes/MediaType.cs: * DiscImageChef.Decoders/Floppy/Apple2.cs: * DiscImageChef.Devices/Windows/Extern.cs: * DiscImageChef.Decoders/SCSI/MMC/CPRM.cs: * DiscImageChef.Helpers/StringHandlers.cs: * DiscImageChef.DiscImages/ImagePlugin.cs: * DiscImageChef.Checksums/CRC64Context.cs: * DiscImageChef.Checksums/CRC32Context.cs: * DiscImageChef.DiscImages/ZZZRawImage.cs: * DiscImageChef.Checksums/CRC16Context.cs: * DiscImageChef.Filesystems/LisaFS/Dir.cs: * DiscImageChef.Decoders/DVD/Cartridge.cs: * DiscImageChef.Decoders/Blu-ray/Spare.cs: * DiscImageChef.Filesystems/Filesystem.cs: * DiscImageChef.Decoders/SCSI/MMC/AACS.cs: * DiscImageChef.Devices/FreeBSD/Extern.cs: * DiscImageChef.Devices/Device/Commands.cs: * DiscImageChef.Checksums/SHA384Context.cs: * DiscImageChef.Devices/FreeBSD/Command.cs: * DiscImageChef.Checksums/SHA512Context.cs: * DiscImageChef.Decoders/SCSI/MMC/Enums.cs: * DiscImageChef.Devices/Windows/Command.cs: * DiscImageChef.Devices/FreeBSD/Structs.cs: * DiscImageChef.Devices/Windows/Structs.cs: * DiscImageChef.Filesystems/LisaFS/Info.cs: * DiscImageChef.Checksums/SHA256Context.cs: * DiscImageChef.Filesystems/LisaFS/File.cs: * DiscImageChef.Filesystems/AppleHFSPlus.cs: * DiscImageChef.Filesystems/LisaFS/Super.cs: * DiscImageChef.Filesystems/LisaFS/Xattr.cs: * DiscImageChef.Checksums/Adler32Context.cs: * DiscImageChef.Decoders/Floppy/System34.cs: * DiscImageChef.Checksums/SpamSumContext.cs: * DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs: * DiscImageChef.Devices/Device/Variables.cs: * DiscImageChef.Filesystems/LisaFS/Consts.cs: * DiscImageChef.Filesystems/LisaFS/LisaFS.cs: * DiscImageChef.Decoders/Floppy/Commodore.cs: * DiscImageChef.Checksums/FletcherContext.cs: * DiscImageChef.Filesystems/LisaFS/Extent.cs: * DiscImageChef.Devices/Device/Destructor.cs: * DiscImageChef.Decoders/Floppy/AppleSony.cs: * DiscImageChef.Filesystems/LisaFS/Structs.cs: * DiscImageChef.Decoders/SCSI/VendorString.cs: * DiscImageChef.Decoders/SCSI/MMC/Features.cs: * DiscImageChef.Devices/Device/Constructor.cs: * DiscImageChef.Checksums/RIPEMD160Context.cs: * DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs: * DiscImageChef.Decoders/Blu-ray/Cartridge.cs: * DiscImageChef.Decoders/Floppy/System3740.cs: * DiscImageChef.Filesystems/LisaFS/Encoding.cs: * DiscImageChef.Decoders/SCSI/ModesEncoders.cs: * DiscImageChef.CommonTypes/MediaTypeFromSCSI.cs: * DiscImageChef.Helpers/BigEndianBitConverter.cs: * DiscImageChef.Decoders/Floppy/Perpendicular.cs: * DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs: * DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs: * DiscImageChef.Devices/Device/ScsiCommands/HP.cs: * DiscImageChef.Devices/Device/AtaCommands/Cfa.cs: * DiscImageChef.Devices/Device/ScsiCommands/NEC.cs: * DiscImageChef.Helpers/EndianAwareBinaryReader.cs: * DiscImageChef.Devices/Device/ScsiCommands/MMC.cs: * DiscImageChef.Devices/Device/AtaCommands/MCPT.cs: * DiscImageChef.Devices/Device/ScsiCommands/SSC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SPC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SMC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SBC.cs: * DiscImageChef.Metadata/Properties/AssemblyInfo.cs: * DiscImageChef.Devices/Device/AtaCommands/Atapi.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata28.cs: * DiscImageChef.Devices/Device/AtaCommands/Smart.cs: * DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata48.cs: * DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs: * DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs: * DiscImageChef.Devices/Device/ScsiCommands/SyQuest.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plextor.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plasmon.cs: * DiscImageChef.Devices/Device/ScsiCommands/Pioneer.cs: * DiscImageChef.Devices/Device/ScsiCommands/Adaptec.cs: * DiscImageChef.Devices/Device/ScsiCommands/Fujitsu.cs: * DiscImageChef.Devices/Device/ScsiCommands/HL-DT-ST.cs: * DiscImageChef.Devices/Device/ScsiCommands/Certance.cs: * DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs: * DiscImageChef.Devices/Device/ScsiCommands/ArchiveCorp.cs: Relicensed as LGPL. Updated standard header. * DiscImageChef/Main.cs: * DiscImageChef/Plugins.cs: * DiscImageChef/Options.cs: * DiscImageChef/Commands/Ls.cs: * DiscImageChef/Core/IBGLog.cs: * DiscImageChef/Core/MHDDLog.cs: * DiscImageChef/AssemblyInfo.cs: * DiscImageChef/Core/Checksum.cs: * DiscImageChef/Commands/Decode.cs: * DiscImageChef/Core/Statistics.cs: * DiscImageChef/Commands/Verify.cs: * DiscImageChef/Commands/Formats.cs: * DiscImageChef/Commands/Entropy.cs: * DiscImageChef/Commands/Compare.cs: * DiscImageChef.Interop/DetectOS.cs: * DiscImageChef/Commands/Analyze.cs: * DiscImageChef/Commands/Commands.cs: * DiscImageChef/Commands/PrintHex.cs: * DiscImageChef/Commands/Checksum.cs: * DiscImageChef/DetectImageFormat.cs: * DiscImageChef/Commands/DumpMedia.cs: * DiscImageChef/Commands/Benchmark.cs: * DiscImageChef/Commands/Configure.cs: * DiscImageChef/Commands/MediaInfo.cs: * DiscImageChef.Interop/PlatformID.cs: * DiscImageChef/Commands/MediaScan.cs: * DiscImageChef/Commands/Statistics.cs: * DiscImageChef/Commands/DeviceInfo.cs: * DiscImageChef.Checksums/ReedSolomon.cs: * DiscImageChef/Commands/DeviceReport.cs: * DiscImageChef/Commands/ExtractFiles.cs: * DiscImageChef.Checksums/CDChecksums.cs: * DiscImageChef/Commands/CreateSidecar.cs: Updated standard header. * DiscImageChef.Checksums/DiscImageChef.Checksums.csproj: Relicensed project as LGPL. Updated standard header. Embed license as resource. * DiscImageChef.Console/DiscImageChef.Console.csproj: * DiscImageChef.Devices/DiscImageChef.Devices.csproj: * DiscImageChef.Helpers/DiscImageChef.Helpers.csproj: * DiscImageChef.Settings/DiscImageChef.Settings.csproj: * DiscImageChef.Decoders/DiscImageChef.Decoders.csproj: * DiscImageChef.Metadata/DiscImageChef.Metadata.csproj: * DiscImageChef.Partitions/DiscImageChef.Partitions.csproj: * DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj: * DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj: * DiscImageChef.CommonTypes/DiscImageChef.CommonTypes.csproj: Relicensed as LGPL. Updated standard header. Embed license as resource. * DiscImageChef/DiscImageChef.csproj: * DiscImageChef.Interop/DiscImageChef.Interop.csproj: Updated standard header. Embed license as resource.
2016-07-28 18:13:49 +01:00
// This library is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of the
// License, or (at your option) any later version.
//
* LICENSE.MIT: * LICENSE.LGPL: Added LICENSE files for LGPL and MIT licenses. * DiscImageChef.Devices/Enums.cs: * DiscImageChef.Partitions/MBR.cs: * DiscImageChef.Partitions/RDB.cs: * DiscImageChef.DiscImages/GDI.cs: * DiscImageChef.Partitions/Sun.cs: * DiscImageChef.DiscImages/VHD.cs: * DiscImageChef.Partitions/GPT.cs: * DiscImageChef.Filesystems/FFS.cs: * DiscImageChef.Filesystems/FAT.cs: * DiscImageChef.Partitions/NeXT.cs: * DiscImageChef.Devices/Command.cs: * DiscImageChef.DiscImages/Nero.cs: * DiscImageChef.Decoders/CD/PMA.cs: * DiscImageChef.Decoders/CD/TOC.cs: * DiscImageChef.Filesystems/BFS.cs: * DiscImageChef.Filesystems/ODS.cs: * DiscImageChef.Helpers/PrintHex.cs: * DiscImageChef.Helpers/Swapping.cs: * DiscImageChef.Decoders/DVD/PRI.cs: * DiscImageChef.Decoders/DVD/DMI.cs: * DiscImageChef.Decoders/DVD/DDS.cs: * DiscImageChef.Decoders/DVD/RMD.cs: * DiscImageChef.Decoders/DVD/UDI.cs: * DiscImageChef.Partitions/Atari.cs: * DiscImageChef.Decoders/DVD/BCA.cs: * DiscImageChef.Filesystems/SysV.cs: * DiscImageChef.Filesystems/HPFS.cs: * DiscImageChef.Filesystems/NTFS.cs: * DiscImageChef.Filesystems/APFS.cs: * DiscImageChef.Decoders/DVD/PFI.cs: * DiscImageChef.Decoders/CD/ATIP.cs: * DiscImageChef.Filesystems/Acorn.cs: * DiscImageChef.DiscImages/CDRWin.cs: * DiscImageChef.DiscImages/CDRDAO.cs: * DiscImageChef.Filesystems/BTRFS.cs: * DiscImageChef.Decoders/Xbox/DMI.cs: * DiscImageChef.Helpers/ArrayFill.cs: * DiscImageChef.Settings/Settings.cs: * DiscImageChef.Filesystems/Opera.cs: * DiscImageChef.Filesystems/extFS.cs: * DiscImageChef.Decoders/DVD/CPRM.cs: * DiscImageChef.Decoders/DVD/ADIP.cs: * DiscImageChef.Decoders/CD/Enums.cs: * DiscImageChef.Decoders/DVD/AACS.cs: * DiscImageChef.Decoders/SCSI/EVPD.cs: * DiscImageChef.Filesystems/ProDOS.cs: * DiscImageChef.Metadata/MediaType.cs: * DiscImageChef.Console/DicConsole.cs: * DiscImageChef.Decoders/DVD/Spare.cs: * DiscImageChef.Filesystems/ext2FS.cs: * DiscImageChef.Decoders/DVD/Enums.cs: * DiscImageChef.Filesystems/Symbian.cs: * DiscImageChef.Decoders/SCSI/Types.cs: * DiscImageChef.Filesystems/UNIXBFS.cs: * DiscImageChef.DiscImages/TeleDisk.cs: * DiscImageChef.Decoders/SCSI/Sense.cs: * DiscImageChef.Decoders/CD/FullTOC.cs: * DiscImageChef.Decoders/Blu-ray/DI.cs: * DiscImageChef.Decoders/ATA/Errors.cs: * DiscImageChef.Filesystems/ISO9660.cs: * DiscImageChef.Filesystems/MinixFS.cs: * DiscImageChef.Devices/Linux/Enums.cs: * DiscImageChef.Filesystems/SolarFS.cs: * DiscImageChef.Filesystems/Structs.cs: * DiscImageChef.DiscImages/Apple2MG.cs: * DiscImageChef.Decoders/SCSI/Modes.cs: * DiscImageChef.Metadata/Dimensions.cs: * DiscImageChef.Partitions/AppleMap.cs: * DiscImageChef.Decoders/Floppy/ISO.cs: * DiscImageChef.Decoders/DVD/Layers.cs: * DiscImageChef.Decoders/CD/Session.cs: * DiscImageChef.Decoders/SCSI/Enums.cs: * DiscImageChef.Filesystems/Nintendo.cs: * DiscImageChef.Helpers/DateHandlers.cs: * DiscImageChef.Filesystems/AmigaDOS.cs: * DiscImageChef.DiscImages/ImageInfo.cs: * DiscImageChef.Checksums/MD5Context.cs: * DiscImageChef.Devices/Linux/Extern.cs: * DiscImageChef.Filesystems/AppleHFS.cs: * DiscImageChef.Filesystems/AppleMFS.cs: * DiscImageChef.Helpers/ArrayIsEmpty.cs: * DiscImageChef.Decoders/Blu-ray/BCA.cs: * DiscImageChef.Decoders/Blu-ray/DDS.cs: * DiscImageChef.Filesystems/PCEngine.cs: * DiscImageChef.Decoders/ATA/Identify.cs: * DiscImageChef.Devices/Linux/Command.cs: * DiscImageChef.Devices/FreeBSD/Enums.cs: * DiscImageChef.Decoders/SCSI/Inquiry.cs: * DiscImageChef.Metadata/DeviceReport.cs: * DiscImageChef.Decoders/Floppy/Amiga.cs: * DiscImageChef.Devices/Linux/Structs.cs: * DiscImageChef.Devices/Windows/Enums.cs: * DiscImageChef.Decoders/DVD/CSS&CPRM.cs: * DiscImageChef.Checksums/SHA1Context.cs: * DiscImageChef.DiscImages/DiskCopy42.cs: * DiscImageChef.Partitions/PartPlugin.cs: * DiscImageChef.CommonTypes/Partition.cs: * DiscImageChef.Decoders/Floppy/Enums.cs: * DiscImageChef.CommonTypes/MediaType.cs: * DiscImageChef.Decoders/Floppy/Apple2.cs: * DiscImageChef.Devices/Windows/Extern.cs: * DiscImageChef.Decoders/SCSI/MMC/CPRM.cs: * DiscImageChef.Helpers/StringHandlers.cs: * DiscImageChef.DiscImages/ImagePlugin.cs: * DiscImageChef.Checksums/CRC64Context.cs: * DiscImageChef.Checksums/CRC32Context.cs: * DiscImageChef.DiscImages/ZZZRawImage.cs: * DiscImageChef.Checksums/CRC16Context.cs: * DiscImageChef.Filesystems/LisaFS/Dir.cs: * DiscImageChef.Decoders/DVD/Cartridge.cs: * DiscImageChef.Decoders/Blu-ray/Spare.cs: * DiscImageChef.Filesystems/Filesystem.cs: * DiscImageChef.Decoders/SCSI/MMC/AACS.cs: * DiscImageChef.Devices/FreeBSD/Extern.cs: * DiscImageChef.Devices/Device/Commands.cs: * DiscImageChef.Checksums/SHA384Context.cs: * DiscImageChef.Devices/FreeBSD/Command.cs: * DiscImageChef.Checksums/SHA512Context.cs: * DiscImageChef.Decoders/SCSI/MMC/Enums.cs: * DiscImageChef.Devices/Windows/Command.cs: * DiscImageChef.Devices/FreeBSD/Structs.cs: * DiscImageChef.Devices/Windows/Structs.cs: * DiscImageChef.Filesystems/LisaFS/Info.cs: * DiscImageChef.Checksums/SHA256Context.cs: * DiscImageChef.Filesystems/LisaFS/File.cs: * DiscImageChef.Filesystems/AppleHFSPlus.cs: * DiscImageChef.Filesystems/LisaFS/Super.cs: * DiscImageChef.Filesystems/LisaFS/Xattr.cs: * DiscImageChef.Checksums/Adler32Context.cs: * DiscImageChef.Decoders/Floppy/System34.cs: * DiscImageChef.Checksums/SpamSumContext.cs: * DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs: * DiscImageChef.Devices/Device/Variables.cs: * DiscImageChef.Filesystems/LisaFS/Consts.cs: * DiscImageChef.Filesystems/LisaFS/LisaFS.cs: * DiscImageChef.Decoders/Floppy/Commodore.cs: * DiscImageChef.Checksums/FletcherContext.cs: * DiscImageChef.Filesystems/LisaFS/Extent.cs: * DiscImageChef.Devices/Device/Destructor.cs: * DiscImageChef.Decoders/Floppy/AppleSony.cs: * DiscImageChef.Filesystems/LisaFS/Structs.cs: * DiscImageChef.Decoders/SCSI/VendorString.cs: * DiscImageChef.Decoders/SCSI/MMC/Features.cs: * DiscImageChef.Devices/Device/Constructor.cs: * DiscImageChef.Checksums/RIPEMD160Context.cs: * DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs: * DiscImageChef.Decoders/Blu-ray/Cartridge.cs: * DiscImageChef.Decoders/Floppy/System3740.cs: * DiscImageChef.Filesystems/LisaFS/Encoding.cs: * DiscImageChef.Decoders/SCSI/ModesEncoders.cs: * DiscImageChef.CommonTypes/MediaTypeFromSCSI.cs: * DiscImageChef.Helpers/BigEndianBitConverter.cs: * DiscImageChef.Decoders/Floppy/Perpendicular.cs: * DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs: * DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs: * DiscImageChef.Devices/Device/ScsiCommands/HP.cs: * DiscImageChef.Devices/Device/AtaCommands/Cfa.cs: * DiscImageChef.Devices/Device/ScsiCommands/NEC.cs: * DiscImageChef.Helpers/EndianAwareBinaryReader.cs: * DiscImageChef.Devices/Device/ScsiCommands/MMC.cs: * DiscImageChef.Devices/Device/AtaCommands/MCPT.cs: * DiscImageChef.Devices/Device/ScsiCommands/SSC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SPC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SMC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SBC.cs: * DiscImageChef.Metadata/Properties/AssemblyInfo.cs: * DiscImageChef.Devices/Device/AtaCommands/Atapi.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata28.cs: * DiscImageChef.Devices/Device/AtaCommands/Smart.cs: * DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata48.cs: * DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs: * DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs: * DiscImageChef.Devices/Device/ScsiCommands/SyQuest.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plextor.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plasmon.cs: * DiscImageChef.Devices/Device/ScsiCommands/Pioneer.cs: * DiscImageChef.Devices/Device/ScsiCommands/Adaptec.cs: * DiscImageChef.Devices/Device/ScsiCommands/Fujitsu.cs: * DiscImageChef.Devices/Device/ScsiCommands/HL-DT-ST.cs: * DiscImageChef.Devices/Device/ScsiCommands/Certance.cs: * DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs: * DiscImageChef.Devices/Device/ScsiCommands/ArchiveCorp.cs: Relicensed as LGPL. Updated standard header. * DiscImageChef/Main.cs: * DiscImageChef/Plugins.cs: * DiscImageChef/Options.cs: * DiscImageChef/Commands/Ls.cs: * DiscImageChef/Core/IBGLog.cs: * DiscImageChef/Core/MHDDLog.cs: * DiscImageChef/AssemblyInfo.cs: * DiscImageChef/Core/Checksum.cs: * DiscImageChef/Commands/Decode.cs: * DiscImageChef/Core/Statistics.cs: * DiscImageChef/Commands/Verify.cs: * DiscImageChef/Commands/Formats.cs: * DiscImageChef/Commands/Entropy.cs: * DiscImageChef/Commands/Compare.cs: * DiscImageChef.Interop/DetectOS.cs: * DiscImageChef/Commands/Analyze.cs: * DiscImageChef/Commands/Commands.cs: * DiscImageChef/Commands/PrintHex.cs: * DiscImageChef/Commands/Checksum.cs: * DiscImageChef/DetectImageFormat.cs: * DiscImageChef/Commands/DumpMedia.cs: * DiscImageChef/Commands/Benchmark.cs: * DiscImageChef/Commands/Configure.cs: * DiscImageChef/Commands/MediaInfo.cs: * DiscImageChef.Interop/PlatformID.cs: * DiscImageChef/Commands/MediaScan.cs: * DiscImageChef/Commands/Statistics.cs: * DiscImageChef/Commands/DeviceInfo.cs: * DiscImageChef.Checksums/ReedSolomon.cs: * DiscImageChef/Commands/DeviceReport.cs: * DiscImageChef/Commands/ExtractFiles.cs: * DiscImageChef.Checksums/CDChecksums.cs: * DiscImageChef/Commands/CreateSidecar.cs: Updated standard header. * DiscImageChef.Checksums/DiscImageChef.Checksums.csproj: Relicensed project as LGPL. Updated standard header. Embed license as resource. * DiscImageChef.Console/DiscImageChef.Console.csproj: * DiscImageChef.Devices/DiscImageChef.Devices.csproj: * DiscImageChef.Helpers/DiscImageChef.Helpers.csproj: * DiscImageChef.Settings/DiscImageChef.Settings.csproj: * DiscImageChef.Decoders/DiscImageChef.Decoders.csproj: * DiscImageChef.Metadata/DiscImageChef.Metadata.csproj: * DiscImageChef.Partitions/DiscImageChef.Partitions.csproj: * DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj: * DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj: * DiscImageChef.CommonTypes/DiscImageChef.CommonTypes.csproj: Relicensed as LGPL. Updated standard header. Embed license as resource. * DiscImageChef/DiscImageChef.csproj: * DiscImageChef.Interop/DiscImageChef.Interop.csproj: Updated standard header. Embed license as resource.
2016-07-28 18:13:49 +01:00
// This library is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
* LICENSE.MIT: * LICENSE.LGPL: Added LICENSE files for LGPL and MIT licenses. * DiscImageChef.Devices/Enums.cs: * DiscImageChef.Partitions/MBR.cs: * DiscImageChef.Partitions/RDB.cs: * DiscImageChef.DiscImages/GDI.cs: * DiscImageChef.Partitions/Sun.cs: * DiscImageChef.DiscImages/VHD.cs: * DiscImageChef.Partitions/GPT.cs: * DiscImageChef.Filesystems/FFS.cs: * DiscImageChef.Filesystems/FAT.cs: * DiscImageChef.Partitions/NeXT.cs: * DiscImageChef.Devices/Command.cs: * DiscImageChef.DiscImages/Nero.cs: * DiscImageChef.Decoders/CD/PMA.cs: * DiscImageChef.Decoders/CD/TOC.cs: * DiscImageChef.Filesystems/BFS.cs: * DiscImageChef.Filesystems/ODS.cs: * DiscImageChef.Helpers/PrintHex.cs: * DiscImageChef.Helpers/Swapping.cs: * DiscImageChef.Decoders/DVD/PRI.cs: * DiscImageChef.Decoders/DVD/DMI.cs: * DiscImageChef.Decoders/DVD/DDS.cs: * DiscImageChef.Decoders/DVD/RMD.cs: * DiscImageChef.Decoders/DVD/UDI.cs: * DiscImageChef.Partitions/Atari.cs: * DiscImageChef.Decoders/DVD/BCA.cs: * DiscImageChef.Filesystems/SysV.cs: * DiscImageChef.Filesystems/HPFS.cs: * DiscImageChef.Filesystems/NTFS.cs: * DiscImageChef.Filesystems/APFS.cs: * DiscImageChef.Decoders/DVD/PFI.cs: * DiscImageChef.Decoders/CD/ATIP.cs: * DiscImageChef.Filesystems/Acorn.cs: * DiscImageChef.DiscImages/CDRWin.cs: * DiscImageChef.DiscImages/CDRDAO.cs: * DiscImageChef.Filesystems/BTRFS.cs: * DiscImageChef.Decoders/Xbox/DMI.cs: * DiscImageChef.Helpers/ArrayFill.cs: * DiscImageChef.Settings/Settings.cs: * DiscImageChef.Filesystems/Opera.cs: * DiscImageChef.Filesystems/extFS.cs: * DiscImageChef.Decoders/DVD/CPRM.cs: * DiscImageChef.Decoders/DVD/ADIP.cs: * DiscImageChef.Decoders/CD/Enums.cs: * DiscImageChef.Decoders/DVD/AACS.cs: * DiscImageChef.Decoders/SCSI/EVPD.cs: * DiscImageChef.Filesystems/ProDOS.cs: * DiscImageChef.Metadata/MediaType.cs: * DiscImageChef.Console/DicConsole.cs: * DiscImageChef.Decoders/DVD/Spare.cs: * DiscImageChef.Filesystems/ext2FS.cs: * DiscImageChef.Decoders/DVD/Enums.cs: * DiscImageChef.Filesystems/Symbian.cs: * DiscImageChef.Decoders/SCSI/Types.cs: * DiscImageChef.Filesystems/UNIXBFS.cs: * DiscImageChef.DiscImages/TeleDisk.cs: * DiscImageChef.Decoders/SCSI/Sense.cs: * DiscImageChef.Decoders/CD/FullTOC.cs: * DiscImageChef.Decoders/Blu-ray/DI.cs: * DiscImageChef.Decoders/ATA/Errors.cs: * DiscImageChef.Filesystems/ISO9660.cs: * DiscImageChef.Filesystems/MinixFS.cs: * DiscImageChef.Devices/Linux/Enums.cs: * DiscImageChef.Filesystems/SolarFS.cs: * DiscImageChef.Filesystems/Structs.cs: * DiscImageChef.DiscImages/Apple2MG.cs: * DiscImageChef.Decoders/SCSI/Modes.cs: * DiscImageChef.Metadata/Dimensions.cs: * DiscImageChef.Partitions/AppleMap.cs: * DiscImageChef.Decoders/Floppy/ISO.cs: * DiscImageChef.Decoders/DVD/Layers.cs: * DiscImageChef.Decoders/CD/Session.cs: * DiscImageChef.Decoders/SCSI/Enums.cs: * DiscImageChef.Filesystems/Nintendo.cs: * DiscImageChef.Helpers/DateHandlers.cs: * DiscImageChef.Filesystems/AmigaDOS.cs: * DiscImageChef.DiscImages/ImageInfo.cs: * DiscImageChef.Checksums/MD5Context.cs: * DiscImageChef.Devices/Linux/Extern.cs: * DiscImageChef.Filesystems/AppleHFS.cs: * DiscImageChef.Filesystems/AppleMFS.cs: * DiscImageChef.Helpers/ArrayIsEmpty.cs: * DiscImageChef.Decoders/Blu-ray/BCA.cs: * DiscImageChef.Decoders/Blu-ray/DDS.cs: * DiscImageChef.Filesystems/PCEngine.cs: * DiscImageChef.Decoders/ATA/Identify.cs: * DiscImageChef.Devices/Linux/Command.cs: * DiscImageChef.Devices/FreeBSD/Enums.cs: * DiscImageChef.Decoders/SCSI/Inquiry.cs: * DiscImageChef.Metadata/DeviceReport.cs: * DiscImageChef.Decoders/Floppy/Amiga.cs: * DiscImageChef.Devices/Linux/Structs.cs: * DiscImageChef.Devices/Windows/Enums.cs: * DiscImageChef.Decoders/DVD/CSS&CPRM.cs: * DiscImageChef.Checksums/SHA1Context.cs: * DiscImageChef.DiscImages/DiskCopy42.cs: * DiscImageChef.Partitions/PartPlugin.cs: * DiscImageChef.CommonTypes/Partition.cs: * DiscImageChef.Decoders/Floppy/Enums.cs: * DiscImageChef.CommonTypes/MediaType.cs: * DiscImageChef.Decoders/Floppy/Apple2.cs: * DiscImageChef.Devices/Windows/Extern.cs: * DiscImageChef.Decoders/SCSI/MMC/CPRM.cs: * DiscImageChef.Helpers/StringHandlers.cs: * DiscImageChef.DiscImages/ImagePlugin.cs: * DiscImageChef.Checksums/CRC64Context.cs: * DiscImageChef.Checksums/CRC32Context.cs: * DiscImageChef.DiscImages/ZZZRawImage.cs: * DiscImageChef.Checksums/CRC16Context.cs: * DiscImageChef.Filesystems/LisaFS/Dir.cs: * DiscImageChef.Decoders/DVD/Cartridge.cs: * DiscImageChef.Decoders/Blu-ray/Spare.cs: * DiscImageChef.Filesystems/Filesystem.cs: * DiscImageChef.Decoders/SCSI/MMC/AACS.cs: * DiscImageChef.Devices/FreeBSD/Extern.cs: * DiscImageChef.Devices/Device/Commands.cs: * DiscImageChef.Checksums/SHA384Context.cs: * DiscImageChef.Devices/FreeBSD/Command.cs: * DiscImageChef.Checksums/SHA512Context.cs: * DiscImageChef.Decoders/SCSI/MMC/Enums.cs: * DiscImageChef.Devices/Windows/Command.cs: * DiscImageChef.Devices/FreeBSD/Structs.cs: * DiscImageChef.Devices/Windows/Structs.cs: * DiscImageChef.Filesystems/LisaFS/Info.cs: * DiscImageChef.Checksums/SHA256Context.cs: * DiscImageChef.Filesystems/LisaFS/File.cs: * DiscImageChef.Filesystems/AppleHFSPlus.cs: * DiscImageChef.Filesystems/LisaFS/Super.cs: * DiscImageChef.Filesystems/LisaFS/Xattr.cs: * DiscImageChef.Checksums/Adler32Context.cs: * DiscImageChef.Decoders/Floppy/System34.cs: * DiscImageChef.Checksums/SpamSumContext.cs: * DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs: * DiscImageChef.Devices/Device/Variables.cs: * DiscImageChef.Filesystems/LisaFS/Consts.cs: * DiscImageChef.Filesystems/LisaFS/LisaFS.cs: * DiscImageChef.Decoders/Floppy/Commodore.cs: * DiscImageChef.Checksums/FletcherContext.cs: * DiscImageChef.Filesystems/LisaFS/Extent.cs: * DiscImageChef.Devices/Device/Destructor.cs: * DiscImageChef.Decoders/Floppy/AppleSony.cs: * DiscImageChef.Filesystems/LisaFS/Structs.cs: * DiscImageChef.Decoders/SCSI/VendorString.cs: * DiscImageChef.Decoders/SCSI/MMC/Features.cs: * DiscImageChef.Devices/Device/Constructor.cs: * DiscImageChef.Checksums/RIPEMD160Context.cs: * DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs: * DiscImageChef.Decoders/Blu-ray/Cartridge.cs: * DiscImageChef.Decoders/Floppy/System3740.cs: * DiscImageChef.Filesystems/LisaFS/Encoding.cs: * DiscImageChef.Decoders/SCSI/ModesEncoders.cs: * DiscImageChef.CommonTypes/MediaTypeFromSCSI.cs: * DiscImageChef.Helpers/BigEndianBitConverter.cs: * DiscImageChef.Decoders/Floppy/Perpendicular.cs: * DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs: * DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs: * DiscImageChef.Devices/Device/ScsiCommands/HP.cs: * DiscImageChef.Devices/Device/AtaCommands/Cfa.cs: * DiscImageChef.Devices/Device/ScsiCommands/NEC.cs: * DiscImageChef.Helpers/EndianAwareBinaryReader.cs: * DiscImageChef.Devices/Device/ScsiCommands/MMC.cs: * DiscImageChef.Devices/Device/AtaCommands/MCPT.cs: * DiscImageChef.Devices/Device/ScsiCommands/SSC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SPC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SMC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SBC.cs: * DiscImageChef.Metadata/Properties/AssemblyInfo.cs: * DiscImageChef.Devices/Device/AtaCommands/Atapi.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata28.cs: * DiscImageChef.Devices/Device/AtaCommands/Smart.cs: * DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata48.cs: * DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs: * DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs: * DiscImageChef.Devices/Device/ScsiCommands/SyQuest.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plextor.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plasmon.cs: * DiscImageChef.Devices/Device/ScsiCommands/Pioneer.cs: * DiscImageChef.Devices/Device/ScsiCommands/Adaptec.cs: * DiscImageChef.Devices/Device/ScsiCommands/Fujitsu.cs: * DiscImageChef.Devices/Device/ScsiCommands/HL-DT-ST.cs: * DiscImageChef.Devices/Device/ScsiCommands/Certance.cs: * DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs: * DiscImageChef.Devices/Device/ScsiCommands/ArchiveCorp.cs: Relicensed as LGPL. Updated standard header. * DiscImageChef/Main.cs: * DiscImageChef/Plugins.cs: * DiscImageChef/Options.cs: * DiscImageChef/Commands/Ls.cs: * DiscImageChef/Core/IBGLog.cs: * DiscImageChef/Core/MHDDLog.cs: * DiscImageChef/AssemblyInfo.cs: * DiscImageChef/Core/Checksum.cs: * DiscImageChef/Commands/Decode.cs: * DiscImageChef/Core/Statistics.cs: * DiscImageChef/Commands/Verify.cs: * DiscImageChef/Commands/Formats.cs: * DiscImageChef/Commands/Entropy.cs: * DiscImageChef/Commands/Compare.cs: * DiscImageChef.Interop/DetectOS.cs: * DiscImageChef/Commands/Analyze.cs: * DiscImageChef/Commands/Commands.cs: * DiscImageChef/Commands/PrintHex.cs: * DiscImageChef/Commands/Checksum.cs: * DiscImageChef/DetectImageFormat.cs: * DiscImageChef/Commands/DumpMedia.cs: * DiscImageChef/Commands/Benchmark.cs: * DiscImageChef/Commands/Configure.cs: * DiscImageChef/Commands/MediaInfo.cs: * DiscImageChef.Interop/PlatformID.cs: * DiscImageChef/Commands/MediaScan.cs: * DiscImageChef/Commands/Statistics.cs: * DiscImageChef/Commands/DeviceInfo.cs: * DiscImageChef.Checksums/ReedSolomon.cs: * DiscImageChef/Commands/DeviceReport.cs: * DiscImageChef/Commands/ExtractFiles.cs: * DiscImageChef.Checksums/CDChecksums.cs: * DiscImageChef/Commands/CreateSidecar.cs: Updated standard header. * DiscImageChef.Checksums/DiscImageChef.Checksums.csproj: Relicensed project as LGPL. Updated standard header. Embed license as resource. * DiscImageChef.Console/DiscImageChef.Console.csproj: * DiscImageChef.Devices/DiscImageChef.Devices.csproj: * DiscImageChef.Helpers/DiscImageChef.Helpers.csproj: * DiscImageChef.Settings/DiscImageChef.Settings.csproj: * DiscImageChef.Decoders/DiscImageChef.Decoders.csproj: * DiscImageChef.Metadata/DiscImageChef.Metadata.csproj: * DiscImageChef.Partitions/DiscImageChef.Partitions.csproj: * DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj: * DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj: * DiscImageChef.CommonTypes/DiscImageChef.CommonTypes.csproj: Relicensed as LGPL. Updated standard header. Embed license as resource. * DiscImageChef/DiscImageChef.csproj: * DiscImageChef.Interop/DiscImageChef.Interop.csproj: Updated standard header. Embed license as resource.
2016-07-28 18:13:49 +01:00
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
//
// ----------------------------------------------------------------------------
2020-01-03 17:51:28 +00:00
// Copyright © 2011-2020 Natalia Portillo
// ****************************************************************************/
* LICENSE.MIT: * LICENSE.LGPL: Added LICENSE files for LGPL and MIT licenses. * DiscImageChef.Devices/Enums.cs: * DiscImageChef.Partitions/MBR.cs: * DiscImageChef.Partitions/RDB.cs: * DiscImageChef.DiscImages/GDI.cs: * DiscImageChef.Partitions/Sun.cs: * DiscImageChef.DiscImages/VHD.cs: * DiscImageChef.Partitions/GPT.cs: * DiscImageChef.Filesystems/FFS.cs: * DiscImageChef.Filesystems/FAT.cs: * DiscImageChef.Partitions/NeXT.cs: * DiscImageChef.Devices/Command.cs: * DiscImageChef.DiscImages/Nero.cs: * DiscImageChef.Decoders/CD/PMA.cs: * DiscImageChef.Decoders/CD/TOC.cs: * DiscImageChef.Filesystems/BFS.cs: * DiscImageChef.Filesystems/ODS.cs: * DiscImageChef.Helpers/PrintHex.cs: * DiscImageChef.Helpers/Swapping.cs: * DiscImageChef.Decoders/DVD/PRI.cs: * DiscImageChef.Decoders/DVD/DMI.cs: * DiscImageChef.Decoders/DVD/DDS.cs: * DiscImageChef.Decoders/DVD/RMD.cs: * DiscImageChef.Decoders/DVD/UDI.cs: * DiscImageChef.Partitions/Atari.cs: * DiscImageChef.Decoders/DVD/BCA.cs: * DiscImageChef.Filesystems/SysV.cs: * DiscImageChef.Filesystems/HPFS.cs: * DiscImageChef.Filesystems/NTFS.cs: * DiscImageChef.Filesystems/APFS.cs: * DiscImageChef.Decoders/DVD/PFI.cs: * DiscImageChef.Decoders/CD/ATIP.cs: * DiscImageChef.Filesystems/Acorn.cs: * DiscImageChef.DiscImages/CDRWin.cs: * DiscImageChef.DiscImages/CDRDAO.cs: * DiscImageChef.Filesystems/BTRFS.cs: * DiscImageChef.Decoders/Xbox/DMI.cs: * DiscImageChef.Helpers/ArrayFill.cs: * DiscImageChef.Settings/Settings.cs: * DiscImageChef.Filesystems/Opera.cs: * DiscImageChef.Filesystems/extFS.cs: * DiscImageChef.Decoders/DVD/CPRM.cs: * DiscImageChef.Decoders/DVD/ADIP.cs: * DiscImageChef.Decoders/CD/Enums.cs: * DiscImageChef.Decoders/DVD/AACS.cs: * DiscImageChef.Decoders/SCSI/EVPD.cs: * DiscImageChef.Filesystems/ProDOS.cs: * DiscImageChef.Metadata/MediaType.cs: * DiscImageChef.Console/DicConsole.cs: * DiscImageChef.Decoders/DVD/Spare.cs: * DiscImageChef.Filesystems/ext2FS.cs: * DiscImageChef.Decoders/DVD/Enums.cs: * DiscImageChef.Filesystems/Symbian.cs: * DiscImageChef.Decoders/SCSI/Types.cs: * DiscImageChef.Filesystems/UNIXBFS.cs: * DiscImageChef.DiscImages/TeleDisk.cs: * DiscImageChef.Decoders/SCSI/Sense.cs: * DiscImageChef.Decoders/CD/FullTOC.cs: * DiscImageChef.Decoders/Blu-ray/DI.cs: * DiscImageChef.Decoders/ATA/Errors.cs: * DiscImageChef.Filesystems/ISO9660.cs: * DiscImageChef.Filesystems/MinixFS.cs: * DiscImageChef.Devices/Linux/Enums.cs: * DiscImageChef.Filesystems/SolarFS.cs: * DiscImageChef.Filesystems/Structs.cs: * DiscImageChef.DiscImages/Apple2MG.cs: * DiscImageChef.Decoders/SCSI/Modes.cs: * DiscImageChef.Metadata/Dimensions.cs: * DiscImageChef.Partitions/AppleMap.cs: * DiscImageChef.Decoders/Floppy/ISO.cs: * DiscImageChef.Decoders/DVD/Layers.cs: * DiscImageChef.Decoders/CD/Session.cs: * DiscImageChef.Decoders/SCSI/Enums.cs: * DiscImageChef.Filesystems/Nintendo.cs: * DiscImageChef.Helpers/DateHandlers.cs: * DiscImageChef.Filesystems/AmigaDOS.cs: * DiscImageChef.DiscImages/ImageInfo.cs: * DiscImageChef.Checksums/MD5Context.cs: * DiscImageChef.Devices/Linux/Extern.cs: * DiscImageChef.Filesystems/AppleHFS.cs: * DiscImageChef.Filesystems/AppleMFS.cs: * DiscImageChef.Helpers/ArrayIsEmpty.cs: * DiscImageChef.Decoders/Blu-ray/BCA.cs: * DiscImageChef.Decoders/Blu-ray/DDS.cs: * DiscImageChef.Filesystems/PCEngine.cs: * DiscImageChef.Decoders/ATA/Identify.cs: * DiscImageChef.Devices/Linux/Command.cs: * DiscImageChef.Devices/FreeBSD/Enums.cs: * DiscImageChef.Decoders/SCSI/Inquiry.cs: * DiscImageChef.Metadata/DeviceReport.cs: * DiscImageChef.Decoders/Floppy/Amiga.cs: * DiscImageChef.Devices/Linux/Structs.cs: * DiscImageChef.Devices/Windows/Enums.cs: * DiscImageChef.Decoders/DVD/CSS&CPRM.cs: * DiscImageChef.Checksums/SHA1Context.cs: * DiscImageChef.DiscImages/DiskCopy42.cs: * DiscImageChef.Partitions/PartPlugin.cs: * DiscImageChef.CommonTypes/Partition.cs: * DiscImageChef.Decoders/Floppy/Enums.cs: * DiscImageChef.CommonTypes/MediaType.cs: * DiscImageChef.Decoders/Floppy/Apple2.cs: * DiscImageChef.Devices/Windows/Extern.cs: * DiscImageChef.Decoders/SCSI/MMC/CPRM.cs: * DiscImageChef.Helpers/StringHandlers.cs: * DiscImageChef.DiscImages/ImagePlugin.cs: * DiscImageChef.Checksums/CRC64Context.cs: * DiscImageChef.Checksums/CRC32Context.cs: * DiscImageChef.DiscImages/ZZZRawImage.cs: * DiscImageChef.Checksums/CRC16Context.cs: * DiscImageChef.Filesystems/LisaFS/Dir.cs: * DiscImageChef.Decoders/DVD/Cartridge.cs: * DiscImageChef.Decoders/Blu-ray/Spare.cs: * DiscImageChef.Filesystems/Filesystem.cs: * DiscImageChef.Decoders/SCSI/MMC/AACS.cs: * DiscImageChef.Devices/FreeBSD/Extern.cs: * DiscImageChef.Devices/Device/Commands.cs: * DiscImageChef.Checksums/SHA384Context.cs: * DiscImageChef.Devices/FreeBSD/Command.cs: * DiscImageChef.Checksums/SHA512Context.cs: * DiscImageChef.Decoders/SCSI/MMC/Enums.cs: * DiscImageChef.Devices/Windows/Command.cs: * DiscImageChef.Devices/FreeBSD/Structs.cs: * DiscImageChef.Devices/Windows/Structs.cs: * DiscImageChef.Filesystems/LisaFS/Info.cs: * DiscImageChef.Checksums/SHA256Context.cs: * DiscImageChef.Filesystems/LisaFS/File.cs: * DiscImageChef.Filesystems/AppleHFSPlus.cs: * DiscImageChef.Filesystems/LisaFS/Super.cs: * DiscImageChef.Filesystems/LisaFS/Xattr.cs: * DiscImageChef.Checksums/Adler32Context.cs: * DiscImageChef.Decoders/Floppy/System34.cs: * DiscImageChef.Checksums/SpamSumContext.cs: * DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs: * DiscImageChef.Devices/Device/Variables.cs: * DiscImageChef.Filesystems/LisaFS/Consts.cs: * DiscImageChef.Filesystems/LisaFS/LisaFS.cs: * DiscImageChef.Decoders/Floppy/Commodore.cs: * DiscImageChef.Checksums/FletcherContext.cs: * DiscImageChef.Filesystems/LisaFS/Extent.cs: * DiscImageChef.Devices/Device/Destructor.cs: * DiscImageChef.Decoders/Floppy/AppleSony.cs: * DiscImageChef.Filesystems/LisaFS/Structs.cs: * DiscImageChef.Decoders/SCSI/VendorString.cs: * DiscImageChef.Decoders/SCSI/MMC/Features.cs: * DiscImageChef.Devices/Device/Constructor.cs: * DiscImageChef.Checksums/RIPEMD160Context.cs: * DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs: * DiscImageChef.Decoders/Blu-ray/Cartridge.cs: * DiscImageChef.Decoders/Floppy/System3740.cs: * DiscImageChef.Filesystems/LisaFS/Encoding.cs: * DiscImageChef.Decoders/SCSI/ModesEncoders.cs: * DiscImageChef.CommonTypes/MediaTypeFromSCSI.cs: * DiscImageChef.Helpers/BigEndianBitConverter.cs: * DiscImageChef.Decoders/Floppy/Perpendicular.cs: * DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs: * DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs: * DiscImageChef.Devices/Device/ScsiCommands/HP.cs: * DiscImageChef.Devices/Device/AtaCommands/Cfa.cs: * DiscImageChef.Devices/Device/ScsiCommands/NEC.cs: * DiscImageChef.Helpers/EndianAwareBinaryReader.cs: * DiscImageChef.Devices/Device/ScsiCommands/MMC.cs: * DiscImageChef.Devices/Device/AtaCommands/MCPT.cs: * DiscImageChef.Devices/Device/ScsiCommands/SSC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SPC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SMC.cs: * DiscImageChef.Devices/Device/ScsiCommands/SBC.cs: * DiscImageChef.Metadata/Properties/AssemblyInfo.cs: * DiscImageChef.Devices/Device/AtaCommands/Atapi.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata28.cs: * DiscImageChef.Devices/Device/AtaCommands/Smart.cs: * DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs: * DiscImageChef.Devices/Device/AtaCommands/Ata48.cs: * DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs: * DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs: * DiscImageChef.Devices/Device/ScsiCommands/SyQuest.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plextor.cs: * DiscImageChef.Devices/Device/ScsiCommands/Plasmon.cs: * DiscImageChef.Devices/Device/ScsiCommands/Pioneer.cs: * DiscImageChef.Devices/Device/ScsiCommands/Adaptec.cs: * DiscImageChef.Devices/Device/ScsiCommands/Fujitsu.cs: * DiscImageChef.Devices/Device/ScsiCommands/HL-DT-ST.cs: * DiscImageChef.Devices/Device/ScsiCommands/Certance.cs: * DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs: * DiscImageChef.Devices/Device/ScsiCommands/ArchiveCorp.cs: Relicensed as LGPL. Updated standard header. * DiscImageChef/Main.cs: * DiscImageChef/Plugins.cs: * DiscImageChef/Options.cs: * DiscImageChef/Commands/Ls.cs: * DiscImageChef/Core/IBGLog.cs: * DiscImageChef/Core/MHDDLog.cs: * DiscImageChef/AssemblyInfo.cs: * DiscImageChef/Core/Checksum.cs: * DiscImageChef/Commands/Decode.cs: * DiscImageChef/Core/Statistics.cs: * DiscImageChef/Commands/Verify.cs: * DiscImageChef/Commands/Formats.cs: * DiscImageChef/Commands/Entropy.cs: * DiscImageChef/Commands/Compare.cs: * DiscImageChef.Interop/DetectOS.cs: * DiscImageChef/Commands/Analyze.cs: * DiscImageChef/Commands/Commands.cs: * DiscImageChef/Commands/PrintHex.cs: * DiscImageChef/Commands/Checksum.cs: * DiscImageChef/DetectImageFormat.cs: * DiscImageChef/Commands/DumpMedia.cs: * DiscImageChef/Commands/Benchmark.cs: * DiscImageChef/Commands/Configure.cs: * DiscImageChef/Commands/MediaInfo.cs: * DiscImageChef.Interop/PlatformID.cs: * DiscImageChef/Commands/MediaScan.cs: * DiscImageChef/Commands/Statistics.cs: * DiscImageChef/Commands/DeviceInfo.cs: * DiscImageChef.Checksums/ReedSolomon.cs: * DiscImageChef/Commands/DeviceReport.cs: * DiscImageChef/Commands/ExtractFiles.cs: * DiscImageChef.Checksums/CDChecksums.cs: * DiscImageChef/Commands/CreateSidecar.cs: Updated standard header. * DiscImageChef.Checksums/DiscImageChef.Checksums.csproj: Relicensed project as LGPL. Updated standard header. Embed license as resource. * DiscImageChef.Console/DiscImageChef.Console.csproj: * DiscImageChef.Devices/DiscImageChef.Devices.csproj: * DiscImageChef.Helpers/DiscImageChef.Helpers.csproj: * DiscImageChef.Settings/DiscImageChef.Settings.csproj: * DiscImageChef.Decoders/DiscImageChef.Decoders.csproj: * DiscImageChef.Metadata/DiscImageChef.Metadata.csproj: * DiscImageChef.Partitions/DiscImageChef.Partitions.csproj: * DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj: * DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj: * DiscImageChef.CommonTypes/DiscImageChef.CommonTypes.csproj: Relicensed as LGPL. Updated standard header. Embed license as resource. * DiscImageChef/DiscImageChef.csproj: * DiscImageChef.Interop/DiscImageChef.Interop.csproj: Updated standard header. Embed license as resource.
2016-07-28 18:13:49 +01:00
using System;
2015-11-23 04:08:09 +00:00
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
2017-12-19 19:33:46 +00:00
using System.Text;
using DiscImageChef.Decoders.ATA;
namespace DiscImageChef.Decoders.SCSI
{
public enum SenseType
{
2019-11-25 00:54:38 +00:00
StandardSense, ExtendedSenseFixedCurrent, ExtendedSenseFixedPast,
ExtendedSenseDescriptorCurrent, ExtendedSenseDescriptorPast, Invalid,
Unknown
}
2019-11-25 00:54:38 +00:00
[SuppressMessage("ReSharper", "MemberCanBeInternal"), SuppressMessage("ReSharper", "NotAccessedField.Global"),
SuppressMessage("ReSharper", "InconsistentNaming")]
public struct StandardSense
{
2019-11-25 00:54:38 +00:00
/// <summary>If set, <see cref="LBA" /> is valid</summary>
public bool AddressValid;
2019-11-25 00:54:38 +00:00
/// <summary>Error class, 0 to 6</summary>
public byte ErrorClass;
2019-11-25 00:54:38 +00:00
/// <summary>Error type</summary>
public byte ErrorType;
2019-11-25 00:54:38 +00:00
/// <summary>Private usage</summary>
public byte Private;
2019-11-25 00:54:38 +00:00
/// <summary>LBA where error happened</summary>
public uint LBA;
}
public enum SenseKeys : byte
{
2019-11-25 00:54:38 +00:00
/// <summary>No information to be reported, but bits should be checked</summary>
NoSense = 0, /// <summary>Target performed some recovery to successfully complete last command</summary>
RecoveredError = 1, /// <summary>Target is not ready</summary>
NotReady = 2, /// <summary>Non-recoverable medium error occurred</summary>
MediumError = 3, /// <summary>Non-recoverable hardware error occurred</summary>
HardwareError = 4, /// <summary>Target has received an illegal request</summary>
IllegalRequest = 5, /// <summary>Target requires initiator attention</summary>
UnitAttention = 6, /// <summary>A protected command has been denied</summary>
DataProtect = 7, /// <summary>A blank block has been tried to read or a non-rewritable one to write</summary>
BlankCheck = 8, /// <summary>For private/vendor usage</summary>
PrivateUse = 9, /// <summary>COPY command aborted</summary>
CopyAborted = 0xA, /// <summary>Command aborted</summary>
AbortedCommand = 0xB, /// <summary>SEARCH command has been satisfied</summary>
Equal = 0xC, /// <summary>End-of-medium reached with data remaining in buffer</summary>
VolumeOverflow = 0xD, /// <summary>COMPARE failed</summary>
Miscompare = 0xE, /// <summary>Complated</summary>
2015-11-23 04:08:09 +00:00
Completed = 0xF
}
2019-11-25 00:54:38 +00:00
[SuppressMessage("ReSharper", "InconsistentNaming"), SuppressMessage("ReSharper", "MemberCanBeInternal"),
SuppressMessage("ReSharper", "MemberCanBePrivate.Global"), SuppressMessage("ReSharper", "UnassignedField.Global"),
SuppressMessage("ReSharper", "NotAccessedField.Global")]
public struct FixedSense
{
2019-11-25 00:54:38 +00:00
/// <summary>If set, <see cref="Information" /> is valid</summary>
public bool InformationValid;
2019-11-25 00:54:38 +00:00
/// <summary>Contains number of current segment descriptor</summary>
public byte SegmentNumber;
2019-11-25 00:54:38 +00:00
/// <summary>If set indicates current command has read a filemark or a setmark</summary>
public bool Filemark;
2019-11-25 00:54:38 +00:00
/// <summary>If set indicates device has arrived end-of-medium</summary>
public bool EOM;
2019-11-25 00:54:38 +00:00
/// <summary>Means the requested logical block length did not match the logical block length on the medium</summary>
public bool ILI;
2019-11-25 00:54:38 +00:00
/// <summary>Contains the sense key</summary>
public SenseKeys SenseKey;
2019-11-25 00:54:38 +00:00
/// <summary>Additional information</summary>
public uint Information;
2019-11-25 00:54:38 +00:00
/// <summary>Additional sense length</summary>
public byte AdditionalLength;
2019-11-25 00:54:38 +00:00
/// <summary>Command specific information field</summary>
public uint CommandSpecific;
2019-11-25 00:54:38 +00:00
/// <summary>Additional sense code</summary>
public byte ASC;
2019-11-25 00:54:38 +00:00
/// <summary>Additional sense code qualifier</summary>
public byte ASCQ;
public byte FieldReplaceable;
2019-11-25 00:54:38 +00:00
/// <summary>If set, <see cref="SenseKeySpecific" /> is valid</summary>
public bool SKSV;
2018-06-22 08:08:38 +01:00
public uint SenseKeySpecific;
public byte[] AdditionalSense;
}
2019-11-25 00:54:38 +00:00
[SuppressMessage("ReSharper", "MemberCanBeInternal"), SuppressMessage("ReSharper", "InconsistentNaming"),
SuppressMessage("ReSharper", "NotAccessedField.Global")]
2015-11-23 04:08:09 +00:00
public struct DescriptorSense
{
2019-11-25 00:54:38 +00:00
/// <summary>Contains the sense key</summary>
2015-11-23 04:08:09 +00:00
public SenseKeys SenseKey;
2019-11-25 00:54:38 +00:00
/// <summary>Additional sense code</summary>
2015-11-23 04:08:09 +00:00
public byte ASC;
2019-11-25 00:54:38 +00:00
/// <summary>Additional sense code qualifier</summary>
2015-11-23 04:08:09 +00:00
public byte ASCQ;
public bool Overflow;
2019-11-25 00:54:38 +00:00
/// <summary>The descriptors, indexed by type</summary>
2015-11-23 04:08:09 +00:00
public Dictionary<byte, byte[]> Descriptors;
}
2019-11-25 00:54:38 +00:00
[SuppressMessage("ReSharper", "MemberCanBeInternal"), SuppressMessage("ReSharper", "InconsistentNaming"),
SuppressMessage("ReSharper", "NotAccessedField.Global")]
2015-11-23 04:08:09 +00:00
public struct AnotherProgressIndicationSenseDescriptor
{
public SenseKeys SenseKey;
2018-06-22 08:08:38 +01:00
public byte ASC;
public byte ASCQ;
public ushort Progress;
2015-11-23 04:08:09 +00:00
}
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static class Sense
{
2019-11-25 00:54:38 +00:00
/// <summary>Gets the SCSI SENSE type to help chosing the correct decoding function</summary>
/// <returns>The type.</returns>
/// <param name="sense">Sense bytes.</param>
public static SenseType GetType(byte[] sense)
{
2019-11-25 00:54:38 +00:00
if(sense == null)
return SenseType.Invalid;
2019-11-25 00:54:38 +00:00
if(sense.Length < 4)
return SenseType.Invalid;
2019-11-25 00:54:38 +00:00
if((sense[0] & 0x70) != 0x70)
return sense.Length != 4 ? SenseType.Invalid : SenseType.StandardSense;
2016-04-19 02:11:47 +01:00
switch(sense[0] & 0x0F)
{
2018-06-22 08:08:38 +01:00
case 0: return SenseType.ExtendedSenseFixedCurrent;
case 1: return SenseType.ExtendedSenseFixedPast;
case 2: return SenseType.ExtendedSenseDescriptorCurrent;
case 3: return SenseType.ExtendedSenseDescriptorPast;
2017-12-19 20:33:03 +00:00
default: return SenseType.Unknown;
}
}
public static StandardSense? DecodeStandard(byte[] sense)
{
2019-11-25 00:54:38 +00:00
if(GetType(sense) != SenseType.StandardSense)
return null;
2019-11-25 00:54:38 +00:00
var decoded = new StandardSense();
decoded.AddressValid |= (sense[0] & 0x80) == 0x80;
2018-06-22 08:08:38 +01:00
decoded.ErrorClass = (byte)((sense[0] & 0x70) >> 4);
decoded.ErrorType = (byte)(sense[0] & 0x0F);
decoded.Private = (byte)((sense[1] & 0x80) >> 4);
decoded.LBA = (uint)(((sense[1] & 0x0F) << 16) + (sense[2] << 8) + sense[3]);
return decoded;
}
2018-12-31 13:17:27 +00:00
public static FixedSense? DecodeFixed(byte[] sense) => DecodeFixed(sense, out _);
public static FixedSense? DecodeFixed(byte[] sense, out string senseDescription)
{
senseDescription = null;
2019-11-25 00:54:38 +00:00
if((sense[0] & 0x7F) != 0x70 &&
(sense[0] & 0x7F) != 0x71)
return null;
if(sense.Length < 8)
return null;
2019-11-25 00:54:38 +00:00
var decoded = new FixedSense
{
2019-11-25 00:54:38 +00:00
InformationValid = (sense[0] & 0x80) == 0x80, SegmentNumber = sense[1],
Filemark = (sense[2] & 0x80) == 0x80, EOM = (sense[2] & 0x40) == 0x40,
2018-06-22 08:08:38 +01:00
ILI = (sense[2] & 0x20) == 0x20,
SenseKey = (SenseKeys)(sense[2] & 0x0F),
Information = (uint)((sense[3] << 24) + (sense[4] << 16) + (sense[5] << 8) + sense[6]),
AdditionalLength = sense[7]
};
if(sense.Length >= 12)
decoded.CommandSpecific = (uint)((sense[8] << 24) + (sense[9] << 16) + (sense[10] << 8) + sense[11]);
2016-04-19 02:11:47 +01:00
if(sense.Length >= 14)
{
2018-06-22 08:08:38 +01:00
decoded.ASC = sense[12];
decoded.ASCQ = sense[13];
senseDescription = GetSenseDescription(decoded.ASC, decoded.ASCQ);
}
2019-11-25 00:54:38 +00:00
if(sense.Length >= 15)
decoded.FieldReplaceable = sense[14];
2019-11-25 00:54:38 +00:00
if(sense.Length >= 18)
decoded.SenseKeySpecific = (uint)((sense[15] << 16) + (sense[16] << 8) + sense[17]);
2019-11-25 00:54:38 +00:00
if(sense.Length <= 18)
return decoded;
decoded.AdditionalSense = new byte[sense.Length - 18];
Array.Copy(sense, 18, decoded.AdditionalSense, 0, decoded.AdditionalSense.Length);
return decoded;
}
2018-12-31 13:17:27 +00:00
public static DescriptorSense? DecodeDescriptor(byte[] sense) => DecodeDescriptor(sense, out _);
2015-11-23 04:08:09 +00:00
public static DescriptorSense? DecodeDescriptor(byte[] sense, out string senseDescription)
{
senseDescription = null;
2019-11-25 00:54:38 +00:00
if(sense == null)
return null;
2015-11-23 04:08:09 +00:00
2019-11-25 00:54:38 +00:00
if(sense.Length < 8)
return null;
2015-11-23 04:08:09 +00:00
2019-11-25 00:54:38 +00:00
var decoded = new DescriptorSense
{
2019-11-25 00:54:38 +00:00
SenseKey = (SenseKeys)(sense[1] & 0x0F), ASC = sense[2], ASCQ = sense[3],
Overflow = (sense[4] & 0x80) == 0x80, Descriptors = new Dictionary<byte, byte[]>()
};
2015-11-23 04:08:09 +00:00
senseDescription = GetSenseDescription(decoded.ASC, decoded.ASCQ);
int offset = 8;
2019-11-25 00:54:38 +00:00
2016-04-19 02:11:47 +01:00
while(offset < sense.Length)
if(offset + 2 < sense.Length)
2015-11-23 04:08:09 +00:00
{
byte descType = sense[offset];
2018-06-22 08:08:38 +01:00
int descLen = sense[offset + 1] + 1;
2015-11-23 04:08:09 +00:00
byte[] desc = new byte[descLen];
Array.Copy(sense, offset, desc, 0, descLen);
2019-11-25 00:54:38 +00:00
if(!decoded.Descriptors.ContainsKey(descType))
decoded.Descriptors.Add(descType, desc);
2015-11-23 04:08:09 +00:00
offset += descLen;
}
2018-06-22 08:08:38 +01:00
else
break;
2015-11-23 04:08:09 +00:00
return decoded;
}
public static string PrettifySense(byte[] sense)
{
SenseType type = GetType(sense);
2016-04-19 02:11:47 +01:00
switch(type)
{
2017-12-19 20:33:03 +00:00
case SenseType.StandardSense: return PrettifySense(DecodeStandard(sense));
case SenseType.ExtendedSenseFixedCurrent:
2017-12-19 20:33:03 +00:00
case SenseType.ExtendedSenseFixedPast: return PrettifySense(DecodeFixed(sense));
2015-11-23 04:08:09 +00:00
case SenseType.ExtendedSenseDescriptorCurrent:
2017-12-19 20:33:03 +00:00
case SenseType.ExtendedSenseDescriptorPast: return PrettifySense(DecodeDescriptor(sense));
default: return null;
}
}
public static string PrettifySense(StandardSense? sense)
{
2019-11-25 00:54:38 +00:00
if(!sense.HasValue)
return null;
2017-12-19 20:33:03 +00:00
return sense.Value.AddressValid
? $"Error class {sense.Value.ErrorClass} type {sense.Value.ErrorType} happened on block {sense.Value.LBA}\n"
: $"Error class {sense.Value.ErrorClass} type {sense.Value.ErrorType}\n";
}
public static string PrettifySense(FixedSense? sense)
{
2019-11-25 00:54:38 +00:00
if(!sense.HasValue)
return null;
FixedSense decoded = sense.Value;
2019-11-25 00:54:38 +00:00
var sb = new StringBuilder();
sb.AppendFormat("SCSI SENSE: {0}", GetSenseKey(decoded.SenseKey)).AppendLine();
2017-12-19 20:33:03 +00:00
2019-11-25 00:54:38 +00:00
if(decoded.SegmentNumber > 0)
sb.AppendFormat("On segment {0}", decoded.SegmentNumber).AppendLine();
if(decoded.Filemark)
sb.AppendLine("Filemark or setmark found");
if(decoded.EOM)
sb.AppendLine("End-of-medium/partition found");
if(decoded.ILI)
sb.AppendLine("Incorrect length indicator");
if(decoded.InformationValid)
sb.AppendFormat("On logical block {0}", decoded.Information).AppendLine();
if(decoded.AdditionalLength < 6)
return sb.ToString();
sb.AppendLine(GetSenseDescription(decoded.ASC, decoded.ASCQ));
2019-11-25 00:54:38 +00:00
if(decoded.AdditionalLength < 10)
return sb.ToString();
2019-11-25 00:54:38 +00:00
if(!decoded.SKSV)
return sb.ToString();
switch(decoded.SenseKey)
{
case SenseKeys.IllegalRequest:
{
2019-11-25 00:54:38 +00:00
sb.AppendLine((decoded.SenseKeySpecific & 0x400000) == 0x400000 ? "Illegal field in CDB"
: "Illegal field in data parameters");
if((decoded.SenseKeySpecific & 0x200000) == 0x200000)
sb.AppendFormat("Invalid value in bit {0} in field {1} of CDB",
2019-11-25 00:54:38 +00:00
(decoded.SenseKeySpecific & 0x70000) >> 16, decoded.SenseKeySpecific & 0xFFFF).
AppendLine();
else
2019-11-25 00:54:38 +00:00
sb.AppendFormat("Invalid value in field {0} of CDB", decoded.SenseKeySpecific & 0xFFFF).
AppendLine();
}
2019-11-25 00:54:38 +00:00
break;
case SenseKeys.NotReady:
2019-11-25 00:54:38 +00:00
sb.AppendFormat("Format progress {0:P}", (double)(decoded.SenseKeySpecific & 0xFFFF) / 65536).
AppendLine();
break;
case SenseKeys.RecoveredError:
case SenseKeys.HardwareError:
case SenseKeys.MediumError:
sb.AppendFormat("Actual retry count is {0}", decoded.SenseKeySpecific & 0xFFFF).AppendLine();
2019-11-25 00:54:38 +00:00
break;
}
return sb.ToString();
}
2015-11-23 04:08:09 +00:00
public static string PrettifySense(DescriptorSense? sense)
{
2019-11-25 00:54:38 +00:00
if(!sense.HasValue)
return null;
2015-11-23 04:08:09 +00:00
DescriptorSense decoded = sense.Value;
2019-11-25 00:54:38 +00:00
var sb = new StringBuilder();
2015-11-23 04:08:09 +00:00
sb.AppendFormat("SCSI SENSE: {0}", GetSenseKey(decoded.SenseKey)).AppendLine();
sb.AppendLine(GetSenseDescription(decoded.ASC, decoded.ASCQ));
2019-11-25 00:54:38 +00:00
if(decoded.Descriptors == null ||
decoded.Descriptors.Count == 0)
return sb.ToString();
2015-11-23 04:08:09 +00:00
2016-04-19 02:11:47 +01:00
foreach(KeyValuePair<byte, byte[]> kvp in decoded.Descriptors)
switch(kvp.Key)
2015-11-23 04:08:09 +00:00
{
case 0x00:
sb.AppendLine(PrettifyDescriptor00(kvp.Value));
2019-11-25 00:54:38 +00:00
2015-11-23 04:08:09 +00:00
break;
}
return sb.ToString();
}
2019-11-25 00:54:38 +00:00
/// <summary>Decodes the information sense data descriptor</summary>
2015-11-23 04:08:09 +00:00
/// <returns>The information value</returns>
/// <param name="descriptor">Descriptor.</param>
2016-07-28 22:25:26 +01:00
public static ulong DecodeDescriptor00(byte[] descriptor)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
if(descriptor.Length != 12 ||
descriptor[0] != 0x00)
return 0;
2015-11-23 04:08:09 +00:00
byte[] temp = new byte[8];
temp[0] = descriptor[11];
temp[1] = descriptor[10];
temp[2] = descriptor[9];
temp[3] = descriptor[8];
temp[4] = descriptor[7];
temp[5] = descriptor[6];
temp[6] = descriptor[5];
temp[7] = descriptor[4];
return BitConverter.ToUInt64(temp, 0);
}
2019-11-25 00:54:38 +00:00
/// <summary>Decodes the command-specific information sense data descriptor</summary>
2015-11-23 04:08:09 +00:00
/// <returns>The command-specific information sense data descriptor.</returns>
/// <param name="descriptor">Descriptor.</param>
2016-07-28 22:25:26 +01:00
public static ulong DecodeDescriptor01(byte[] descriptor)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
if(descriptor.Length != 12 ||
descriptor[0] != 0x01)
return 0;
2015-11-23 04:08:09 +00:00
byte[] temp = new byte[8];
temp[0] = descriptor[11];
temp[1] = descriptor[10];
temp[2] = descriptor[9];
temp[3] = descriptor[8];
temp[4] = descriptor[7];
temp[5] = descriptor[6];
temp[6] = descriptor[5];
temp[7] = descriptor[4];
return BitConverter.ToUInt64(temp, 0);
}
2019-11-25 00:54:38 +00:00
/// <summary>Decodes the sense key specific sense data descriptor</summary>
2015-11-23 04:08:09 +00:00
/// <returns>The sense key specific sense data descriptor.</returns>
/// <param name="descriptor">Descriptor.</param>
public static byte[] DecodeDescriptor02(byte[] descriptor)
{
2019-11-25 00:54:38 +00:00
if(descriptor.Length != 8 ||
descriptor[0] != 0x02)
return null;
2015-11-23 04:08:09 +00:00
byte[] temp = new byte[3];
Array.Copy(descriptor, 4, temp, 0, 3);
2019-11-25 00:54:38 +00:00
2015-11-23 04:08:09 +00:00
return temp;
}
2019-11-25 00:54:38 +00:00
/// <summary>Decodes the field replaceable unit sense data descriptor</summary>
2015-11-23 04:08:09 +00:00
/// <returns>The field replaceable unit sense data descriptor.</returns>
/// <param name="descriptor">Descriptor.</param>
public static byte DecodeDescriptor03(byte[] descriptor)
{
2019-11-25 00:54:38 +00:00
if(descriptor.Length != 4 ||
descriptor[0] != 0x03)
return 0;
2015-11-23 04:08:09 +00:00
return descriptor[3];
}
2019-11-25 00:54:38 +00:00
/// <summary>Decodes the another progress indication sense data descriptor</summary>
2015-11-23 04:08:09 +00:00
/// <returns>The another progress indication sense data descriptor.</returns>
/// <param name="descriptor">Descriptor.</param>
public static AnotherProgressIndicationSenseDescriptor? DecodeDescriptor0A(byte[] descriptor)
{
2019-11-25 00:54:38 +00:00
if(descriptor.Length != 8 ||
descriptor[0] != 0x0A)
return null;
2015-11-23 04:08:09 +00:00
return new AnotherProgressIndicationSenseDescriptor
{
2019-11-25 00:54:38 +00:00
SenseKey = (SenseKeys)descriptor[2], ASC = descriptor[3], ASCQ = descriptor[4],
Progress = (ushort)((descriptor[6] << 8) + descriptor[7])
};
2015-11-23 04:08:09 +00:00
}
2019-11-25 00:54:38 +00:00
public static void DecodeDescriptor04(byte[] descriptor) => throw new NotImplementedException("Check SSC-4");
2015-11-23 04:08:09 +00:00
2019-11-25 00:54:38 +00:00
public static void DecodeDescriptor05(byte[] descriptor) => throw new NotImplementedException("Check SBC-3");
2015-11-23 04:08:09 +00:00
2019-11-25 00:54:38 +00:00
public static void DecodeDescriptor06(byte[] descriptor) => throw new NotImplementedException("Check OSD");
2015-11-23 04:08:09 +00:00
2019-11-25 00:54:38 +00:00
public static void DecodeDescriptor07(byte[] descriptor) => throw new NotImplementedException("Check OSD");
2015-11-23 04:08:09 +00:00
2019-11-25 00:54:38 +00:00
public static void DecodeDescriptor08(byte[] descriptor) => throw new NotImplementedException("Check OSD");
2015-11-23 04:08:09 +00:00
2019-11-25 00:54:38 +00:00
public static AtaErrorRegistersLba48 DecodeDescriptor09(byte[] descriptor) => new AtaErrorRegistersLba48
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
Error = descriptor[3], SectorCount = (ushort)((descriptor[4] << 8) + descriptor[5]),
LbaLow = (ushort)((descriptor[6] << 8) + descriptor[7]),
LbaMid = (ushort)((descriptor[8] << 8) + descriptor[9]),
LbaHigh = (ushort)((descriptor[10] << 8) + descriptor[11]),
DeviceHead = descriptor[12],
Status = descriptor[13]
};
2015-11-23 04:08:09 +00:00
2019-11-25 00:54:38 +00:00
public static void DecodeDescriptor0B(byte[] descriptor) => throw new NotImplementedException("Check SBC-3");
public static void DecodeDescriptor0D(byte[] descriptor) => throw new NotImplementedException("Check SBC-3");
2015-11-23 04:08:09 +00:00
2018-12-31 13:17:27 +00:00
public static string PrettifyDescriptor00(ulong information) => $"On logical block {information}\n";
2015-11-23 04:08:09 +00:00
2018-12-31 13:17:27 +00:00
public static string PrettifyDescriptor00(byte[] descriptor) =>
PrettifyDescriptor00(DecodeDescriptor00(descriptor));
2015-11-23 04:08:09 +00:00
public static string GetSenseKey(SenseKeys key)
{
2016-04-19 02:11:47 +01:00
switch(key)
{
2019-11-25 00:54:38 +00:00
case SenseKeys.AbortedCommand: return"ABORTED COMMAND";
case SenseKeys.BlankCheck: return"BLANK CHECK";
case SenseKeys.CopyAborted: return"COPY ABORTED";
case SenseKeys.DataProtect: return"DATA PROTECT";
case SenseKeys.Equal: return"EQUAL";
case SenseKeys.HardwareError: return"HARDWARE ERROR";
case SenseKeys.IllegalRequest: return"ILLEGAL REQUEST";
case SenseKeys.MediumError: return"MEDIUM ERROR";
case SenseKeys.Miscompare: return"MISCOMPARE";
case SenseKeys.NoSense: return"NO SENSE";
case SenseKeys.PrivateUse: return"PRIVATE USE";
case SenseKeys.RecoveredError: return"RECOVERED ERROR";
case SenseKeys.Completed: return"COMPLETED";
case SenseKeys.UnitAttention: return"UNIT ATTENTION";
case SenseKeys.VolumeOverflow: return"VOLUME OVERFLOW";
default: return"UNKNOWN";
}
}
[SuppressMessage("ReSharper", "InconsistentNaming")]
public static string GetSenseDescription(byte ASC, byte ASCQ)
{
2016-04-19 02:11:47 +01:00
switch(ASC)
{
case 0x00:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"NO ADDITIONAL SENSE INFORMATION";
case 0x01: return"FILEMARK DETECTED";
case 0x02: return"END-OF-PARTITION/MEDIUM DETECTED";
case 0x03: return"SETMARK DETECTED";
case 0x04: return"BEGINNING-OF-PARTITION/MEDIUM DETECTED";
case 0x05: return"END-OF-DATA DETECTED";
case 0x06: return"I/O PROCESS TERMINATED";
case 0x07: return"PROGRAMMABLE EARLY WARNING DETECTED";
case 0x11: return"AUDIO PLAY OPERATION IN PROGRESS";
case 0x12: return"AUDIO PLAY OPERATION PAUSED";
case 0x13: return"AUDIO PLAY OPERATION SUCCESSFULLY COMPLETED";
case 0x14: return"AUDIO PLAY OPERATION STOPPED DUE TO ERROR";
case 0x15: return"NO CURRENT AUDIO STATUS TO RETURN";
case 0x16: return"OPERATION IN PROGRESS";
case 0x17: return"CLEANING REQUESTED";
case 0x18: return"ERASE OPERATION IN PROGRESS";
case 0x19: return"LOCATE OPERATION IN PROGRESS";
case 0x1A: return"REWIND OPERATION IN PROGRESS";
case 0x1B: return"SET CAPACITY OPERATION IN PROGRESS";
case 0x1C: return"VERIFY OPERATION IN PROGRESS";
case 0x1D: return"ATA PASS THROUGH INFORMATION AVAILABLE";
case 0x1E: return"CONFLICTING SA CREATION REQUEST";
case 0x1F: return"LOGICAL UNIT TRANSITIONING TO ANOTHER POWER CONDITION";
case 0x20: return"EXTENDED COPY INFORMATION AVAILABLE";
case 0x21: return"ATOMIC COMMAND ABORTED DUE TO ACA";
}
2017-12-19 20:33:03 +00:00
break;
case 0x01:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"NO INDEX/SECTOR SIGNAL";
}
2017-12-19 20:33:03 +00:00
break;
case 0x02:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"NO SEEK COMPLETE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x03:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"PERIPHERAL DEVICE WRITE FAULT";
case 0x01: return"NO WRITE CURRENT";
case 0x02: return"EXCESSIVE WRITE ERRORS";
}
2017-12-19 20:33:03 +00:00
break;
case 0x04:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LOGICAL UNIT NOT READY, CAUSE NOT REPORTABLE";
case 0x01: return"LOGICAL UNIT IS IN PROCESS OF BECOMING READY";
case 0x02: return"LOGICAL UNIT NOT READY, INITIALIZING COMMAND REQUIRED";
case 0x03: return"LOGICAL UNIT NOT READY, MANUAL INTERVENTION REQUIRED";
case 0x04: return"LOGICAL UNIT NOT READY, FORMAT IN PROGRESS";
case 0x05: return"LOGICAL UNIT NOT READY, REBUILD IN PROGRESS";
case 0x06: return"LOGICAL UNIT NOT READY, RECALCULATION IN PROGRESS";
case 0x07: return"LOGICAL UNIT NOT READY, OPERATION IN PROGRESS";
case 0x08: return"LOGICAL UNIT NOT READY, LONG WRITE IN PROGRESS";
case 0x09: return"LOGICAL UNIT NOT READY, SELF-TEST IN PROGRESS";
case 0x0A: return"LOGICAL UNIT NOT ACCESSIBLE, ASYMMETRIC ACCESS STATE TRANSITION";
case 0x0B: return"LOGICAL UNIT NOT ACCESSIBLE, TARGET IN STANDBY STATE";
case 0x0C: return"LOGICAL UNIT NOT ACCESSIBLE, TARGET PORT IN UNAVAILABLE STATE";
case 0x0D: return"LOGICAL UNIT NOT READY, STRUCTURE CHECK REQUIRED";
case 0x0E: return"LOGICAL UNIT NOT READY, SECURITY SESSION IN PROGRESS";
case 0x10: return"LOGICAL UNIT NOT READY, AUXILIARY MEMORY NOT ACCESSIBLE";
case 0x11: return"LOGICAL UNIT NOT READY, NOTIFY (ENABLE SPINUP) REQUIRED";
case 0x12: return"LOGICAL UNIT NOT READY, OFFLINE";
case 0x13: return"LOGICAL UNIT NOT READY, SA CREATION IN PROGRESS";
case 0x14: return"LOGICAL UNIT NOT READY, SPACE ALLOCATION IN PROGRESS";
case 0x15: return"LOGICAL UNIT NOT READY, ROBOTICS DISABLED";
case 0x16: return"LOGICAL UNIT NOT READY, CONFIGURATION REQUIRED";
case 0x17: return"LOGICAL UNIT NOT READY, CALIBRATION REQUIRED";
case 0x18: return"LOGICAL UNIT NOT READY, A DOOR IS OPEN";
case 0x19: return"LOGICAL UNIT NOT READY, OPERATING IN SEQUENTIAL MODE";
case 0x1A: return"LOGICAL UNIT NOT READY, START STOP UNIT IN PROGRESS";
case 0x1B: return"LOGICAL UNIT NOT READY, SANITIZE IN PROGRESS";
case 0x1C: return"LOGICAL UNIT NOT READY, ADDITIONAL POWER USE NOT YET GRANTED";
case 0x1D: return"LOGICAL UNIT NOT READY, CONFIGURATION IN PROGRESS";
case 0x1E: return"LOGICAL UNIT NOT READY, MICROCODE ACTIVATION REQUIRED";
case 0x1F: return"LOGICAL UNIT NOT READY, MICROCODE DOWNLOAD REQUIRED";
case 0x20: return"LOGICAL UNIT NOT READY, LOGICAL UNIT RESET REQUIRED";
case 0x21: return"LOGICAL UNIT NOT READY, HARD RESET REQUIRED";
case 0x22: return"LOGICAL UNIT NOT READY, POWER CYCLE REQUIRED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x05:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LOGICAL UNIT DOES NOT RESPOND TO SELECTION";
}
2017-12-19 20:33:03 +00:00
break;
case 0x06:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"NO REFERENCE POSITION FOUND";
}
2017-12-19 20:33:03 +00:00
break;
case 0x07:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"MULTIPLE PERIPHERAL DEVICES SELECTED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x08:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LOGICAL UNIT COMMUNICATION FAILURE";
case 0x01: return"LOGICAL UNIT COMMUNICATION TIME-OUT";
case 0x02: return"LOGICAL UNIT COMMUNICATION PARITY ERROR";
case 0x03: return"LOGICAL UNIT COMMUNICATION CRC ERROR";
case 0x04: return"UNREACHABLE COPY TARGET";
}
2017-12-19 20:33:03 +00:00
break;
case 0x09:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"TRACK FLOLLOWING ERROR";
case 0x01: return"TRACKING SERVO FAILURE";
case 0x02: return"FOCUS SERVO FAILURE";
case 0x03: return"SPINDLE SERVO FAILURE";
case 0x04: return"HEAD SELECT FAULT";
case 0x05: return"VIBRATION INDUCED TRACKING ERROR";
}
2017-12-19 20:33:03 +00:00
break;
case 0x0A:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ERROR LOG OVERFLOW";
}
2017-12-19 20:33:03 +00:00
break;
2015-11-23 04:08:09 +00:00
case 0x0B:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"WARNING";
case 0x01: return"WARNING - SPECIFIED TEMPERATURE EXCEEDED";
case 0x02: return"WARNING - ENCLOSURE DEGRADED";
case 0x03: return"WARNING - BACKGROUND SELF-TEST FAILED";
case 0x04: return"WARNING - BACKGROUND PRE-SCAN DETECTED MEDIUM ERROR";
case 0x05: return"WARNING - BACKGROUND MEDIUM SCAN DETECTED MEDIUM ERROR";
case 0x06: return"WARNING - NON-VOLATILE CACHE NOW VOLATILE";
case 0x07: return"WARNING - DEGRADED POWER TO NON-VOLATILE CACHE";
case 0x08: return"WARNING - POWER LOSS EXPECTED";
case 0x09: return"WARNING - DEVICE STATISTICS NOTIFICATION ACTIVE";
case 0x0A: return"WARNING - HIGH CRITICAL TEMPERATURE LIMIT EXCEEDED";
case 0x0B: return"WARNING - LOW CRITICAL TEMPERATURE LIMIT EXCEEDED";
case 0x0C: return"WARNING - HIGH OPERATING TEMPERATURE LIMIT EXCEEDED";
case 0x0D: return"WARNING - LOW OPERATING TEMPERATURE LIMIT EXCEEDED";
case 0x0E: return"WARNING - HIGH CRITICAL HUMIDITY LIMIT EXCEEDED";
case 0x0F: return"WARNING - LOW CRITICAL HUMIDITY LIMIT EXCEEDED";
case 0x10: return"WARNING - HIGH OPERATING HUMIDITY LIMIT EXCEEDED";
case 0x11: return"WARNING - LOW OPERATING HUMIDITY LIMIT EXCEEDED";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x0C:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"WRITE ERROR";
case 0x01: return"WRITE ERROR - RECOVERED WITH AUTO REALLOCATION";
case 0x02: return"WRITE ERROR - AUTO REALLOCATION FAILED";
case 0x03: return"WRITE ERROR - RECOMMENDED REASSIGNMENT";
case 0x04: return"COMPRESSION CHECK MISCOMPARE ERROR";
case 0x05: return"DATA EXPANSION OCCURRED DURING COMPRESSION";
case 0x06: return"BLOCK NOT COMPRESSIBLE";
case 0x07: return"WRITE ERROR - RECOVERY NEEDED";
case 0x08: return"WRITE ERROR - RECOVERY FAILED";
case 0x09: return"WRITE ERROR - LOSS OF STREAMING";
case 0x0A: return"WRITE ERROR - PADDING BLOCKS ADDED";
case 0x0B: return"AUXILIARY MEMORY WRITE ERROR";
case 0x0C: return"WRITE ERROR - UNEXPECTED UNSOLICITED DATA";
case 0x0D: return"WRITE ERROR - NOT ENOUGH UNSOLICITED DATA";
case 0x0E: return"MULTIPLE WRITE ERRORS";
case 0x0F: return"DEFECTS IN ERROR WINDOW";
case 0x10: return"INCOMPLETE MULTIPLE ATOMIC WRITE OPERATIONS";
case 0x11: return"WRITE ERROR - RECOVERY SCAN NEEDED";
case 0x12: return"WRITE ERROR - INSUFFICIENT ZONE RESOURCES";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x0D:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ERROR DETECTED BY THIRD PARTY TEMPORARY INITIATOR";
case 0x01: return"THIRD PARTY DEVICE FAILURE";
case 0x02: return"COPY TARGET DEVICE NOT REACHABLE";
case 0x03: return"INCORRECT COPY TARGET DEVICE TYPE";
case 0x04: return"COPY TARGET DEVICE DATA UNDERRUN";
case 0x05: return"COPY TARGET DEVICE DATA OVERRUN";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x0E:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INVALID INFORMATION UNIT";
case 0x01: return"INFORMATION UNIT TOO SHORT";
case 0x02: return"INFORMATION UNIT TOO LONG";
case 0x03: return"INVALID FIELD IN COMMAND INFORMATION UNIT";
}
2017-12-19 20:33:03 +00:00
break;
case 0x10:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ID CRC OR ECC ERROR";
case 0x01: return"LOGICAL BLOCK GUARD CHECK FAILED";
case 0x02: return"LOGICAL BLOCK APPLICATION TAG CHECK FAILED";
case 0x03: return"LOGICAL BLOCK REFERENCE TAG CHECK FAILED";
case 0x04: return"LOGICAL BLOCK PROTECTION ERROR ON RECOVER BUFFERED DATA";
case 0x05: return"LOGICAL BLOCK PROTECTION METHOD ERROR";
}
2017-12-19 20:33:03 +00:00
break;
case 0x11:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"UNRECOVERED READ ERROR";
case 0x01: return"READ RETRIES EXHAUSTED";
case 0x02: return"ERROR TOO LONG TO CORRECT";
case 0x03: return"MULTIPLE READ ERRORS";
case 0x04: return"UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED";
case 0x05: return"L-EC UNCORRECTABLE ERROR";
case 0x06: return"CIRC UNRECOVERED ERROR";
case 0x07: return"DATA RESYNCHRONIZATION ERROR";
case 0x08: return"INCOMPLETE BLOCK READ";
case 0x09: return"NO GAP FOUND";
case 0x0A: return"MISCORRECTED ERROR";
case 0x0B: return"UNRECOVERED READ ERROR - RECOMMENDED REASSIGNMENT";
case 0x0C: return"UNRECOVERED READ ERROR - RECOMMENDED REWRITE THE DATA";
case 0x0D: return"DE-COMPRESSION CRC ERROR";
case 0x0E: return"CANNOT DECOMPRESS USING DECLARED ALGORITHM";
case 0x0F: return"ERROR READING UPC/EAN NUMBER";
case 0x10: return"ERROR READING ISRC NUMBER";
case 0x11: return"READ ERROR - LOSS OF STREAMING";
case 0x12: return"AUXILIARY MEMORY READ ERROR";
case 0x13: return"READ ERROR - FAILED RETRANSMISSITION REQUEST";
case 0x14: return"READ ERROR - LBA MARKED BAD BY APPLICATION CLIENT";
case 0x15: return"WRITE AFTER SANITIZE REQUIRED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x12:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ADDRESS MARK NOT FOUND FOR ID FIELD";
}
2017-12-19 20:33:03 +00:00
break;
case 0x13:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ADDRESS MARK NOT FOUND FOR DATA FIELD";
}
2017-12-19 20:33:03 +00:00
break;
case 0x14:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"RECORDED ENTITY NOT FOUND";
case 0x01: return"RECORD NOT FOUND";
case 0x02: return"FILEMARK OR SETMARK NOT FOUND";
case 0x03: return"END-OF-DATA NOT FOUND";
case 0x04: return"BLOCK SEQUENCE ERROR";
case 0x05: return"RECORD NOT FOUND - RECOMMENDAD REASSIGNMENT";
case 0x06: return"RECORD NOT FOUND - DATA AUTO-REALLOCATED";
case 0x07: return"LOCATE OPERATION FAILURE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x15:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"RANDOM POSITIONING ERROR";
case 0x01: return"MECHANICAL POSITIONING ERROR";
case 0x02: return"POSITIONING ERROR DETECTED BY READ OF MEDIUM";
}
2017-12-19 20:33:03 +00:00
break;
case 0x16:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"DATA SYNCHRONIZATION MARK ERROR";
case 0x01: return"DATA SYNC ERROR - DATA REWRITTEN";
case 0x02: return"DATA SYNC ERROR - RECOMMENDED REWRITE";
case 0x03: return"DATA SYNC ERROR - DATA AUTO-REALLOCATED";
case 0x04: return"DATA SYNC ERROR - RECOMMENDED REASSIGNMENT";
}
2017-12-19 20:33:03 +00:00
break;
case 0x17:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"RECOVERED DATA WITH NO ERROR CORRECTION APPLIED";
case 0x01: return"RECOVERED DATA WITH RETRIES";
case 0x02: return"RECOVERED DATA WITH POSITIVE HEAD OFFSET";
case 0x03: return"RECOVERED DATA WITH NEGATIVE HEAD OFFSET";
case 0x04: return"RECOVERED DATA WITH RETRIES AND/OR CIRC APPLIED";
case 0x05: return"RECOVERED DATA USING PREVIOUS SECTOR ID";
case 0x06: return"RECOVERED DATA WITHOUT ECC - DATA AUTO-REALLOCATED";
case 0x07: return"RECOVERED DATA WITHOUT ECC - RECOMMENDED REASSIGNMENT";
case 0x08: return"RECOVERED DATA WITHOUT ECC - RECOMMENDED REWRITE";
case 0x09: return"RECOVERED DATA WITHOUT ECC - DATA REWRITTEN";
}
2017-12-19 20:33:03 +00:00
break;
case 0x18:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"RECOVERED DATA WITH ERROR CORRECTION APPLIED";
case 0x01: return"RECOVERED DATA WITH ERROR CORRECTION & RETRIES APPLIED";
case 0x02: return"RECOVERED DATA - DATA AUTO-REALLOCATED";
case 0x03: return"RECOVERED DATA WITH CIRC";
case 0x04: return"RECOVERED DATA WITH L-EC";
case 0x05: return"RECOVERED DATA - RECOMMENDED REASSIGNMENT";
case 0x06: return"RECOVERED DATA - RECOMMENDED REWRITE";
case 0x07: return"RECOVERED DATA WITH ECC - DATA REWRITTEN";
case 0x08: return"RECOVERED DATA WITH LINKING";
}
2017-12-19 20:33:03 +00:00
break;
case 0x19:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"DEFECT LIST ERROR";
case 0x01: return"DEFECT LIST NOT AVAILABLE";
case 0x02: return"DEFECT LIST ERROR IN PRIMARY LIST";
case 0x03: return"DEFECT LIST ERROR IN GROWN LIST";
}
2017-12-19 20:33:03 +00:00
break;
case 0x1A:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"PARAMETER LIST LENGTH ERROR";
}
2017-12-19 20:33:03 +00:00
break;
case 0x1B:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"SYNCHRONOUS DATA TRANSFER ERROR";
}
2017-12-19 20:33:03 +00:00
break;
case 0x1C:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"DEFECT LIST NOT FOUND";
case 0x01: return"PRIMARY DEFECT LIST NOT FOUND";
case 0x02: return"GROWN DEFECT LIST NOT FOUND";
}
2017-12-19 20:33:03 +00:00
break;
case 0x1D:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"MISCOMPARE DURING VERIFY OPERATION";
case 0x01: return"MISCOMPARE VERIFY OF UNMAPPED LBA";
}
2017-12-19 20:33:03 +00:00
break;
case 0x1E:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"RECOVERED ID WITH ECC CORRECTION";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x1F:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"PARTIAL DEFECT LIST TRANSFER";
}
2017-12-19 20:33:03 +00:00
break;
case 0x20:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INVALID COMMAND OPERATION CODE";
case 0x01: return"ACCESS DENIED - INITIATOR PENDING-ENROLLED";
case 0x02: return"ACCESS DENIED - NO ACCESS RIGHTS";
case 0x03: return"ACCESS DENIED - INVALID MGMT ID KEY";
case 0x04: return"ILLEGAL COMMAND WHILE IN WRITE CAPABLE STATE";
case 0x05: return"ILLEGAL COMMAND WHILE IN READ CAPABLE STATE";
case 0x06: return"ILLEGAL COMMAND WHILE IN EXPLICIT ADDRESS MODE";
case 0x07: return"ILLEGAL COMMAND WHILE IN IMPLICIT ADDRESS MODE";
case 0x08: return"ACCESS DENIED - ENROLLMENT CONFLICT";
case 0x09: return"ACCESS DENIED - INVALID LUN IDENTIFIER";
case 0x0A: return"ACCESS DENIED - INVALID PROXY TOKEN";
case 0x0B: return"ACCESS DENIED - ACL LUN CONFLICT";
case 0x0C: return"ILLEGAL COMMAND WHEN NOT IN APPEND-ONLY MODE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x21:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LOGICAL BLOCK ADDRESS OUT OF RANGE";
case 0x01: return"INVALID ELEMENT ADDRESS";
case 0x02: return"INVALID ADDRESS FOR WRITE";
case 0x03: return"INVALID WRITE CROSSING LAYER JUMP";
case 0x04: return"UNALIGNED WRITE COMMAND";
case 0x05: return"WRITE BOUNDARY VIOLATION";
case 0x06: return"ATTEMPT TO READ INVALID DATA";
case 0x07: return"READ BOUNDARY VIOLATION";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x22:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ILLEGAL FUNCTION";
}
2017-12-19 20:33:03 +00:00
break;
2015-11-23 04:08:09 +00:00
case 0x23:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INVALID TOKEN OPERATION, CAUSE NOT REPORTABLE";
case 0x01: return"INVALID TOKEN OPERATION, UNSUPPORTED TOKEN TYPE";
case 0x02: return"INVALID TOKEN OPERATION, REMOTE TOKEN USAGE NOT SUPPORTED";
case 0x03: return"INVALID TOKEN OPERATION, REMOTE ROD TOKEN CREATION NOT SUPPORTED";
case 0x04: return"INVALID TOKEN OPERATION, TOKEN UNKNOWN";
case 0x05: return"INVALID TOKEN OPERATION, TOKEN CORRUPT";
case 0x06: return"INVALID TOKEN OPERATION, TOKEN REVOKED";
case 0x07: return"INVALID TOKEN OPERATION, TOKEN EXPIRED";
case 0x08: return"INVALID TOKEN OPERATION, TOKEN CANCELLED";
case 0x09: return"INVALID TOKEN OPERATION, TOKEN DELETED";
case 0x0A: return"INVALID TOKEN OPERATION, INVALID TOKEN LENGTH";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x24:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ILLEGAL FIELD IN CDB";
case 0x01: return"CDB DECRYPTION ERROR";
case 0x02: return"INVALID CDB FIELD WHILE IN EXPLICIT BLOCK ADDRESS MODEL";
case 0x03: return"INVALID CDB FIELD WHILE IN IMPLICIT BLOCK ADDRESS MODEL";
case 0x04: return"SECURITY AUDIT VALUE FROZEN";
case 0x05: return"SECURITY WORKING KEY FROZEN";
case 0x06: return"NONCE NOT UNIQUE";
case 0x07: return"NONCE TIMESTAMP OUT OF RANGE";
case 0x08: return"INVALID XCDB";
}
2017-12-19 20:33:03 +00:00
break;
case 0x25:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LOGICAL UNIT NOT SUPPORTED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x26:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INVALID FIELD IN PARAMETER LIST";
case 0x01: return"PARAMETER NOT SUPPORTED";
case 0x02: return"PARAMETER VALUE INVALID";
case 0x03: return"THRESHOLD PARAMETERS NOT SUPPORTED";
case 0x04: return"INVALID RELEASE OF PERSISTENT RESERVATION";
case 0x05: return"DATA DECRYPTION ERROR";
case 0x06: return"TOO MANY TARGET DESCRIPTORS";
case 0x07: return"UNSUPPORTED TARGET DESCRIPTOR TYPE CODE";
case 0x08: return"TOO MANY SEGMENT DESCRIPTORS";
case 0x09: return"UNSUPPORTED SEGMENT DESCRIPTOR TYPE CODE";
case 0x0A: return"UNEXPECTED INEXACT SEGMENT";
case 0x0B: return"INLINE DATA LENGTH EXCEEDED";
case 0x0C: return"INVALID OPERATION FOR COPY SOURCE OR DESTINATION";
case 0x0D: return"COPY SEGMENT GRANULARITY VIOLATION";
case 0x0E: return"INVALID PARAMETER WHILE PORT IS ENABLED";
case 0x0F: return"INVALID DATA-OUT BUFFER INTEGRITY CHECK VALUE";
case 0x10: return"DATA DECRYPTION KEY FAIL LIMIT REACHED";
case 0x11: return"INCOMPLETE KEY-ASSOCIATED DATA SET";
case 0x12: return"VENDOR SPECIFIC KEY REFERENCE NOT FOUND";
case 0x13: return"APPLICATION TAG MODE PAGE IS INVALID";
}
2017-12-19 20:33:03 +00:00
break;
case 0x27:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"WRITE PROTECTED";
case 0x01: return"HARDWARE WRITE PROTECTED";
case 0x02: return"LOGICAL UNIT SOFTWARE WRITE PROTECTED";
case 0x03: return"ASSOCIATED WRITE PROTECT";
case 0x04: return"PERSISTENT WRITE PROTECT";
case 0x05: return"PERMANENT WRITE PROTECT";
case 0x06: return"CONDITIONAL WRITE PROTECT";
case 0x07: return"SPACE ALLOCATION FAILED WRITE PROTECT";
case 0x08: return"ZONE IS READ ONLY";
}
2017-12-19 20:33:03 +00:00
break;
case 0x28:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"NOT READY TO READY CHANGE (MEDIUM MAY HAVE CHANGED)";
case 0x01: return"IMPORT OR EXPORT ELEMENT ACCESSED";
case 0x02: return"FORMAT-LAYER MAY HAVE CHANGED";
case 0x03: return"IMPORT/EXPORT ELEMENT ACCESSED, MEDIUM CHANGED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x29:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"POWER ON, RESET, OR BUS DEVICE RESET OCCURRED";
case 0x01: return"POWER ON OCCURRED";
case 0x02: return"SCSI BUS RESET OCCURRED";
case 0x03: return"BUS DEVICE RESET FUNCTION OCCURRED";
case 0x04: return"DEVICE INTERNAL RESET";
case 0x05: return"TRANSCEIVER MODE CHANGED TO SINGLE-ENDED";
case 0x06: return"TRANSCEIVER MODE CHANGED TO LVD";
case 0x07: return"I_T NEXUS LOSS OCCURRED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x2A:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"PARAMETERS CHANGED";
case 0x01: return"MODE PARAMETERS CHANGED";
case 0x02: return"LOG PARAMETERS CHANGED";
case 0x03: return"RESERVATIONS PREEMPTED";
case 0x04: return"RESERVATIONS RELEASED";
case 0x05: return"REGISTRATIONS PREEMPTED";
case 0x06: return"ASYMMETRIC ACCESS STATE CHANGED";
case 0x07: return"IMPLICIT ASYMMETRIC ACCESS STATE TRANSITION FAILED";
case 0x08: return"PRIORITY CHANGED";
case 0x09: return"CAPACITY DATA HAS CHANGED";
case 0x0A: return"ERROR HISTORY I_T NEXUS CLEARED";
case 0x0B: return"ERROR HISTORY SNAPSHOT RELEASED";
case 0x0C: return"ERROR RECOVERY ATTRIBUTES HAVE CHANGED";
case 0x0D: return"DATA ENCRYPTION CAPABILITIES CHANGED";
case 0x10: return"TIMESTAMP CHANGED";
case 0x11: return"DATA ENCRYPTION PARAMETERS CHANGED BY ANOTHER I_T NEXUS";
case 0x12: return"DATA ENCRYPTION PARAMETERS CHANGED BY VENDOR SPECIFIC EVENT";
case 0x13: return"DATA ENCRYPTION KEY INSTANCE COUNTER HAS CHANGED";
case 0x14: return"SA CREATION CAPABILITIES DATA HAS CHANGED";
case 0x15: return"MEDIUM REMOVAL PREVENTION PREEMPTED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x2B:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"COPY CANNOT EXECUTE SINCE HOST CANNOT DISCONNECT";
}
2017-12-19 20:33:03 +00:00
break;
case 0x2C:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"COMMAND SEQUENCE ERROR";
case 0x01: return"TOO MANY WINDOWS SPECIFIED";
case 0x02: return"INVALID COMBINATION OF WINDOWS SPECIFIED";
case 0x03: return"CURRENT PROGRAM AREA IS NOT EMPTY";
case 0x04: return"CURRENT PROGRAM AREA IS EMPTY";
case 0x05: return"ILLEGAL POWER CONDITION REQUEST";
case 0x06: return"PERSISTENT PREVENT CONFLICT";
case 0x07: return"PREVIOUS BUSY STATUS";
case 0x08: return"PREVIOUS TASK SET FULL STATUS";
case 0x09: return"PREVIOUS RESERVATION CONFLICT STATUS";
case 0x0A: return"PARTITION OR COLLECTION CONTAINS USER OBJECTS";
case 0x0B: return"NOT RESERVED";
case 0x0C: return"ORWRITE GENERATION DOES NOT MATCH";
case 0x0D: return"RESET WRITE POINTER NOT ALLOWED";
case 0x0E: return"ZONE IS OFFLINE";
case 0x0F: return"STREAM NOT OPEN";
case 0x10: return"UNWRITTEN DATA IN ZONE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x2D:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"OVERWRITE ERROR ON UPDATE IN PLACE";
}
2017-12-19 20:33:03 +00:00
break;
2015-11-23 04:08:09 +00:00
case 0x2E:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INSUFFICIENT TIME FOR OPERATION";
case 0x01: return"COMMAND TIMEOUT BEFORE PROCESSING";
case 0x02: return"COMMAND TIMEOUT DURING PROCESSING";
case 0x03: return"COMMAND TIMEOUT DURING PROCESSING DUE TO ERROR RECOVERY";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x2F:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"COMMANDS CLEARED BY ANOTHER INITIATOR";
case 0x01: return"COMMANDS CLEARED BY POWER LOSS NOTIFICATION";
case 0x02: return"COMMANDS CLEARED BY DEVICE SERVER";
case 0x03: return"SOME COMMANDS CLEARED BY QUEUING LAYER EVENT";
}
2017-12-19 20:33:03 +00:00
break;
case 0x30:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INCOMPATIBLE MEDIUM INSTALLED";
case 0x01: return"CANNOT READ MEDIUM - UNKNOWN FORMAT";
case 0x02: return"CANNOT READ MEDIUM - INCOMPATIBLE FORMAT";
case 0x03: return"CLEANING CARTRIDGE INSTALLED";
case 0x04: return"CANNOT WRITE MEDIUM - UNKNOWN FORMAT";
case 0x05: return"CANNOT WRITE MEDIUM - INCOMPATIBLE FORMAT";
case 0x06: return"CANNOT FORMAT MEDIUM - INCOMPATIBLE MEDIUM";
case 0x07: return"CLEANING FAILURE";
case 0x08: return"CANNOT WRITE - APPLICATION CODE MISMATCH";
case 0x09: return"CURRENT SESSION NOT FIXATED FOR APPEND";
case 0x0A: return"CLEANING REQUEST REJECTED";
case 0x0C: return"WORM MEDIUM - OVERWRITE ATTEMPTED";
case 0x0D: return"WORM MEDIUM - INTEGRITY CHECK";
case 0x10: return"MEDIUM NOT FORMATTED";
case 0x11: return"INCOMPATIBLE VOLUME TYPE";
case 0x12: return"INCOMPATIBLE VOLUME QUALIFIER";
case 0x13: return"CLEANING VOLUME EXPIRED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x31:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"MEDIUM FORMAT CORRUPTED";
case 0x01: return"FORMAT COMMAND FAILED";
case 0x02: return"ZONED FORMATTING FAILED DUE TO SPARE LINKING";
case 0x03: return"SANITIZE COMMAND FAILED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x32:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"NO DEFECT SPARE LOCATION AVAILABLE";
case 0x01: return"DEFECT LIST UPDATE FAILURE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x33:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"TAPE LENGTH ERROR";
}
2017-12-19 20:33:03 +00:00
break;
2015-11-23 04:08:09 +00:00
case 0x34:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ENCLOSURE FAILURE";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x35:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ENCLOSURE SERVICES FAILURE";
case 0x01: return"UNSUPPORTED ENCLOSURE FUNCTION";
case 0x02: return"ENCLOSURE SERVICES UNAVAILABLE";
case 0x03: return"ENCLOSURE SERVICES TRANSFER FAILURE";
case 0x04: return"ENCLOSURE SERVICES TRANSFER REFUSED";
case 0x05: return"ENCLOSURE SERVICES CHECKSUM ERROR";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x36:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"RIBBON, INK, OR TONER FAILURE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x37:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ROUNDED PARAMETER";
}
2017-12-19 20:33:03 +00:00
break;
2015-11-23 04:08:09 +00:00
case 0x38:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"EVENT STATUS NOTIFICATION";
case 0x02: return"ESN - POWER MANAGEMENT CLASS EVENT";
case 0x04: return"ESN - MEDIA CLASS EVENT";
case 0x06: return"ESN - DEVICE BUSY CLASS EVENT";
case 0x07: return"THIN PROVISIONING SOFT THRESHOLD REACHED";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x39:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"SAVING PARAMETERS NOT SUPPORTED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x3A:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"MEDIUM NOT PRESENT";
case 0x01: return"MEDIUM NOT PRESENT - TRAY CLOSED";
case 0x02: return"MEDIUM NOT PRESENT - TRAY OPEN";
case 0x03: return"MEDIUM NOT PRESENT - LOADABLE";
case 0x04: return"MEDIUM NOT PRESENT - MEDIUM AUXILIARY MEMORY ACCESSIBLE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x3B:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"SEQUENTIAL POSITIONING ERROR";
case 0x01: return"TAPE POSITION ERROR AT BEGINNING-OF-MEDIUM";
case 0x02: return"TAPE POSITION ERROR AT END-OF-MEDIUM";
case 0x03: return"TAPE OR ELECTRONIC VERTICAL FORMS UNIT NOT READY";
case 0x04: return"SLEW FAILURE";
case 0x05: return"PAPER JAM";
case 0x06: return"FAILED TO SENSE TOP-OF-FORM";
case 0x07: return"FAILED TO SENSE BOTTOM-OF-FORM";
case 0x08: return"REPOSITION ERROR";
case 0x09: return"READ PAST END OF MEDIUM";
case 0x0A: return"READ PAST BEGINNING OF MEDIUM";
case 0x0B: return"POSITION PAST END OF MEDIUM";
case 0x0C: return"POSITION PAST BEGINNING OF MEDIUM";
case 0x0D: return"MEDIUM DESTINATION ELEMENT FULL";
case 0x0E: return"MEDIUM SOURCE ELEMENT EMPTY";
case 0x0F: return"END OF MEDIUM REACHED";
case 0x11: return"MEDIUM MAGAZINE NOT ACCESSIBLE";
case 0x12: return"MEDIUM MAGAZINE REMOVED";
case 0x13: return"MEDIUM MAGAZINE INSERTED";
case 0x14: return"MEDIUM MAGAZINE LOCKED";
case 0x15: return"MEDIUM MAGAZINE UNLOCKED";
case 0x16: return"MECHANICAL POSITIONING OR CHANGER ERROR";
case 0x17: return"READ PAST END OF USER OBJECT";
case 0x18: return"ELEMENT DISABLED";
case 0x19: return"ELEMENT ENABLED";
case 0x1A: return"DATA TRANSFER DEVICE REMOVED";
case 0x1B: return"DATA TRANSFER DEVICE INSERTED";
case 0x1C: return"TOO MANY LOGICAL OBJECTS ON PARTITION TO SUPPORT OPERATION";
}
2017-12-19 20:33:03 +00:00
break;
case 0x3D:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INVALID BITS IN IDENTIFY MESSAGE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x3E:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LOGICAL UNIT HAS NOT SELF-CONFIGURED YET";
case 0x01: return"LOGICAL UNIT FAILURE";
case 0x02: return"TIMEOUT ON LOGICAL UNIT";
case 0x03: return"LOGICAL UNIT FAILED SELF-TEST";
case 0x04: return"LOGICAL UNIT UNABLE TO UPDATE SELF-TEST LOG";
}
2017-12-19 20:33:03 +00:00
break;
case 0x3F:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"TARGET OPERATING CONDITIONS HAVE CHANGED";
case 0x01: return"MICROCODE HAS BEEN CHANGED";
case 0x02: return"CHANGED OPERATING DEFINITION";
case 0x03: return"INQUIRY DATA HAS CHANGED";
case 0x04: return"COMPONENT DEVICE ATTACHED";
case 0x05: return"DEVICE IDENTIFIED CHANGED";
case 0x06: return"REDUNDANCY GROUP CREATED OR MODIFIED";
case 0x07: return"REDUNDANCY GROUP DELETED";
case 0x08: return"SPARE CREATED OR MODIFIED";
case 0x09: return"SPARE DELETED";
case 0x0A: return"VOLUME SET CREATED OR MODIFIED";
case 0x0B: return"VOLUME SET DELETED";
case 0x0C: return"VOLUME SET DEASSIGNED";
case 0x0D: return"VOLUME SET REASSIGNED";
case 0x0E: return"REPORTED LUNS DATA HAS CHANGED";
case 0x0F: return"ECHO BUFFER OVERWRITTEN";
case 0x10: return"MEDIUM LOADABLE";
case 0x11: return"MEDIUM AUXILIARY MEMORY ACCESSIBLE";
case 0x12: return"iSCSI IP ADDRESS ADDED";
case 0x13: return"iSCSI IP ADDRESS REMOVED";
case 0x14: return"iSCSI IP ADDRESS CHANGED";
case 0x15: return"INSPECT REFERRALS SENSE DESCRIPTORS";
case 0x16: return"MICROCODE HAS BEEN CHANGED WITHOUT RESET";
case 0x17: return"ZONE TRANSITION TO FULL";
}
2017-12-19 20:33:03 +00:00
break;
case 0x40:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"RAM FAILURE";
default: return$"DIAGNOSTIC FAILURE ON COMPONENT {ASCQ:X2}h";
}
case 0x41:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"DATA PATH FAILURE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x42:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"POWER-ON OR SELF-TEST FAILURE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x43:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"MESSAGE ERROR";
}
2017-12-19 20:33:03 +00:00
break;
case 0x44:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INTERNAL TARGET FAILURE";
case 0x01: return"PERSISTENT RESERVATION INFORMATION LOST";
case 0x71: return"ATA DEVICE FAILED SET FEATURES";
}
2017-12-19 20:33:03 +00:00
break;
case 0x45:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"SELECT OR RESELECT FAILURE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x46:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"UNSUCCESSFUL SOFT RESET";
}
2017-12-19 20:33:03 +00:00
break;
case 0x47:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"SCSI PARITY ERROR";
case 0x01: return"DATA PHASE CRC ERROR DETECTED";
case 0x02: return"SCSI PARITY ERROR DETECTED DURING ST DATA PHASE";
case 0x03: return"INFORMATION UNIT iuCRC ERROR DETECTED";
case 0x04: return"ASYNCHRONOUS INFORMATION PROTECTION ERROR DETECTED";
case 0x05: return"PROTOCOL SERVICE CRC ERROR";
case 0x06: return"PHY TEST FUNCTION IN PROGRESS";
case 0x7F: return"SOME COMMANDS CLEARED BY iSCSI PROTOCOL EVENT";
}
2017-12-19 20:33:03 +00:00
break;
case 0x48:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INITIATOR DETECTED ERROR MESSAGE RECEIVED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x49:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INVALID MESSAGE ERROR";
}
2017-12-19 20:33:03 +00:00
break;
case 0x4A:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"COMMAND PHASE ERROR";
}
2017-12-19 20:33:03 +00:00
break;
case 0x4B:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"DATA PHASE ERROR";
case 0x01: return"INVALID TARGET PORT TRANSFER TAG RECEIVED";
case 0x02: return"TOO MUCH WRITE DATA";
case 0x03: return"ACK/NAK TIMEOUT";
case 0x04: return"NAK RECEIVED";
case 0x05: return"DATA OFFSET ERROR";
case 0x06: return"INITIATOR RESPONSE TIMEOUT";
case 0x07: return"CONNECTION LOST";
case 0x08: return"DATA-IN BUFFER OVERFLOW - DATA BUFFER SIZE";
case 0x09: return"DATA-IN BUFFER OVERFLOW - DATA BUFFER DESCRIPTOR AREA";
case 0x0A: return"DATA-IN BUFFER ERROR";
case 0x0B: return"DATA-OUT BUFFER OVERFLOW - DATA BUFFER SIZE";
case 0x0C: return"DATA-OUT BUFFER OVERFLOW - DATA BUFFER DESCRIPTOR AREA";
case 0x0D: return"DATA-OUT BUFFER ERROR";
case 0x0E: return"PCIe FABRIC ERROR";
case 0x0F: return"PCIe COMPLETION TIMEOUT";
case 0x10: return"PCIe COMPLETION ABORT";
case 0x11: return"PCIe POISONED TLP RECEIVED";
case 0x12: return"PCIe ECRC CHECK FAILED";
case 0x13: return"PCIe UNSUPPORTED REQUEST";
case 0x14: return"PCIe ACS VIOLATION";
case 0x15: return"PCIe TLP PREFIX BLOCKED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x4C:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LOGICAL UNIT FAILED SELF-CONFIGURATION";
}
2017-12-19 20:33:03 +00:00
break;
2019-11-25 00:54:38 +00:00
case 0x4E: return$"OVERLAPPED COMMANDS ATTEMPTED FOR TASK TAG {ASCQ:X2}h";
case 0x50:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"WRITE APPEND ERROR";
case 0x01: return"WRITE APPEND POSITION ERROR";
case 0x02: return"POSITION ERROR RELATED TO TIMING";
}
2017-12-19 20:33:03 +00:00
break;
case 0x51:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ERASE FAILURE";
case 0x01: return"ERASE FAILURE - INCOMPLETE ERASE OPERATION DETECTED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x52:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"CARTRIDGE FAULT";
}
2017-12-19 20:33:03 +00:00
break;
case 0x53:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"MEDIA LOAD OR EJECT FAILED";
case 0x01: return"UNLOAD TAPE FAILURE";
case 0x02: return"MEDIUM REMOVAL PREVENTED";
case 0x03: return"MEDIUM REMOVAL PREVENTED BY DATA TRANSFER ELEMENT";
case 0x04: return"MEDIUM THREAD OR UNTHREAD FAILURE";
case 0x05: return"VOLUME IDENTIFIER INVALID";
case 0x06: return"VOLUME IDENTIFIED MISSING";
case 0x07: return"DUPLICATE VOLUME IDENTIFIER";
case 0x08: return"ELEMENT STATUS UNKNOWN";
case 0x09: return"DATA TRANSFER DEVICE ERROR - LOAD FAILED";
case 0x0A: return"DATA TRANSFER DEVICE ERROR - UNLOAD FAILED";
case 0x0B: return"DATA TRANSFER DEVICE ERROR - UNLOAD MISSING";
case 0x0C: return"DATA TRANSFER DEVICE ERROR - EJECT FAILED";
case 0x0D: return"DATA TRANSFER DEVICE ERROR - LIBRARY COMMUNICATION FAILED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x54:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"SCSI TO HOST SYSTEM INTERFACE FAILURE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x55:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"SYSTEM RESOURCE FAILURE";
case 0x01: return"SYSTEM BUFFER FULL";
case 0x02: return"INSUFFICIENT RESERVATION RESOURCES";
case 0x03: return"INSUFFICIENT RESOURCES";
case 0x04: return"INSUFFICIENT REGISTRATION RESOURCES";
case 0x05: return"INSUFFICIENT ACCESS CONTROL RESOURCES";
case 0x06: return"AUXILIARY MEMORY OUT OF SPACE";
case 0x07: return"QUOTA ERROR";
case 0x08: return"MAXIMUM NUMBER OF SUPPLEMENTAL DECRYPTION KEYS EXCEEDED";
case 0x09: return"MEDIUM AUXILIARY MEMORY NOT ACCESSIBLE";
case 0x0A: return"DATA CURRENTLY UNAVAILABLE";
case 0x0B: return"INSUFFICIENT POWER FOR OPERATION";
case 0x0C: return"INSUFFICIENT RESOURCES TO CREATE ROD";
case 0x0D: return"INSUFFICIENT RESOURCES TO CREATE ROD TOKEN";
case 0x0E: return"INSUFFICIENT ZONE RESOURCES";
case 0x0F: return"INSUFFICIENT ZONE RESOURCES TO COMPLETE WRITE";
case 0x10: return"MAXIMUM NUMBER OF STREAMS OPEN";
}
2017-12-19 20:33:03 +00:00
break;
case 0x57:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"UNABLE TO RECOVER TABLE-OF-CONTENTS";
}
2017-12-19 20:33:03 +00:00
break;
case 0x58:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"GENERATION DOES NOT EXIST";
}
2017-12-19 20:33:03 +00:00
break;
case 0x59:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"UPDATED BLOCK READ";
}
2017-12-19 20:33:03 +00:00
break;
case 0x5A:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"OPERATOR REQUEST OR STATE CHANGE INPUT";
case 0x01: return"OPERATOR MEDIUM REMOVAL REQUEST";
case 0x02: return"OPERATOR SELECTED WRITE PROTECT";
case 0x03: return"OPERATOR SELECTED WRITE PERMIT";
}
2017-12-19 20:33:03 +00:00
break;
case 0x5B:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LOG EXCEPTION";
case 0x01: return"THRESHOLD CONDITION MET";
case 0x02: return"LOG COUNTER AT MAXIMUM";
case 0x03: return"LOG LIST CODES EXHAUSTED";
}
2017-12-19 20:33:03 +00:00
break;
case 0x5C:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"RPL STATUS CHANGE";
case 0x01: return"SPINDLES SYNCHRONIZED";
case 0x02: return"SPINDLES NOT SYNCHRONIZED";
case 0x03: return"SPARE AREA EXHAUSTION PREDICTION THRESHOLD EXCEEDED";
case 0x10: return"HARDWARE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE";
case 0x11: return"HARDWARE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH";
case 0x12: return"HARDWARE IMPENDING FAILURE DATA ERROR RATE TOO HIGH";
case 0x13: return"HARDWARE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH";
case 0x14: return"HARDWARE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS";
case 0x15: return"HARDWARE IMPENDING FAILURE ACCESS TIME TOO HIGH";
case 0x16: return"HARDWARE IMPENDING FAILURE START UNIT TIMES TOO HIGH";
case 0x17: return"HARDWARE IMPENDING FAILURE CHANNEL PARAMETRICS";
case 0x18: return"HARDWARE IMPENDING FAILURE CONTROLLER DETECTED";
case 0x19: return"HARDWARE IMPENDING FAILURE THROUGHPUT PERFORMANCE";
case 0x1A: return"HARDWARE IMPENDING FAILURE SEEK TIME PERFORMANCE";
case 0x1B: return"HARDWARE IMPENDING FAILURE SPIN-UP RETRY COUNT";
case 0x1C: return"HARDWARE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT";
case 0x20: return"CONTROLLER IMPENDING FAILURE GENERAL HARD DRIVE FAILURE";
case 0x21: return"CONTROLLER IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH";
case 0x22: return"CONTROLLER IMPENDING FAILURE DATA ERROR RATE TOO HIGH";
case 0x23: return"CONTROLLER IMPENDING FAILURE SEEK ERROR RATE TOO HIGH";
case 0x24: return"CONTROLLER IMPENDING FAILURE TOO MANY BLOCK REASSIGNS";
case 0x25: return"CONTROLLER IMPENDING FAILURE ACCESS TIME TOO HIGH";
case 0x26: return"CONTROLLER IMPENDING FAILURE START UNIT TIMES TOO HIGH";
case 0x27: return"CONTROLLER IMPENDING FAILURE CHANNEL PARAMETRICS";
case 0x28: return"CONTROLLER IMPENDING FAILURE CONTROLLER DETECTED";
case 0x29: return"CONTROLLER IMPENDING FAILURE THROUGHPUT PERFORMANCE";
case 0x2A: return"CONTROLLER IMPENDING FAILURE SEEK TIME PERFORMANCE";
case 0x2B: return"CONTROLLER IMPENDING FAILURE SPIN-UP RETRY COUNT";
case 0x2C: return"CONTROLLER IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT";
case 0x30: return"DATA CHANNEL IMPENDING FAILURE GENERAL HARD DRIVE FAILURE";
case 0x31: return"DATA CHANNEL IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH";
case 0x32: return"DATA CHANNEL IMPENDING FAILURE DATA ERROR RATE TOO HIGH";
case 0x33: return"DATA CHANNEL IMPENDING FAILURE SEEK ERROR RATE TOO HIGH";
case 0x34: return"DATA CHANNEL IMPENDING FAILURE TOO MANY BLOCK REASSIGNS";
case 0x35: return"DATA CHANNEL IMPENDING FAILURE ACCESS TIME TOO HIGH";
case 0x36: return"DATA CHANNEL IMPENDING FAILURE START UNIT TIMES TOO HIGH";
case 0x37: return"DATA CHANNEL IMPENDING FAILURE CHANNEL PARAMETRICS";
case 0x38: return"DATA CHANNEL IMPENDING FAILURE DATA CHANNEL DETECTED";
case 0x39: return"DATA CHANNEL IMPENDING FAILURE THROUGHPUT PERFORMANCE";
case 0x3A: return"DATA CHANNEL IMPENDING FAILURE SEEK TIME PERFORMANCE";
case 0x3B: return"DATA CHANNEL IMPENDING FAILURE SPIN-UP RETRY COUNT";
case 0x3C: return"DATA CHANNEL IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT";
case 0x40: return"SERVO IMPENDING FAILURE GENERAL HARD DRIVE FAILURE";
case 0x41: return"SERVO IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH";
case 0x42: return"SERVO IMPENDING FAILURE DATA ERROR RATE TOO HIGH";
case 0x43: return"SERVO IMPENDING FAILURE SEEK ERROR RATE TOO HIGH";
case 0x44: return"SERVO IMPENDING FAILURE TOO MANY BLOCK REASSIGNS";
case 0x45: return"SERVO IMPENDING FAILURE ACCESS TIME TOO HIGH";
case 0x46: return"SERVO IMPENDING FAILURE START UNIT TIMES TOO HIGH";
case 0x47: return"SERVO IMPENDING FAILURE CHANNEL PARAMETRICS";
case 0x48: return"SERVO IMPENDING FAILURE SERVO DETECTED";
case 0x49: return"SERVO IMPENDING FAILURE THROUGHPUT PERFORMANCE";
case 0x4A: return"SERVO IMPENDING FAILURE SEEK TIME PERFORMANCE";
case 0x4B: return"SERVO IMPENDING FAILURE SPIN-UP RETRY COUNT";
case 0x4C: return"SERVO IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT";
case 0x50: return"SPINDLE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE";
case 0x51: return"SPINDLE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH";
case 0x52: return"SPINDLE IMPENDING FAILURE DATA ERROR RATE TOO HIGH";
case 0x53: return"SPINDLE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH";
case 0x54: return"SPINDLE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS";
case 0x55: return"SPINDLE IMPENDING FAILURE ACCESS TIME TOO HIGH";
case 0x56: return"SPINDLE IMPENDING FAILURE START UNIT TIMES TOO HIGH";
case 0x57: return"SPINDLE IMPENDING FAILURE CHANNEL PARAMETRICS";
case 0x58: return"SPINDLE IMPENDING FAILURE SPINDLE DETECTED";
case 0x59: return"SPINDLE IMPENDING FAILURE THROUGHPUT PERFORMANCE";
case 0x5A: return"SPINDLE IMPENDING FAILURE SEEK TIME PERFORMANCE";
case 0x5B: return"SPINDLE IMPENDING FAILURE SPIN-UP RETRY COUNT";
case 0x5C: return"SPINDLE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT";
case 0x60: return"FIRMWARE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE";
case 0x61: return"FIRMWARE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH";
case 0x62: return"FIRMWARE IMPENDING FAILURE DATA ERROR RATE TOO HIGH";
case 0x63: return"FIRMWARE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH";
case 0x64: return"FIRMWARE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS";
case 0x65: return"FIRMWARE IMPENDING FAILURE ACCESS TIME TOO HIGH";
case 0x66: return"FIRMWARE IMPENDING FAILURE START UNIT TIMES TOO HIGH";
case 0x67: return"FIRMWARE IMPENDING FAILURE CHANNEL PARAMETRICS";
case 0x68: return"FIRMWARE IMPENDING FAILURE FIRMWARE DETECTED";
case 0x69: return"FIRMWARE IMPENDING FAILURE THROUGHPUT PERFORMANCE";
case 0x6A: return"FIRMWARE IMPENDING FAILURE SEEK TIME PERFORMANCE";
case 0x6B: return"FIRMWARE IMPENDING FAILURE SPIN-UP RETRY COUNT";
case 0x6C: return"FIRMWARE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT";
case 0xFF: return"FAILURE PREDICTION THRESHOLD EXCEEDED (FALSE)";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x5E:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LOW POWER CONDITION ON";
case 0x01: return"IDLE CONDITION ACTIVATED BY TIMER";
case 0x02: return"STANDBY CONDITION ACTIVATED BY TIMER";
case 0x03: return"IDLE CONDITION ACTIVATED BY COMMAND";
case 0x04: return"STANDBY CONDITION ACTIVATED BY COMMAND";
case 0x05: return"IDLE_B CONDITION ACTIVATED BY TIMER";
case 0x06: return"IDLE_B CONDITION ACTIVATED BY COMMAND";
case 0x07: return"IDLE_C CONDITION ACTIVATED BY TIMER";
case 0x08: return"IDLE_C CONDITION ACTIVATED BY COMMAND";
case 0x09: return"STANDBY_Y CONDITION ACTIVATED BY TIMER";
case 0x0A: return"STANDBY_Y CONDITION ACTIVATED BY COMMAND";
case 0x41: return"POWER STATE CHANGED TO ACTIVE";
case 0x42: return"POWER STATE CHANGED TO IDLE";
case 0x43: return"POWER STATE CHANGED TO STANDBY";
case 0x45: return"POWER STATE CHANGED TO SLEEP";
case 0x47: return"POWER STATE CHANGED TO DEVICE CONTROL";
}
2017-12-19 20:33:03 +00:00
break;
case 0x60:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LAMP FAILURE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x61:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"VIDEO ACQUISTION ERROR";
case 0x01: return"UNABLE TO ACQUIRE VIDEO";
case 0x02: return"OUT OF FOCUS";
}
2017-12-19 20:33:03 +00:00
break;
case 0x62:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"SCAN HEAD POSITIONING ERROR";
}
2017-12-19 20:33:03 +00:00
break;
case 0x63:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"END OF USER AREA ENCOUNTERED ON THIS TRACK";
case 0x01: return"PACKET DOES NOT FIT IN AVAILABLE SPACE";
}
2017-12-19 20:33:03 +00:00
break;
case 0x64:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
{
2019-11-25 00:54:38 +00:00
case 0x00: return"ILLEGAL MODE FOR THIS TRACK";
case 0x01: return"INVALID PACKET SIZE";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x65:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"VOLTAGE FAULT";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x66:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"AUTOMATIC DOCUMENT FEEDER COVER UP";
case 0x01: return"AUTOMATIC DOCUMENT FEEDER LIFT UP";
case 0x02: return"DOCUMENT JAM IN AUTOMATIC DOCUMENT FEEDER";
case 0x03: return"DOCUMENT MISS FEED AUTOMATIC IN DOCUMENT FEEDER";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x67:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"CONFIGURATION FAILURE";
case 0x01: return"CONFIGURATION OF INCAPABLE LOGICAL UNITS FAILED";
case 0x02: return"ADD LOGICAL UNIT FAILED";
case 0x03: return"MODIFICATION OF LOGICAL UNIT FAILED";
case 0x04: return"EXCHANGE OF LOGICAL UNIT FAILED";
case 0x05: return"REMOVE OF LOGICAL UNIT FAILED";
case 0x06: return"ATTACHMENT OF LOGICAL UNIT FAILED";
case 0x07: return"CREATION OF LOGICAL UNIT FAILED";
case 0x08: return"ASSIGN FAILURE OCCURRED";
case 0x09: return"MULTIPLY ASSIGNED LOGICAL UNIT";
case 0x0A: return"SET TARGET PORT GROUPS COMMAND FAILED";
case 0x0B: return"ATA DEVICE FEATURE NOT ENABLED";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x68:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"LOGICAL UNIT NOT CONFIGURED";
case 0x01: return"SUBSIDIARY LOGICAL UNIT NOT CONFIGURED";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x69:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"DATA LOSS ON LOGICAL UNIT";
case 0x01: return"MULTIPLE LOGICAL UNIT FAILURES";
case 0x02: return"PARITY/DATA MISMATCH";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x6A:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"INFORMATIONAL, REFER TO LOG";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x6B:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"STATE CHANGE HAS OCCURRED";
case 0x01: return"REDUNDANCY LEVEL GOT BETTER";
case 0x02: return"REDUNDANCY LEVEL GOT WORSE";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x6C:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"REBUILD FAILURE OCCURRED";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x6D:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"RECALCULATE FAILURE OCCURRED";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x6E:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"COMMAND TO LOGICAL UNIT FAILED";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x6F:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"COPY PROTECTION KEY EXCHANGE FAILURE - AUTHENTICATION FAILURE";
case 0x01: return"COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT PRESENT";
case 0x02: return"COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT ESTABLISHED";
case 0x03: return"READ OF SCRAMBLED SECTOR WITHOUT AUTHENTICATION";
case 0x04: return"MEDIA REGION CODE IS MISMATCHED TO LOGICAL UNIT REGION";
case 0x05: return"DRIVE REGION MUST BE PERMANENT/REGION RESET COUNT ERROR";
case 0x06: return"INSUFFICIENT BLOCK COUNT FOR BINDING NONCE RECORDING";
case 0x07: return"CONFLICT IN BINDING NONCE RECORDING";
2017-12-19 20:33:03 +00:00
}
break;
2019-11-25 00:54:38 +00:00
case 0x70: return$"DECOMPRESSION EXCEPTION SHORT ALGORITHM ID OF {ASCQ:X2}h";
2015-11-23 04:08:09 +00:00
case 0x71:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"DECOMPRESSIONG EXCEPTION LONG ALGORITHM ID";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x72:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"SESSION FIXATION ERROR";
case 0x01: return"SESSION FIXATION ERROR WRITING LEAD-IN";
case 0x02: return"SESSION FIXATION ERROR WRITING LEAD-OUT";
case 0x03: return"SESSION FIXATION ERROR - INCOMPLETE TRACK IN SESSION";
case 0x04: return"EMPTY OR PARTIALLY WRITTEN RESERVED TRACK";
case 0x05: return"NO MORE TRACK RESERVATIONS ALLOWED";
case 0x06: return"RMZ EXTENSION IS NOT ALLOWED";
case 0x07: return"NO MORE TEST ZONE EXTENSIONS ARE ALLOWED";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x73:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"CD CONTROL ERROR";
case 0x01: return"POWER CALIBRATION AREA ALMOST FULL";
case 0x02: return"POWER CALIBRATION AREA IS FULL";
case 0x03: return"POWER CALIBRATION AREA ERROR";
case 0x04: return"PROGRAM MEMORY AREA UPDATE FAILURE";
case 0x05: return"PROGRAM MEMORY AREA IS FULL";
case 0x06: return"RMA/PMA IS ALMOST FULL";
case 0x10: return"CURRENT POWER CALIBRATION AREA ALMOST FULL";
case 0x11: return"CURRENT POWER CALIBRATION AREA IS FULL";
case 0x17: return"RDZ IS FULL";
2015-11-23 04:08:09 +00:00
}
2017-12-19 20:33:03 +00:00
2015-11-23 04:08:09 +00:00
break;
case 0x74:
2016-04-19 02:11:47 +01:00
switch(ASCQ)
2015-11-23 04:08:09 +00:00
{
2019-11-25 00:54:38 +00:00
case 0x00: return"SECURITY ERROR";
case 0x01: return"UNABLE TO DECRYPT DATA";
case 0x02: return"UNENCRYPTED DATA ENCOUNTERED WHILE DECRYPTING";
case 0x03: return"INCORRECT DATA ENCRYPTION KEY";
case 0x04: return"CRYPTOGRAPHIC INTEGRITY VALIDATION FAILED";
case 0x05: return"ERROR DECRYPTING DATA";
case 0x06: return"UNKNOWN SIGNATURE VERIFICATION KEY";
case 0x07: return"ENCRYPTION PARAMETERS NOT USEABLE";
case 0x08: return"DIGITAL SIGNATURE VALIDATION FAILURE";
case 0x09: return"ENCRYPTION MODE MISMATCH ON READ";
case 0x0A: return"ENCRYPTED BLOCK NOT RAW READ ENABLED";
case 0x0B: return"INCORRECT ENCRYPTION PARAMETERS";
case 0x0C: return"UNABLE TO DECRYPT PARAMETER LIST";
case 0x0D: return"ENCRYPTION ALGORITHM DISABLED";
case 0x10: return"SA CREATION PARAMETER VALUE INVALID";
case 0x11: return"SA CREATION PARAMETER VALUE REJECTED";
case 0x12: return"INVALID SA USAGE";
case 0x21: return"DATA ENCRYPTION CONFIGURATION PREVENTED";
case 0x30: return"SA CREATION PARAMETER NOT SUPPORTED";
case 0x40: return"AUTHENTICATION FAILED";
case 0x61: return"EXTERNAL DATA ENCRYPTION KEY MANAGER ACCESS ERROR";
case 0x62: return"EXTERNAL DATA ENCRYPTION KEY MANAGER ERROR";
case 0x63: return"EXTERNAL DATA ENCRYPTION KEY NOT FOUND";
case 0x64: return"EXTERNAL DATA ENCRYPTION REQUEST NOT AUTHORIZED";
case 0x6E: return"EXTERNAL DATA ENCRYPTION CONTROL TIMEOUT";
case 0x6F: return"EXTERNAL DATA ENCRYPTION CONTROL ERROR";
case 0x71: return"LOGICAL UNIT ACCESS NOT AUTHORIZED";
case 0x79: return"SECURITY CONFLICT IN TRANSLATED DEVICE";
}
2017-12-19 20:33:03 +00:00
break;
}
2017-12-19 20:33:03 +00:00
return ASC >= 0x80
? ASCQ >= 0x80
? $"VENDOR-SPECIFIC ASC {ASC:X2}h WITH VENDOR-SPECIFIC ASCQ {ASCQ:X2}h"
: $"VENDOR-SPECIFIC ASC {ASC:X2}h WITH ASCQ {ASCQ:X2}h"
2017-12-19 20:33:03 +00:00
: ASCQ >= 0x80
? $"ASC {ASC:X2}h WITH VENDOR-SPECIFIC ASCQ {ASCQ:X2}h"
: $"ASC {ASC:X2}h WITH ASCQ {ASCQ:X2}h";
}
}
2017-12-19 20:33:03 +00:00
}