Files
Aaru/SCSI/Sense.cs

1958 lines
94 KiB
C#
Raw Normal View History

2017-05-19 20:28:49 +01:00
// /***************************************************************************
2020-02-27 12:31:23 +00:00
// Aaru Data Preservation Suite
// ----------------------------------------------------------------------------
//
// 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-12-31 23:08:22 +00:00
// Copyright © 2011-2021 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;
2020-02-27 00:33:24 +00:00
using Aaru.Decoders.ATA;
2020-02-27 00:33:24 +00:00
namespace Aaru.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>
2020-02-29 18:03:33 +00:00
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;
if(sense is null ||
sense.Length == 0)
return 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
{
2020-07-20 04:34:15 +01:00
InformationValid = (sense[0] & 0x80) == 0x80,
SegmentNumber = sense[1],
Filemark = (sense[2] & 0x80) == 0x80,
EOM = (sense[2] & 0x40) == 0x40,
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
// Fixed sense
if((sense[0] & 0x7F) == 0x70 ||
(sense[0] & 0x7F) == 0x71)
return null;
2019-11-25 00:54:38 +00:00
var decoded = new DescriptorSense
{
2020-07-20 04:34:15 +01: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
{
2020-07-20 04:34:15 +01: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
{
2020-07-20 04:34:15 +01: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]
2019-11-25 00:54:38 +00:00
};
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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +00:00
case 0x00: return "LOGICAL UNIT FAILED SELF-CONFIGURATION";
}
2017-12-19 20:33:03 +00:00
break;
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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)
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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;
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
{
2020-02-29 18:03:33 +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
}