[Aaru.CommonTypes] Reformat and cleanup.

This commit is contained in:
2023-10-03 22:48:28 +01:00
parent 68d85349b1
commit 47294b2f62
81 changed files with 4583 additions and 2851 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -45,7 +45,7 @@
<PackageReference Include="Macross.Json.Extensions" Version="3.0.0"/>
<PackageReference Include="System.ComponentModel.Annotations" Version="6.0.0-preview.4.21253.7"/>
<PackageReference Include="System.Security.Principal.Windows" Version="6.0.0-preview.5.21301.5"/>
<PackageReference Include="System.Text.Json" Version="8.0.0-rc.1.23419.4" />
<PackageReference Include="System.Text.Json" Version="8.0.0-rc.1.23419.4"/>
<PackageReference Include="System.ValueTuple" Version="4.5.0"/>
<PackageReference Include="Unclassified.NetRevisionTask" Version="0.4.3" PrivateAssets="all"/>
</ItemGroup>

View File

@@ -2,6 +2,6 @@
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xml:space="preserve">
<s:Boolean
x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=localization/@EntryIndexedValue">True</s:Boolean>
<s:Boolean
x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=mediatypefromdevice/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=localization/@EntryIndexedValue">True</s:Boolean>
<s:Boolean
x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=mediatypefromdevice/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@@ -49,8 +49,10 @@ public class ATA
public Dump Identify { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator ATA(ATAType cicm) => cicm is null ? null : new ATA
{
Identify = cicm.Identify
};
}
public static implicit operator ATA(ATAType cicm) => cicm is null
? null
: new ATA
{
Identify = cicm.Identify
};
}

View File

@@ -114,4 +114,4 @@ public class Advertisement
return adv;
}
}
}

View File

@@ -47,33 +47,83 @@ namespace Aaru.CommonTypes.AaruMetadata;
public enum Architecture
{
[JsonPropertyName("4004")]
_4004, [JsonPropertyName("4040")]
_4040, [JsonPropertyName("6502")]
_6502, [JsonPropertyName("65816")]
_65816, [JsonPropertyName("8008")]
_8008, [JsonPropertyName("8051")]
_8051, [JsonPropertyName("8080")]
_8080, [JsonPropertyName("8085")]
_8085, Aarch64, Am29000, Amd64,
Apx432, Arm, Avr,
Avr32, Axp, Clipper,
Cray, Esa390, Hobbit,
I86, I860, I960,
Ia32, Ia64, M56K,
M6800, M6801, M6805,
M6809, M68K, M88K,
Mcs41, Mcs48, Mips32,
Mips64, Msp430, Nios2,
Openrisc, Parisc, PDP1,
PDP10, PDP11, PDP7,
PDP8, Pic, Power,
Ppc, Ppc64, Prism,
Renesasrx, Riscv, S360,
S370, Sh, Sh1,
Sh2, Sh3, Sh4,
Sh5, Sh64, Sparc,
Sparc64, Transputer, Vax,
We32000, X32, Z80,
Z800, Z8000, Z80000,
_4004,
[JsonPropertyName("4040")]
_4040,
[JsonPropertyName("6502")]
_6502,
[JsonPropertyName("65816")]
_65816,
[JsonPropertyName("8008")]
_8008,
[JsonPropertyName("8051")]
_8051,
[JsonPropertyName("8080")]
_8080,
[JsonPropertyName("8085")]
_8085,
Aarch64,
Am29000,
Amd64,
Apx432,
Arm,
Avr,
Avr32,
Axp,
Clipper,
Cray,
Esa390,
Hobbit,
I86,
I860,
I960,
Ia32,
Ia64,
M56K,
M6800,
M6801,
M6805,
M6809,
M68K,
M88K,
Mcs41,
Mcs48,
Mips32,
Mips64,
Msp430,
Nios2,
Openrisc,
Parisc,
PDP1,
PDP10,
PDP11,
PDP7,
PDP8,
Pic,
Power,
Ppc,
Ppc64,
Prism,
Renesasrx,
Riscv,
S360,
S370,
Sh,
Sh1,
Sh2,
Sh3,
Sh4,
Sh5,
Sh64,
Sparc,
Sparc64,
Transputer,
Vax,
We32000,
X32,
Z80,
Z800,
Z8000,
Z80000,
Zarch
}
}

View File

@@ -143,4 +143,4 @@ public class AudioBlock
return blk;
}
}
}

View File

@@ -93,6 +93,7 @@ public class VideoTrack
public uint Horizontal { get; set; }
public uint Vertical { get; set; }
public long MeanBitrate { get; set; }
[JsonPropertyName("3D")]
public bool ThreeD { get; set; }
@@ -196,69 +197,137 @@ public class Coordinates
public double Longitude { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Coordinates(CoordinatesType cicm) => cicm is null ? null : new Coordinates
{
Latitude = cicm.Latitude,
Longitude = cicm.Longitude
};
public static implicit operator Coordinates(CoordinatesType cicm) => cicm is null
? null
: new Coordinates
{
Latitude = cicm.Latitude,
Longitude = cicm.Longitude
};
}
[JsonConverter(typeof(JsonStringEnumMemberConverter)), SuppressMessage("ReSharper", "InconsistentNaming")]
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
[SuppressMessage("ReSharper", "InconsistentNaming")]
public enum SourceFormat
{
[JsonPropertyName("ITU-A")]
ITUA, [JsonPropertyName("ITU-B")]
ITUB, [JsonPropertyName("ITU-C")]
ITUC, [JsonPropertyName("ITU-D")]
ITUD, [JsonPropertyName("ITU-E")]
ITUE, [JsonPropertyName("ITU-F")]
ITUF, [JsonPropertyName("ITU-G")]
ITUG, [JsonPropertyName("ITU-H")]
ITUH, [JsonPropertyName("ITU-I")]
ITUI, [JsonPropertyName("ITU-J")]
ITUJ, [JsonPropertyName("ITU-K")]
ITUK, [JsonPropertyName("ITU-L")]
ITUL, [JsonPropertyName("ITU-M")]
ITUM, [JsonPropertyName("ITU-N")]
ITUN, [JsonPropertyName("PAL-B")]
PALB, [JsonPropertyName("SECAM-B")]
SECAMB, [JsonPropertyName("PAL-D")]
PALD, [JsonPropertyName("SECAM-D")]
SECAMD, [JsonPropertyName("PAL-G")]
PALG, [JsonPropertyName("SECAM-G")]
SECAMG, [JsonPropertyName("PAL-H")]
PALH, [JsonPropertyName("PAL-I")]
PALI, [JsonPropertyName("PAL-K")]
PALK, [JsonPropertyName("SECAM-K")]
SECAMK, [JsonPropertyName("NTSC-M")]
NTSCM, [JsonPropertyName("PAL-N")]
PALN, [JsonPropertyName("PAL-M")]
PALM, [JsonPropertyName("SECAM-M")]
SECAMM, MUSE, PALplus, FM,
AM, COFDM, [JsonPropertyName("CAM-D")]
CAMD, DAB, [JsonPropertyName("DAB+")]
DAB1, DRM, [JsonPropertyName("DRM+")]
DRM1, FMeXtra, ATSC, ATSC2,
ATSC3, [JsonPropertyName("ATSC-M/H")]
ATSCMH, [JsonPropertyName("DVB-T")]
DVBT, [JsonPropertyName("DVB-T2")]
DVBT2, [JsonPropertyName("DVB-S")]
DVBS, [JsonPropertyName("DVB-S2")]
DVBS2, [JsonPropertyName("DVB-S2X")]
DVBS2X, [JsonPropertyName("DVB-C")]
DVBC, [JsonPropertyName("DVB-C2")]
DVBC2, [JsonPropertyName("DVB-H")]
DVBH, [JsonPropertyName("DVB-NGH")]
DVBNGH, [JsonPropertyName("DVB-SH")]
DVBSH, [JsonPropertyName("ISDB-T")]
ISDBT, [JsonPropertyName("ISDB-Tb")]
ISDBTb, [JsonPropertyName("ISDB-S")]
ISDBS, [JsonPropertyName("ISDB-C")]
ISDBC, [JsonPropertyName("1seg")]
Item1seg, DTMB, CCMB, [JsonPropertyName("T-DMB")]
TDMB, [JsonPropertyName("S-DMB")]
SDMB, IPTV, [JsonPropertyName("DVB-MT")]
DVBMT, [JsonPropertyName("DVB-MC")]
DVBMC, [JsonPropertyName("DVB-MS")]
DVBMS, ADR, SDR
}
ITUA,
[JsonPropertyName("ITU-B")]
ITUB,
[JsonPropertyName("ITU-C")]
ITUC,
[JsonPropertyName("ITU-D")]
ITUD,
[JsonPropertyName("ITU-E")]
ITUE,
[JsonPropertyName("ITU-F")]
ITUF,
[JsonPropertyName("ITU-G")]
ITUG,
[JsonPropertyName("ITU-H")]
ITUH,
[JsonPropertyName("ITU-I")]
ITUI,
[JsonPropertyName("ITU-J")]
ITUJ,
[JsonPropertyName("ITU-K")]
ITUK,
[JsonPropertyName("ITU-L")]
ITUL,
[JsonPropertyName("ITU-M")]
ITUM,
[JsonPropertyName("ITU-N")]
ITUN,
[JsonPropertyName("PAL-B")]
PALB,
[JsonPropertyName("SECAM-B")]
SECAMB,
[JsonPropertyName("PAL-D")]
PALD,
[JsonPropertyName("SECAM-D")]
SECAMD,
[JsonPropertyName("PAL-G")]
PALG,
[JsonPropertyName("SECAM-G")]
SECAMG,
[JsonPropertyName("PAL-H")]
PALH,
[JsonPropertyName("PAL-I")]
PALI,
[JsonPropertyName("PAL-K")]
PALK,
[JsonPropertyName("SECAM-K")]
SECAMK,
[JsonPropertyName("NTSC-M")]
NTSCM,
[JsonPropertyName("PAL-N")]
PALN,
[JsonPropertyName("PAL-M")]
PALM,
[JsonPropertyName("SECAM-M")]
SECAMM,
MUSE,
PALplus,
FM,
AM,
COFDM,
[JsonPropertyName("CAM-D")]
CAMD,
DAB,
[JsonPropertyName("DAB+")]
DAB1,
DRM,
[JsonPropertyName("DRM+")]
DRM1,
FMeXtra,
ATSC,
ATSC2,
ATSC3,
[JsonPropertyName("ATSC-M/H")]
ATSCMH,
[JsonPropertyName("DVB-T")]
DVBT,
[JsonPropertyName("DVB-T2")]
DVBT2,
[JsonPropertyName("DVB-S")]
DVBS,
[JsonPropertyName("DVB-S2")]
DVBS2,
[JsonPropertyName("DVB-S2X")]
DVBS2X,
[JsonPropertyName("DVB-C")]
DVBC,
[JsonPropertyName("DVB-C2")]
DVBC2,
[JsonPropertyName("DVB-H")]
DVBH,
[JsonPropertyName("DVB-NGH")]
DVBNGH,
[JsonPropertyName("DVB-SH")]
DVBSH,
[JsonPropertyName("ISDB-T")]
ISDBT,
[JsonPropertyName("ISDB-Tb")]
ISDBTb,
[JsonPropertyName("ISDB-S")]
ISDBS,
[JsonPropertyName("ISDB-C")]
ISDBC,
[JsonPropertyName("1seg")]
Item1seg,
DTMB,
CCMB,
[JsonPropertyName("T-DMB")]
TDMB,
[JsonPropertyName("S-DMB")]
SDMB,
IPTV,
[JsonPropertyName("DVB-MT")]
DVBMT,
[JsonPropertyName("DVB-MC")]
DVBMC,
[JsonPropertyName("DVB-MS")]
DVBMS,
ADR,
SDR
}

View File

@@ -47,15 +47,33 @@ namespace Aaru.CommonTypes.AaruMetadata;
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
public enum BarcodeType
{
Aztec, Codabar, Code11,
Code128, Code39, Code93,
CPC_Binary, EZcode, FIM,
ITF, ITF14, EAN13,
EAN8, MaxiCode, ISBN,
ISRC, MSI, ShotCode,
RM4SCC, QR, EAN5,
EAN2, POSTNET, PostBar,
Plessey, Pharmacode, PDF417,
Aztec,
Codabar,
Code11,
Code128,
Code39,
Code93,
CPC_Binary,
EZcode,
FIM,
ITF,
ITF14,
EAN13,
EAN8,
MaxiCode,
ISBN,
ISRC,
MSI,
ShotCode,
RM4SCC,
QR,
EAN5,
EAN2,
POSTNET,
PostBar,
Plessey,
Pharmacode,
PDF417,
PatchCode
}
@@ -65,9 +83,11 @@ public class Barcode
public string Value { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Barcode(Schemas.BarcodeType cicm) => cicm is null ? null : new Barcode
{
Type = (BarcodeType)cicm.type,
Value = cicm.Value
};
}
public static implicit operator Barcode(Schemas.BarcodeType cicm) => cicm is null
? null
: new Barcode
{
Type = (BarcodeType)cicm.type,
Value = cicm.Value
};
}

View File

@@ -217,4 +217,4 @@ public class BlockTrack
return trk;
}
}
}

View File

@@ -94,4 +94,4 @@ public class Book
return book;
}
}
}

View File

@@ -50,23 +50,42 @@ public class Checksum
public string Value { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Checksum(Schemas.ChecksumType cicm) => cicm is null ? null : new Checksum
{
Value = cicm.Value,
Type = (ChecksumType)cicm.type
};
public static implicit operator Checksum(Schemas.ChecksumType cicm) => cicm is null
? null
: new Checksum
{
Value = cicm.Value,
Type = (ChecksumType)cicm.type
};
}
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
public enum ChecksumType
{
Fletcher16, Fletcher32, Adler32,
CRC16, CRC16Ccitt, CRC32,
CRC64, Md4, Md5,
Dm6, Ripemd128, Ripemd160,
Ripemed320, Sha1, Sha224,
Sha256, Sha384, Sha512,
Sha3, Skein, Snefru,
Blake256, Blake512, Tiger,
Whirlpool, SpamSum
}
Fletcher16,
Fletcher32,
Adler32,
CRC16,
CRC16Ccitt,
CRC32,
CRC64,
Md4,
Md5,
Dm6,
Ripemd128,
Ripemd160,
Ripemed320,
Sha1,
Sha224,
Sha256,
Sha384,
Sha512,
Sha3,
Skein,
Snefru,
Blake256,
Blake512,
Tiger,
Whirlpool,
SpamSum
}

View File

@@ -234,4 +234,4 @@ public class Directory
return dir;
}
}
}

View File

@@ -52,13 +52,22 @@ public class Dimensions
public double Thickness { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Dimensions(DimensionsType cicm) => cicm is null ? null : new Dimensions
{
Diameter = cicm.DiameterSpecified ? cicm.Diameter : null,
Height = cicm.HeightSpecified ? cicm.Height : null,
Width = cicm.WidthSpecified ? cicm.Width : null,
Thickness = cicm.Thickness
};
public static implicit operator Dimensions(DimensionsType cicm) => cicm is null
? null
: new Dimensions
{
Diameter =
cicm.DiameterSpecified
? cicm.Diameter
: null,
Height = cicm.HeightSpecified
? cicm.Height
: null,
Width = cicm.WidthSpecified
? cicm.Width
: null,
Thickness = cicm.Thickness
};
/// <summary>Gets the physical dimensions, in metadata expected format, for a given media type</summary>
/// <param name="mediaType">Media type</param>
@@ -69,7 +78,8 @@ public class Dimensions
switch(mediaType)
{
#region 5.25" floppy disk
#region 5.25" floppy disk
case MediaType.Apple32SS:
case MediaType.Apple32DS:
case MediaType.Apple33SS:
@@ -112,9 +122,11 @@ public class Dimensions
dmns.Thickness = 1.65;
return dmns;
#endregion 5.25" floppy disk
#region 3.5" floppy disk
#endregion 5.25" floppy disk
#region 3.5" floppy disk
case MediaType.AppleSonySS:
case MediaType.AppleSonyDS:
case MediaType.DOS_35_SS_DD_8:
@@ -147,9 +159,11 @@ public class Dimensions
dmns.Thickness = 3.3;
return dmns;
#endregion 3.5" floppy disk
#region 8" floppy disk
#endregion 3.5" floppy disk
#region 8" floppy disk
case MediaType.IBM23FD:
case MediaType.IBM33FD_128:
case MediaType.IBM33FD_256:
@@ -176,9 +190,11 @@ public class Dimensions
dmns.Thickness = 1.65;
return dmns;
#endregion 8" floppy disk
#region 356mm magneto optical
#endregion 8" floppy disk
#region 356mm magneto optical
case MediaType.ECMA_260:
case MediaType.ECMA_260_Double:
// According to ECMA-260 et al
@@ -189,9 +205,11 @@ public class Dimensions
dmns.Thickness = 25.4;
return dmns;
#endregion 356mm magneto optical
#region 300mm magneto optical
#endregion 356mm magneto optical
#region 300mm magneto optical
case MediaType.ECMA_189:
case MediaType.ECMA_190:
case MediaType.ECMA_317:
@@ -203,9 +221,11 @@ public class Dimensions
dmns.Thickness = 17;
return dmns;
#endregion 300mm magneto optical
#region 5.25" magneto optical
#endregion 300mm magneto optical
#region 5.25" magneto optical
case MediaType.ECMA_153:
case MediaType.ECMA_153_512:
case MediaType.ECMA_183_512:
@@ -238,9 +258,11 @@ public class Dimensions
dmns.Thickness = 11;
return dmns;
#endregion 5.25" magneto optical
#region 3.5" magneto optical
#endregion 5.25" magneto optical
#region 3.5" magneto optical
case MediaType.ECMA_154:
case MediaType.ECMA_201:
case MediaType.ECMA_201_ROM:
@@ -257,7 +279,8 @@ public class Dimensions
dmns.Thickness = 6;
return dmns;
#endregion 3.5" magneto optical
#endregion 3.5" magneto optical
case MediaType.PD650:
case MediaType.PD650_WORM:
@@ -983,7 +1006,8 @@ public class Dimensions
return dmns;
#region CD/DVD/BD
#region CD/DVD/BD
case MediaType.CDDA:
case MediaType.CDG:
case MediaType.CDEG:
@@ -1083,9 +1107,11 @@ public class Dimensions
dmns.Thickness = 1.2;
return dmns;
#endregion CD/DVD/BD
#region Apple Hard Disks
#endregion CD/DVD/BD
#region Apple Hard Disks
// TODO: Find Apple Widget size
case MediaType.AppleProfile:
dmns.Height = 223.8;
@@ -1103,7 +1129,8 @@ public class Dimensions
dmns.Thickness = 78.7;
return dmns;
#endregion Apple Hard Disks
#endregion Apple Hard Disks
case MediaType.UMD:
dmns.Height = 64;
@@ -1122,7 +1149,8 @@ public class Dimensions
dmns.Thickness = 5.64;
return dmns;
default: return null;
default:
return null;
}
}
}
}

View File

@@ -52,12 +52,14 @@ public class Image
public string Value { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Image(ImageType cicm) => cicm is null ? null : new Image
{
Format = cicm.format,
Offset = cicm.offsetSpecified ? cicm.offset : null,
Value = cicm.Value
};
public static implicit operator Image(ImageType cicm) => cicm is null
? null
: new Image
{
Format = cicm.format,
Offset = cicm.offsetSpecified ? cicm.offset : null,
Value = cicm.Value
};
}
public class Dump
@@ -128,11 +130,13 @@ public class File
public string Value { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator File(FileType cicm) => cicm is null ? null : new File
{
Format = cicm.format,
Value = cicm.Value
};
public static implicit operator File(FileType cicm) => cicm is null
? null
: new File
{
Format = cicm.format,
Value = cicm.Value
};
}
public class BlockSize
@@ -141,9 +145,11 @@ public class BlockSize
public uint Value { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator BlockSize(BlockSizeType cicm) => cicm is null ? null : new BlockSize
{
StartingBlock = cicm.startingBlock,
Value = cicm.Value
};
public static implicit operator BlockSize(BlockSizeType cicm) => cicm is null
? null
: new BlockSize
{
StartingBlock = cicm.startingBlock,
Value = cicm.Value
};
}

View File

@@ -89,11 +89,13 @@ public class Extent
public ulong End { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Extent(ExtentType cicm) => cicm is null ? null : new Extent
{
Start = cicm.Start,
End = cicm.End
};
public static implicit operator Extent(ExtentType cicm) => cicm is null
? null
: new Extent
{
Start = cicm.Start,
End = cicm.End
};
}
public class Software
@@ -103,10 +105,12 @@ public class Software
public string OperatingSystem { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Software(SoftwareType cicm) => cicm is null ? null : new Software
{
Name = cicm.Name,
Version = cicm.Version,
OperatingSystem = cicm.OperatingSystem
};
}
public static implicit operator Software(SoftwareType cicm) => cicm is null
? null
: new Software
{
Name = cicm.Name,
Version = cicm.Version,
OperatingSystem = cicm.OperatingSystem
};
}

View File

@@ -68,27 +68,53 @@ public class FileSystem
public FilesystemContents Contents { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator FileSystem(FileSystemType cicm) => cicm is null ? null : new FileSystem
{
Type = cicm.Type,
CreationDate = cicm.CreationDateSpecified ? cicm.CreationDate : null,
ModificationDate = cicm.ModificationDateSpecified ? cicm.ModificationDate : null,
BackupDate = cicm.BackupDateSpecified ? cicm.BackupDate : null,
ClusterSize = cicm.ClusterSize,
Clusters = cicm.Clusters,
Files = cicm.FilesSpecified ? cicm.Files : null,
Bootable = cicm.Bootable,
VolumeSerial = cicm.VolumeSerial,
VolumeName = cicm.VolumeName,
FreeClusters = cicm.FreeClustersSpecified ? cicm.FreeClusters : null,
Dirty = cicm.Dirty,
ExpirationDate = cicm.ExpirationDateSpecified ? cicm.ExpirationDate : null,
EffectiveDate = cicm.EffectiveDateSpecified ? cicm.EffectiveDate : null,
SystemIdentifier = cicm.SystemIdentifier,
VolumeSetIdentifier = cicm.VolumeSetIdentifier,
PublisherIdentifier = cicm.PublisherIdentifier,
DataPreparerIdentifier = cicm.DataPreparerIdentifier,
ApplicationIdentifier = cicm.ApplicationIdentifier,
Contents = cicm.Contents
};
}
public static implicit operator FileSystem(FileSystemType cicm) => cicm is null
? null
: new FileSystem
{
Type = cicm.Type,
CreationDate =
cicm.CreationDateSpecified
? cicm.CreationDate
: null,
ModificationDate =
cicm.ModificationDateSpecified
? cicm.ModificationDate
: null,
BackupDate =
cicm.BackupDateSpecified
? cicm.BackupDate
: null,
ClusterSize = cicm.ClusterSize,
Clusters = cicm.Clusters,
Files = cicm.FilesSpecified
? cicm.Files
: null,
Bootable = cicm.Bootable,
VolumeSerial = cicm.VolumeSerial,
VolumeName = cicm.VolumeName,
FreeClusters =
cicm.FreeClustersSpecified
? cicm.FreeClusters
: null,
Dirty = cicm.Dirty,
ExpirationDate =
cicm.ExpirationDateSpecified
? cicm.ExpirationDate
: null,
EffectiveDate =
cicm.EffectiveDateSpecified
? cicm.EffectiveDate
: null,
SystemIdentifier = cicm.SystemIdentifier,
VolumeSetIdentifier =
cicm.VolumeSetIdentifier,
PublisherIdentifier =
cicm.PublisherIdentifier,
DataPreparerIdentifier =
cicm.DataPreparerIdentifier,
ApplicationIdentifier =
cicm.ApplicationIdentifier,
Contents = cicm.Contents
};
}

View File

@@ -44,170 +44,495 @@ using System.Text.Json.Serialization;
namespace Aaru.CommonTypes.AaruMetadata;
[JsonConverter(typeof(JsonStringEnumMemberConverter)), SuppressMessage("ReSharper", "InconsistentNaming")]
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
[SuppressMessage("ReSharper", "InconsistentNaming")]
public enum Language
{
aar, abk, ace,
ach, ada, ady,
afa, afh, afr,
ain, aka, akk,
alb, ale, alg,
alt, amh, ang,
anp, apa, ara,
arc, arg, arm,
arn, arp, art,
arw, asm, ast,
ath, aus, ava,
ave, awa, aym,
aze, bad, bai,
bak, bal, bam,
ban, baq, bas,
bat, bej, bel,
bem, ben, ber,
bho, bih, bik,
bin, bis, bla,
bnt, bos, bra,
bre, btk, bua,
bug, bul, bur,
byn, cad, cai,
car, cat, cau,
ceb, cel, cha,
chb, che, chg,
chi, chk, chm,
chn, cho, chp,
chr, chu, chv,
chy, cmc, cop,
cor, cos, cpe,
cpf, cpp, cre,
crh, crp, csb,
cus, cze, dak,
dan, dar, day,
del, den, dgr,
din, div, doi,
dra, dsb, dua,
dum, dut, dyu,
dzo, efi, egy,
eka, elx, eng,
enm, epo, est,
ewe, ewo, fan,
fao, fat, fij,
fil, fin, fiu,
fon, fre, frm,
fro, frr, frs,
fry, ful, fur,
gaa, gay, gba,
gem, geo, ger,
gez, gil, gla,
gle, glg, glv,
gmh, goh, gon,
gor, got, grb,
grc, gre, grn,
gsw, guj, gwi,
hai, hat, hau,
haw, heb, her,
hil, him, hin,
hit, hmn, hmo,
hrv, hsb, hun,
hup, iba, ibo,
ice, ido, iii,
ijo, iku, ile,
ilo, ina, inc,
ind, ine, inh,
ipk, ira, iro,
ita, jav, jbo,
jpn, jpr, jrb,
kaa, kab, kac,
kal, kam, kan,
kar, kas, kau,
kaw, kaz, kbd,
kha, khi, khm,
kho, kik, kin,
kir, kmb, kok,
kom, kon, kor,
kos, kpe, krc,
krl, kro, kru,
kua, kum, kur,
kut, lad, lah,
lam, lao, lat,
lav, lez, lim,
lin, lit, lol,
loz, ltz, lua,
lub, lug, lui,
lun, luo, lus,
mac, mad, mag,
mah, mai, mak,
mal, man, mao,
map, mar, mas,
may, mdf, mdr,
men, mga, mic,
min, mis, mkh,
mlg, mlt, mnc,
mni, mno, moh,
mon, mos, mul,
mun, mus, mwl,
mwr, myn, myv,
nah, nai, nap,
nau, nav, nbl,
nde, ndo, nds,
nep, @new, nia,
nic, niu, nno,
nob, nog, non,
nor, nqo, nso,
nub, nwc, nya,
nym, nyn, nyo,
nzi, oci, oji,
ori, orm, osa,
oss, ota, oto,
paa, pag, pal,
pam, pan, pap,
pau, peo, per,
phi, phn, pli,
pol, pon, por,
pra, pro, pus,
aar,
abk,
ace,
ach,
ada,
ady,
afa,
afh,
afr,
ain,
aka,
akk,
alb,
ale,
alg,
alt,
amh,
ang,
anp,
apa,
ara,
arc,
arg,
arm,
arn,
arp,
art,
arw,
asm,
ast,
ath,
aus,
ava,
ave,
awa,
aym,
aze,
bad,
bai,
bak,
bal,
bam,
ban,
baq,
bas,
bat,
bej,
bel,
bem,
ben,
ber,
bho,
bih,
bik,
bin,
bis,
bla,
bnt,
bos,
bra,
bre,
btk,
bua,
bug,
bul,
bur,
byn,
cad,
cai,
car,
cat,
cau,
ceb,
cel,
cha,
chb,
che,
chg,
chi,
chk,
chm,
chn,
cho,
chp,
chr,
chu,
chv,
chy,
cmc,
cop,
cor,
cos,
cpe,
cpf,
cpp,
cre,
crh,
crp,
csb,
cus,
cze,
dak,
dan,
dar,
day,
del,
den,
dgr,
din,
div,
doi,
dra,
dsb,
dua,
dum,
dut,
dyu,
dzo,
efi,
egy,
eka,
elx,
eng,
enm,
epo,
est,
ewe,
ewo,
fan,
fao,
fat,
fij,
fil,
fin,
fiu,
fon,
fre,
frm,
fro,
frr,
frs,
fry,
ful,
fur,
gaa,
gay,
gba,
gem,
geo,
ger,
gez,
gil,
gla,
gle,
glg,
glv,
gmh,
goh,
gon,
gor,
got,
grb,
grc,
gre,
grn,
gsw,
guj,
gwi,
hai,
hat,
hau,
haw,
heb,
her,
hil,
him,
hin,
hit,
hmn,
hmo,
hrv,
hsb,
hun,
hup,
iba,
ibo,
ice,
ido,
iii,
ijo,
iku,
ile,
ilo,
ina,
inc,
ind,
ine,
inh,
ipk,
ira,
iro,
ita,
jav,
jbo,
jpn,
jpr,
jrb,
kaa,
kab,
kac,
kal,
kam,
kan,
kar,
kas,
kau,
kaw,
kaz,
kbd,
kha,
khi,
khm,
kho,
kik,
kin,
kir,
kmb,
kok,
kom,
kon,
kor,
kos,
kpe,
krc,
krl,
kro,
kru,
kua,
kum,
kur,
kut,
lad,
lah,
lam,
lao,
lat,
lav,
lez,
lim,
lin,
lit,
lol,
loz,
ltz,
lua,
lub,
lug,
lui,
lun,
luo,
lus,
mac,
mad,
mag,
mah,
mai,
mak,
mal,
man,
mao,
map,
mar,
mas,
may,
mdf,
mdr,
men,
mga,
mic,
min,
mis,
mkh,
mlg,
mlt,
mnc,
mni,
mno,
moh,
mon,
mos,
mul,
mun,
mus,
mwl,
mwr,
myn,
myv,
nah,
nai,
nap,
nau,
nav,
nbl,
nde,
ndo,
nds,
nep,
@new,
nia,
nic,
niu,
nno,
nob,
nog,
non,
nor,
nqo,
nso,
nub,
nwc,
nya,
nym,
nyn,
nyo,
nzi,
oci,
oji,
ori,
orm,
osa,
oss,
ota,
oto,
paa,
pag,
pal,
pam,
pan,
pap,
pau,
peo,
per,
phi,
phn,
pli,
pol,
pon,
por,
pra,
pro,
pus,
[JsonPropertyName("qaa-qtz")]
qaaqtz, que, raj, rap,
rar, roa, roh,
rom, rum, run,
rup, rus, sad,
sag, sah, sai,
sal, sam, san,
sas, sat, scn,
sco, sel, sem,
sga, sgn, shn,
sid, sin, sio,
sit, sla, slo,
slv, sma, sme,
smi, smj, smn,
smo, sms, sna,
snd, snk, sog,
som, son, sot,
spa, srd, srn,
srp, srr, ssa,
ssw, suk, sun,
sus, sux, swa,
swe, syc, syr,
tah, tai, tam,
tat, tel, tem,
ter, tet, tgk,
tgl, tha, tib,
tig, tir, tiv,
tkl, tlh, tli,
tmh, tog, ton,
tpi, tsi, tsn,
tso, tuk, tum,
tup, tur, tut,
tvl, twi, tyv,
udm, uga, uig,
ukr, umb, und,
urd, uzb, vai,
ven, vie, vol,
vot, wak, wal,
war, was, wel,
wen, wln, wol,
xal, xho, yao,
yap, yid, yor,
ypk, zap, zbl,
zen, zgh, zha,
znd, zul, zun,
zxx, zza
qaaqtz,
que,
raj,
rap,
rar,
roa,
roh,
rom,
rum,
run,
rup,
rus,
sad,
sag,
sah,
sai,
sal,
sam,
san,
sas,
sat,
scn,
sco,
sel,
sem,
sga,
sgn,
shn,
sid,
sin,
sio,
sit,
sla,
slo,
slv,
sma,
sme,
smi,
smj,
smn,
smo,
sms,
sna,
snd,
snk,
sog,
som,
son,
sot,
spa,
srd,
srn,
srp,
srr,
ssa,
ssw,
suk,
sun,
sus,
sux,
swa,
swe,
syc,
syr,
tah,
tai,
tam,
tat,
tel,
tem,
ter,
tet,
tgk,
tgl,
tha,
tib,
tig,
tir,
tiv,
tkl,
tlh,
tli,
tmh,
tog,
ton,
tpi,
tsi,
tsn,
tso,
tuk,
tum,
tup,
tur,
tut,
tvl,
twi,
tyv,
udm,
uga,
uig,
ukr,
umb,
und,
urd,
uzb,
vai,
ven,
vie,
vol,
vot,
wak,
wal,
war,
was,
wel,
wen,
wln,
wol,
xal,
xho,
yao,
yap,
yid,
yor,
ypk,
zap,
zbl,
zen,
zgh,
zha,
znd,
zul,
zun,
zxx,
zza
}

View File

@@ -75,10 +75,12 @@ public class Layers
}
}
[SuppressMessage("ReSharper", "InconsistentNaming"), JsonConverter(typeof(JsonStringEnumMemberConverter))]
[SuppressMessage("ReSharper", "InconsistentNaming")]
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
public enum LayerType
{
PTP, OTP
PTP,
OTP
}
public class LayeredText
@@ -87,11 +89,15 @@ public class LayeredText
public string Text { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator LayeredText(LayeredTextType cicm) => cicm is null ? null : new LayeredText
{
Layer = cicm.layerSpecified ? cicm.layer : null,
Text = cicm.Value
};
public static implicit operator LayeredText(LayeredTextType cicm) => cicm is null
? null
: new LayeredText
{
Layer = cicm.layerSpecified
? cicm.layer
: null,
Text = cicm.Value
};
}
public class Sectors
@@ -100,9 +106,12 @@ public class Sectors
public ulong Value { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Sectors(SectorsType cicm) => cicm is null ? null : new Sectors
{
Layer = cicm.layerSpecified ? cicm.layer : null,
Value = cicm.Value
};
}
public static implicit operator Sectors(SectorsType cicm) => cicm is null
? null
: new Sectors
{
Layer =
cicm.layerSpecified ? cicm.layer : null,
Value = cicm.Value
};
}

View File

@@ -119,4 +119,4 @@ public class LinearMedia
return linearMedia;
}
}
}

View File

@@ -91,4 +91,4 @@ public class Magazine
return magazine;
}
}
}

View File

@@ -52,11 +52,13 @@ public class MultiMediaCard
public Dump OCR { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator MultiMediaCard(MultiMediaCardType cicm) => cicm is null ? null : new MultiMediaCard
{
CSD = cicm.CSD,
CID = cicm.CID,
ExtendedCSD = cicm.ExtendedCSD,
OCR = cicm.OCR
};
}
public static implicit operator MultiMediaCard(MultiMediaCardType cicm) => cicm is null
? null
: new MultiMediaCard
{
CSD = cicm.CSD,
CID = cicm.CID,
ExtendedCSD = cicm.ExtendedCSD,
OCR = cicm.OCR
};
}

View File

@@ -309,11 +309,13 @@ public class TrackSequence
public uint Session { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator TrackSequence(TrackSequenceType cicm) => cicm is null ? null : new TrackSequence
{
Number = cicm.TrackNumber,
Session = cicm.Session
};
public static implicit operator TrackSequence(TrackSequenceType cicm) => cicm is null
? null
: new TrackSequence
{
Number = cicm.TrackNumber,
Session = cicm.Session
};
}
public class TrackIndex
@@ -322,11 +324,13 @@ public class TrackIndex
public int Value { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator TrackIndex(TrackIndexType cicm) => cicm is null ? null : new TrackIndex
{
Index = cicm.index,
Value = cicm.Value
};
public static implicit operator TrackIndex(TrackIndexType cicm) => cicm is null
? null
: new TrackIndex
{
Index = cicm.index,
Value = cicm.Value
};
}
public class TrackFlags
@@ -337,21 +341,29 @@ public class TrackFlags
public bool PreEmphasis { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator TrackFlags(TrackFlagsType cicm) => cicm is null ? null : new TrackFlags
{
CopyPermitted = cicm.CopyPermitted,
Data = cicm.Data,
PreEmphasis = cicm.PreEmphasis,
Quadraphonic = cicm.Quadraphonic
};
public static implicit operator TrackFlags(TrackFlagsType cicm) => cicm is null
? null
: new TrackFlags
{
CopyPermitted = cicm.CopyPermitted,
Data = cicm.Data,
PreEmphasis = cicm.PreEmphasis,
Quadraphonic = cicm.Quadraphonic
};
}
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
public enum TrackType
{
Audio, Mode0, Mode1,
Mode2, Mode2Form1, Mode2Form2,
Dvd, HdDvd, Bluray,
Audio,
Mode0,
Mode1,
Mode2,
Mode2Form1,
Mode2Form2,
Dvd,
HdDvd,
Bluray,
Ddcd
}
@@ -383,4 +395,4 @@ public class SubChannel
return subchannel;
}
}
}

View File

@@ -55,11 +55,13 @@ public class Pci
public LinearMedia ExpansionRom { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Pci(PCIType cicm) => cicm is null ? null : new Pci
{
VendorID = cicm.VendorID,
DeviceID = cicm.DeviceID,
Configuration = cicm.Configuration,
ExpansionRom = cicm.ExpansionROM
};
}
public static implicit operator Pci(PCIType cicm) => cicm is null
? null
: new Pci
{
VendorID = cicm.VendorID,
DeviceID = cicm.DeviceID,
Configuration = cicm.Configuration,
ExpansionRom = cicm.ExpansionROM
};
}

View File

@@ -56,14 +56,25 @@ public class Pcmcia
public List<string> AdditionalInformation { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Pcmcia(PCMCIAType cicm) => cicm is null ? null : new Pcmcia
{
Cis = cicm.CIS,
Compliance = cicm.Compliance,
ManufacturerCode = cicm.ManufacturerCodeSpecified ? cicm.ManufacturerCode : null,
CardCode = cicm.CardCodeSpecified ? cicm.CardCode : null,
Manufacturer = cicm.Manufacturer,
ProductName = cicm.ProductName,
AdditionalInformation = cicm.AdditionalInformation is null ? null : new List<string>(cicm.AdditionalInformation)
};
}
public static implicit operator Pcmcia(PCMCIAType cicm) => cicm is null
? null
: new Pcmcia
{
Cis = cicm.CIS,
Compliance = cicm.Compliance,
ManufacturerCode =
cicm.ManufacturerCodeSpecified
? cicm.ManufacturerCode
: null,
CardCode = cicm.CardCodeSpecified
? cicm.CardCode
: null,
Manufacturer = cicm.Manufacturer,
ProductName = cicm.ProductName,
AdditionalInformation =
cicm.AdditionalInformation is null
? null
: new List<string>(
cicm.AdditionalInformation)
};
}

View File

@@ -50,9 +50,11 @@ public class Ps3Encryption
public string Serial { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Ps3Encryption(PS3EncryptionType cicm) => cicm is null ? null : new Ps3Encryption
{
Key = cicm.Key,
Serial = cicm.Serial
};
}
public static implicit operator Ps3Encryption(PS3EncryptionType cicm) => cicm is null
? null
: new Ps3Encryption
{
Key = cicm.Key,
Serial = cicm.Serial
};
}

View File

@@ -81,4 +81,4 @@ public class Partition
return part;
}
}
}

View File

@@ -46,8 +46,16 @@ namespace Aaru.CommonTypes.AaruMetadata;
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
public enum ReleaseType
{
Retail, Bundle, Coverdisc,
Subscription, Demo, OEM,
Shareware, FOSS, Adware,
Donationware, DigitalDownload, SaaS
}
Retail,
Bundle,
Coverdisc,
Subscription,
Demo,
OEM,
Shareware,
FOSS,
Adware,
Donationware,
DigitalDownload,
SaaS
}

View File

@@ -52,9 +52,11 @@ public class RequiredOperatingSystem
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator RequiredOperatingSystem(RequiredOperatingSystemType cicm) =>
cicm is null ? null : new RequiredOperatingSystem
{
Name = cicm.Name,
Versions = cicm.Version is null ? null : new List<string>(cicm.Version)
};
}
cicm is null
? null
: new RequiredOperatingSystem
{
Name = cicm.Name,
Versions = cicm.Version is null ? null : new List<string>(cicm.Version)
};
}

View File

@@ -109,4 +109,4 @@ public class Evpd
return evpd;
}
}
}

View File

@@ -135,25 +135,45 @@ public class Case
public Scans Scans { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Case(Schemas.CaseType cicm) => cicm is null ? null : new Case
{
Type = (CaseType)cicm.CaseType1,
Scans = cicm.Scans
};
public static implicit operator Case(Schemas.CaseType cicm) => cicm is null
? null
: new Case
{
Type = (CaseType)cicm.CaseType1,
Scans = cicm.Scans
};
}
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
public enum CaseType
{
Jewel, BigJewel, SlimJewel,
Sleeve, Qpack, Digisleeve,
DiscboxSlider, CompacPlus, KeepCase,
SnapCase, SoftCase, EcoPack,
Liftlock, Spindle, Ps2Case,
Ps3Case, BlurayKeepCase, PsCase,
DcCase, SaturnCase, XboxCase,
Xbox360Case, XboxOneCase, SaturnBigCase,
GcCase, WiiCase, Unknown
Jewel,
BigJewel,
SlimJewel,
Sleeve,
Qpack,
Digisleeve,
DiscboxSlider,
CompacPlus,
KeepCase,
SnapCase,
SoftCase,
EcoPack,
Liftlock,
Spindle,
Ps2Case,
Ps3Case,
BlurayKeepCase,
PsCase,
DcCase,
SaturnCase,
XboxCase,
Xbox360Case,
XboxOneCase,
SaturnBigCase,
GcCase,
WiiCase,
Unknown
}
public class Scans
@@ -162,11 +182,13 @@ public class Scans
public MediaScan Media { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Scans(ScansType cicm) => cicm is null ? null : new Scans
{
Case = cicm.CaseScan,
Media = cicm.Scan
};
public static implicit operator Scans(ScansType cicm) => cicm is null
? null
: new Scans
{
Case = cicm.CaseScan,
Media = cicm.Scan
};
}
public class CaseScan
@@ -175,19 +197,28 @@ public class CaseScan
public Scan Scan { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator CaseScan(CaseScanType cicm) => cicm is null ? null : new CaseScan
{
Element = (CaseScanElement)cicm.CaseScanElement,
Scan = cicm.Scan
};
public static implicit operator CaseScan(CaseScanType cicm) => cicm is null
? null
: new CaseScan
{
Element = (CaseScanElement)cicm.
CaseScanElement,
Scan = cicm.Scan
};
}
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
public enum CaseScanElement
{
Sleeve, Inner, Inlay,
FrontBack, FrontFull, BoxFront,
BoxBack, BoxSpine, External
Sleeve,
Inner,
Inlay,
FrontBack,
FrontFull,
BoxFront,
BoxBack,
BoxSpine,
External
}
public class MediaScan
@@ -196,18 +227,25 @@ public class MediaScan
public Scan Scan { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator MediaScan(MediaScanType cicm) => cicm is null ? null : new MediaScan
{
Element = (MediaScanElement)cicm.MediaScanElement,
Scan = cicm.Scan
};
public static implicit operator MediaScan(MediaScanType cicm) => cicm is null
? null
: new MediaScan
{
Element = (MediaScanElement)cicm.
MediaScanElement,
Scan = cicm.Scan
};
}
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
public enum MediaScanElement
{
Up, Down, Front,
Back, Left, Right
Up,
Down,
Front,
Back,
Left,
Right
}
public class Scanner
@@ -220,15 +258,17 @@ public class Scanner
public string SoftwareVersion { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Scanner(ScannerType cicm) => cicm is null ? null : new Scanner
{
Author = cicm.Author,
Manufacturer = cicm.Manufacturer,
Model = cicm.Model,
Serial = cicm.Serial,
Software = cicm.Software,
SoftwareVersion = cicm.SoftwareVersion
};
public static implicit operator Scanner(ScannerType cicm) => cicm is null
? null
: new Scanner
{
Author = cicm.Author,
Manufacturer = cicm.Manufacturer,
Model = cicm.Model,
Serial = cicm.Serial,
Software = cicm.Software,
SoftwareVersion = cicm.SoftwareVersion
};
}
public class ScanProcessing
@@ -238,12 +278,15 @@ public class ScanProcessing
public string SoftwareVersion { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator ScanProcessing(ScanProcessingType cicm) => cicm is null ? null : new ScanProcessing
{
Author = cicm.Author,
Software = cicm.Software,
SoftwareVersion = cicm.SoftwareVersion
};
public static implicit operator ScanProcessing(ScanProcessingType cicm) => cicm is null
? null
: new ScanProcessing
{
Author = cicm.Author,
Software = cicm.Software,
SoftwareVersion =
cicm.SoftwareVersion
};
}
public class OCR
@@ -276,4 +319,4 @@ public class OCR
return ocr;
}
}
}

View File

@@ -52,11 +52,13 @@ public class SecureDigital
public Dump OCR { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator SecureDigital(SecureDigitalType cicm) => cicm is null ? null : new SecureDigital
{
CID = cicm.CID,
CSD = cicm.CSD,
SCR = cicm.SCR,
OCR = cicm.OCR
};
}
public static implicit operator SecureDigital(SecureDigitalType cicm) => cicm is null
? null
: new SecureDigital
{
CID = cicm.CID,
CSD = cicm.CSD,
SCR = cicm.SCR,
OCR = cicm.OCR
};
}

View File

@@ -53,12 +53,16 @@ public class Sequence
public byte? Layer { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Sequence(SequenceType cicm) => cicm is null ? null : new Sequence
{
Title = cicm.MediaTitle,
MediaSequence = cicm.MediaSequence,
TotalMedia = cicm.TotalMedia,
Side = cicm.SideSpecified ? cicm.Side : null,
Layer = cicm.LayerSpecified ? cicm.Layer : null
};
}
public static implicit operator Sequence(SequenceType cicm) => cicm is null
? null
: new Sequence
{
Title = cicm.MediaTitle,
MediaSequence = cicm.MediaSequence,
TotalMedia = cicm.TotalMedia,
Side = cicm.SideSpecified ? cicm.Side : null,
Layer = cicm.LayerSpecified
? cicm.Layer
: null
};
}

View File

@@ -126,4 +126,4 @@ public class TapeFile
return file;
}
}
}

View File

@@ -51,10 +51,12 @@ public class Usb
public Dump Descriptors { get; set; }
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator Usb(USBType cicm) => cicm is null ? null : new Usb
{
VendorID = cicm.VendorID,
ProductID = cicm.ProductID,
Descriptors = cicm.Descriptors
};
}
public static implicit operator Usb(USBType cicm) => cicm is null
? null
: new Usb
{
VendorID = cicm.VendorID,
ProductID = cicm.ProductID,
Descriptors = cicm.Descriptors
};
}

View File

@@ -73,4 +73,4 @@ public class UserManual
return manual;
}
}
}

View File

@@ -79,10 +79,12 @@ public class XboxSecuritySector
[Obsolete("Will be removed in Aaru 7")]
public static implicit operator XboxSecuritySector(XboxSecuritySectorsType cicm) =>
cicm is null ? null : new XboxSecuritySector
{
RequestNumber = cicm.RequestNumber,
RequestVersion = cicm.RequestVersion,
SecuritySectors = cicm.SecuritySectors
};
}
cicm is null
? null
: new XboxSecuritySector
{
RequestNumber = cicm.RequestNumber,
RequestVersion = cicm.RequestVersion,
SecuritySectors = cicm.SecuritySectors
};
}

View File

@@ -61,7 +61,7 @@ public delegate void InitTwoProgressHandler();
/// <summary>Updates two progress indicators with text</summary>
public delegate void UpdateTwoProgressHandler(string text, long current, long maximum, string text2, long current2,
long maximum2);
long maximum2);
/// <summary>Pulses a progress indicator with indeterminate boundaries</summary>
public delegate void PulseTwoProgressHandler(string text, string text2);

View File

@@ -41,8 +41,9 @@ using System.Diagnostics.CodeAnalysis;
namespace Aaru.CommonTypes.Enums;
/// <summary>Enumerates error codes. Negative for UNIX error number equivalents, positive for Aaru error numbers.</summary>
[SuppressMessage("ReSharper", "InconsistentNaming"), SuppressMessage("ReSharper", "UnusedMember.Global"),
SuppressMessage("ReSharper", "IdentifierTypo")]
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "UnusedMember.Global")]
[SuppressMessage("ReSharper", "IdentifierTypo")]
public enum ErrorNumber
{
/// <summary>Operation not permitted</summary>

View File

@@ -4,58 +4,117 @@ namespace Aaru.CommonTypes.Enums;
public enum NesConsoleType : byte
{
Nes = 0, Vs = 1, Playchoice = 2,
Extended = 3
Nes = 0,
Vs = 1,
Playchoice = 2,
Extended = 3
}
public enum NesTimingMode : byte
{
RP2C02 = 0, RP2C07 = 1, Multiple = 2,
RP2C02 = 0,
RP2C07 = 1,
Multiple = 2,
UMC6527P = 3
}
public enum NesVsPpuType : byte
{
RP2C03B = 0, RP2C03G = 1, RP2C04_0001 = 2,
RP2C04_0002 = 3, RP2C04_0003 = 4, RP2C04_0004 = 5,
RC2C03B = 6, RC2C03C = 7, RC2C05_01 = 8,
RC2C05_02 = 9, RC2C05_03 = 10, RC2C05_04 = 11,
RP2C03B = 0,
RP2C03G = 1,
RP2C04_0001 = 2,
RP2C04_0002 = 3,
RP2C04_0003 = 4,
RP2C04_0004 = 5,
RC2C03B = 6,
RC2C03C = 7,
RC2C05_01 = 8,
RC2C05_02 = 9,
RC2C05_03 = 10,
RC2C05_04 = 11,
RC2C05_05 = 12
}
public enum NesVsHardwareType : byte
{
Normal = 0, RBI = 1, TKO = 2,
SuperXevious = 3, IceClimber = 4, Dual = 5,
Normal = 0,
RBI = 1,
TKO = 2,
SuperXevious = 3,
IceClimber = 4,
Dual = 5,
RaidOnBungeling = 6
}
public enum NesExtendedConsoleType : byte
{
Normal = 0, Vs = 1, Playchoice = 2,
DecimalMode = 3, VT01_Monochrome = 4, VT01 = 5,
VT02 = 6, VT03 = 7, VT09 = 8,
VT32 = 9, VT369 = 10, UM6578 = 11
Normal = 0,
Vs = 1,
Playchoice = 2,
DecimalMode = 3,
VT01_Monochrome = 4,
VT01 = 5,
VT02 = 6,
VT03 = 7,
VT09 = 8,
VT32 = 9,
VT369 = 10,
UM6578 = 11
}
public enum NesDefaultExpansionDevice : byte
{
Unspecified = 0, Controller = 1, FourScore = 2,
FourPlayersAdapter = 3, Vs = 4, VsSystem = 5,
VsPinball = 6, VsZapper = 7, Zapper = 8,
TwoZappers = 9, HyperShotLightgun = 0xA, PowerPadSideA = 0xB,
PowerPadSideB = 0xC, FamilyTrainerSideA = 0xD, FamilyTrainerSideB = 0xE,
ArkanoidVaus = 0xF, ArkanoidVausFamicom = 0x10, TwoVausDataRecorder = 0x11,
HyperShotController = 0x12, CoconutsPachinko = 0x13, ExcitingBoxing = 0x14,
JissenMahjong = 0x15, PartyTap = 0x16, OekaKidsTablet = 0x17,
SunsoftBarcodeBattler = 0x18, PianoKeyboard = 0x19, PokkunMoguraa = 0x1A,
TopRider = 0x1B, DoubleFisted = 0x1C, Famicom3DSystem = 0x1D,
DoremikkoKeyboard = 0x1E, GyroSet = 0x1F, DataRecorder = 0x20,
TurboFile = 0x21, StorageBattleBox = 0x22, FamilyBASICKeyboardDataRecorder = 0x23,
DongdaKeyboard = 0x24, BitCorpKeyboard = 0x25, SuborKeyboard = 0x26,
SuborKeyboardMouse = 0x27, SuborKeyboardMouse24 = 0x28, SNESMouse = 0x29,
Multicart = 0x2A, SNESControllers = 0x2B, RacerMateBicycle = 0x2C,
UForce = 0x2D, StackUp = 0x2E, PatrolmanLightgun = 0x2F,
C1CassetteInterface = 0x30, SwappedController = 0x31, SudokuPad = 0x32,
ABLPinball = 0x33, GoldenNuggetCasino = 0x34
Unspecified = 0,
Controller = 1,
FourScore = 2,
FourPlayersAdapter = 3,
Vs = 4,
VsSystem = 5,
VsPinball = 6,
VsZapper = 7,
Zapper = 8,
TwoZappers = 9,
HyperShotLightgun = 0xA,
PowerPadSideA = 0xB,
PowerPadSideB = 0xC,
FamilyTrainerSideA = 0xD,
FamilyTrainerSideB = 0xE,
ArkanoidVaus = 0xF,
ArkanoidVausFamicom = 0x10,
TwoVausDataRecorder = 0x11,
HyperShotController = 0x12,
CoconutsPachinko = 0x13,
ExcitingBoxing = 0x14,
JissenMahjong = 0x15,
PartyTap = 0x16,
OekaKidsTablet = 0x17,
SunsoftBarcodeBattler = 0x18,
PianoKeyboard = 0x19,
PokkunMoguraa = 0x1A,
TopRider = 0x1B,
DoubleFisted = 0x1C,
Famicom3DSystem = 0x1D,
DoremikkoKeyboard = 0x1E,
GyroSet = 0x1F,
DataRecorder = 0x20,
TurboFile = 0x21,
StorageBattleBox = 0x22,
FamilyBASICKeyboardDataRecorder = 0x23,
DongdaKeyboard = 0x24,
BitCorpKeyboard = 0x25,
SuborKeyboard = 0x26,
SuborKeyboardMouse = 0x27,
SuborKeyboardMouse24 = 0x28,
SNESMouse = 0x29,
Multicart = 0x2A,
SNESControllers = 0x2B,
RacerMateBicycle = 0x2C,
UForce = 0x2D,
StackUp = 0x2E,
PatrolmanLightgun = 0x2F,
C1CassetteInterface = 0x30,
SwappedController = 0x31,
SudokuPad = 0x32,
ABLPinball = 0x33,
GoldenNuggetCasino = 0x34
}

View File

@@ -72,7 +72,7 @@ public class ExtentsByte
Tuple<byte, byte> removeTwo = null;
Tuple<byte, byte> itemToAdd = null;
for(int i = 0; i < _backend.Count; i++)
for(var i = 0; i < _backend.Count; i++)
{
// Already contained in an extent
if(item >= _backend[i].Item1 &&

View File

@@ -58,11 +58,13 @@ public static class ExtentsConverter
List<Extent> list = new();
for(ulong i = 0; i < (ulong)tuples.LongLength; i++)
{
list.Add(new Extent
{
Start = tuples[i].Item1,
End = tuples[i].Item2
});
}
return list;
}
@@ -75,8 +77,8 @@ public static class ExtentsConverter
if(extents == null)
return null;
List<Tuple<ulong, ulong>> tuples = extents.Select(extent => new Tuple<ulong, ulong>(extent.Start, extent.End)).
ToList();
var tuples = extents.Select(extent => new Tuple<ulong, ulong>(extent.Start, extent.End)).
ToList();
return new ExtentsULong(tuples);
}

View File

@@ -72,7 +72,7 @@ public class ExtentsInt
Tuple<int, int> removeTwo = null;
Tuple<int, int> itemToAdd = null;
for(int i = 0; i < _backend.Count; i++)
for(var i = 0; i < _backend.Count; i++)
{
// Already contained in an extent
if(item >= _backend[i].Item1 &&

View File

@@ -72,7 +72,7 @@ public class ExtentsLong
Tuple<long, long> removeTwo = null;
Tuple<long, long> itemToAdd = null;
for(int i = 0; i < _backend.Count; i++)
for(var i = 0; i < _backend.Count; i++)
{
// Already contained in an extent
if(item >= _backend[i].Item1 &&

View File

@@ -72,7 +72,7 @@ public class ExtentsSByte
Tuple<sbyte, sbyte> removeTwo = null;
Tuple<sbyte, sbyte> itemToAdd = null;
for(int i = 0; i < _backend.Count; i++)
for(var i = 0; i < _backend.Count; i++)
{
// Already contained in an extent
if(item >= _backend[i].Item1 &&

View File

@@ -72,7 +72,7 @@ public class ExtentsShort
Tuple<short, short> removeTwo = null;
Tuple<short, short> itemToAdd = null;
for(int i = 0; i < _backend.Count; i++)
for(var i = 0; i < _backend.Count; i++)
{
// Already contained in an extent
if(item >= _backend[i].Item1 &&

View File

@@ -72,7 +72,7 @@ public class ExtentsUInt
Tuple<uint, uint> removeTwo = null;
Tuple<uint, uint> itemToAdd = null;
for(int i = 0; i < _backend.Count; i++)
for(var i = 0; i < _backend.Count; i++)
{
// Already contained in an extent
if(item >= _backend[i].Item1 &&

View File

@@ -72,7 +72,7 @@ public class ExtentsULong
Tuple<ulong, ulong> removeTwo = null;
Tuple<ulong, ulong> itemToAdd = null;
for(int i = 0; i < _backend.Count; i++)
for(var i = 0; i < _backend.Count; i++)
{
// Already contained in an extent
if(item >= _backend[i].Item1 &&

View File

@@ -72,7 +72,7 @@ public class ExtentsUShort
Tuple<ushort, ushort> removeTwo = null;
Tuple<ushort, ushort> itemToAdd = null;
for(int i = 0; i < _backend.Count; i++)
for(var i = 0; i < _backend.Count; i++)
{
// Already contained in an extent
if(item >= _backend[i].Item1 &&

View File

@@ -60,6 +60,7 @@ public sealed class FiltersList
Filters = new SortedDictionary<string, IFilter>();
foreach(Type type in assembly.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IFilter))))
{
try
{
var filter = (IFilter)type.GetConstructor(Type.EmptyTypes)?.Invoke(Array.Empty<object>());
@@ -72,6 +73,7 @@ public sealed class FiltersList
{
AaruConsole.ErrorWriteLine(Localization.Exception_0, exception);
}
}
}
/// <summary>Gets the filter that allows to read the specified path</summary>
@@ -82,6 +84,7 @@ public sealed class FiltersList
IFilter noFilter = null;
foreach(IFilter filter in Filters.Values)
{
try
{
if(filter.Id != new Guid("12345678-AAAA-BBBB-CCCC-123456789000"))
@@ -102,6 +105,7 @@ public sealed class FiltersList
{
// Ignore and continue
}
}
if(!noFilter?.Identify(path) == true)
return null;

View File

@@ -132,7 +132,8 @@ public static class Geometry
geom.bytesPerSector == geometry.bytesPerSector &&
geom.encoding == geometry.encoding &&
geom.variableSectorsPerTrack ==
geometry.variableSectorsPerTrack select geom.type).
geometry.variableSectorsPerTrack
select geom.type).
FirstOrDefault();
/// <summary>Gets the geometry for a given media type</summary>

View File

@@ -49,17 +49,23 @@ public interface IBaseImage
{
/// <summary>Plugin author</summary>
string Author { get; }
/// <summary>Gets the Aaru Metadata for the image</summary>
AaruMetadata.Metadata AaruMetadata { get; }
/// <summary>List of dump hardware used to create the image from real media</summary>
List<DumpHardware> DumpHardware { get; }
/// <summary>Gets the image format.</summary>
/// <value>The image format.</value>
string Format { get; }
/// <summary>Plugin UUID.</summary>
Guid Id { get; }
/// <summary>Image information</summary>
ImageInfo Info { get; }
/// <summary>Plugin name.</summary>
string Name { get; }

View File

@@ -50,16 +50,22 @@ public interface IBaseWritableImage : IBaseImage
{
/// <summary>Contains a description of the last error</summary>
string ErrorMessage { get; }
/// <summary>If set to <c>true</c> means the image is opened for writing</summary>
bool IsWriting { get; }
/// <summary>Gets a list of known extensions for format auto-choosing</summary>
IEnumerable<string> KnownExtensions { get; }
/// <summary>Gets a list of <see cref="MediaTagType" /> that are supported by the media image format</summary>
IEnumerable<MediaTagType> SupportedMediaTags { get; }
/// <summary>Gets a list of <see cref="MediaType" /> that are supported by the media image format</summary>
IEnumerable<MediaType> SupportedMediaTypes { get; }
/// <summary>Retrieves a list of options supported by the filesystem, with name, type and description</summary>
IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions { get; }
/// <summary>Gets a list of <see cref="SectorTagType" /> that are supported by the media image format</summary>
IEnumerable<SectorTagType> SupportedSectorTags { get; }

View File

@@ -47,8 +47,10 @@ public interface IFilesystem
{
/// <summary>Plugin name (translatable).</summary>
string Name { get; }
/// <summary>Plugin UUID.</summary>
Guid Id { get; }
/// <summary>Plugin author</summary>
string Author { get; }
@@ -64,6 +66,6 @@ public interface IFilesystem
/// <param name="encoding">Which encoding to use for this filesystem.</param>
/// <param name="information">Filesystem information.</param>
/// <param name="metadata">Information about the filesystem as expected by Aaru Metadata</param>
void GetInformation(IMediaImage imagePlugin, Partition partition, Encoding encoding, out string information,
void GetInformation(IMediaImage imagePlugin, Partition partition, Encoding encoding, out string information,
out FileSystem metadata);
}

View File

@@ -50,8 +50,10 @@ public interface IFilter
{
/// <summary>Descriptive name of the plugin</summary>
string Name { get; }
/// <summary>Unique UUID of the plugin</summary>
Guid Id { get; }
/// <summary>Plugin author</summary>
string Author { get; }

View File

@@ -108,7 +108,7 @@ public interface IFloppyImage : IMediaImage
/// <param name="sector">Logical sector ID.</param>
/// <param name="status">Status of request.</param>
/// <param name="buffer">Buffer where the sector data will be stored.</param>
ErrorNumber ReadSectorLong(ushort track, byte head, ushort sector, out FloppySectorStatus status,
ErrorNumber ReadSectorLong(ushort track, byte head, ushort sector, out FloppySectorStatus status,
out byte[] buffer);
/// <summary>Verifies a track.</summary>

View File

@@ -62,7 +62,7 @@ public interface IFluxImage : IBaseImage
/// <param name="subTrack">Physical sub-step of track (e.g. half-track)</param>
/// <param name="captureIndex">Which capture to read. See also <see cref="CapturesLength" /></param>
/// <param name="resolution">The resolution of the index capture in picoseconds</param>
ErrorNumber ReadFluxIndexResolution(uint head, ushort track, byte subTrack, uint captureIndex,
ErrorNumber ReadFluxIndexResolution(uint head, ushort track, byte subTrack, uint captureIndex,
out ulong resolution);
/// <summary>Reads the resolution (sample rate) of a data signal capture in picoseconds.</summary>

View File

@@ -49,6 +49,7 @@ public interface IOpticalMediaImage : IMediaImage, IPartitionableMediaImage, IVe
/// <summary>Gets the disc track extents (start, length).</summary>
/// <value>The track extents.</value>
List<Track> Tracks { get; }
/// <summary>Gets the sessions (optical discs only).</summary>
/// <value>The sessions.</value>
List<Session> Sessions { get; }
@@ -117,6 +118,6 @@ public interface IOpticalMediaImage : IMediaImage, IPartitionableMediaImage, IVe
/// <param name="track">Track.</param>
/// <param name="failingLbas">List of incorrect sectors</param>
/// <param name="unknownLbas">List of uncheckable sectors</param>
bool? VerifySectors(ulong sectorAddress, uint length, uint track, out List<ulong> failingLbas,
bool? VerifySectors(ulong sectorAddress, uint length, uint track, out List<ulong> failingLbas,
out List<ulong> unknownLbas);
}

View File

@@ -47,8 +47,10 @@ public interface IPartition
{
/// <summary>Plugin name.</summary>
string Name { get; }
/// <summary>Plugin UUID.</summary>
Guid Id { get; }
/// <summary>Plugin author</summary>
string Author { get; }

View File

@@ -71,8 +71,8 @@ public interface IReadOnlyFilesystem : IFilesystem
/// <param name="encoding">Which encoding to use for this filesystem.</param>
/// <param name="options">Dictionary of key=value pairs containing options to pass to the filesystem</param>
/// <param name="namespace">Filename namespace</param>
ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace);
ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace);
/// <summary>Frees all internal structures created by <see cref="Mount" /></summary>
ErrorNumber Unmount();
@@ -132,11 +132,11 @@ public interface IReadOnlyFilesystem : IFilesystem
return ErrorNumber.InvalidArgument;
long desiredPosition = origin switch
{
SeekOrigin.Begin => position,
SeekOrigin.End => node.Length + position,
_ => node.Offset + position
};
{
SeekOrigin.Begin => position,
SeekOrigin.End => node.Length + position,
_ => node.Offset + position
};
if(desiredPosition < 0)
return ErrorNumber.InvalidArgument;
@@ -169,9 +169,11 @@ public interface IReadOnlyFilesystem : IFilesystem
/// <summary>Reads the next entry in the directory.</summary>
/// <param name="node">Represent an opened directory.</param>
/// <param name="filename">The next entry name.
/// <param name="filename">
/// The next entry name.
/// <value>null</value>
/// if there are no more entries.</param>
/// if there are no more entries.
/// </param>
/// <returns>Error number.</returns>
ErrorNumber ReadDir(IDirNode node, out string filename);
}
@@ -181,8 +183,10 @@ public interface IFileNode
{
/// <summary>Path to the file</summary>
string Path { get; }
/// <summary>File length</summary>
long Length { get; }
/// <summary>Current position in file</summary>
long Offset { get; set; }
}

View File

@@ -48,8 +48,10 @@ public interface ITapeImage : IMediaImage
{
/// <summary>Gets a list of all the files registered in the image</summary>
List<TapeFile> Files { get; }
/// <summary>Gets a list of all the partitions registered in the image</summary>
List<TapePartition> TapePartitions { get; }
/// <summary>If the media is a really a tape, as some formats can store non-tapes</summary>
bool IsTape { get; }
}

View File

@@ -54,8 +54,8 @@ public interface IWritableFluxImage : IFluxImage, IWritableImage
/// <param name="track">Physical track (position of the heads over the floppy media, 0-based)</param>
/// <param name="subTrack">Physical sub-step of track (e.g. half-track)</param>
/// <param name="captureIndex">Which capture slot to write to. See also <see cref="IFluxImage.CapturesLength" /></param>
ErrorNumber WriteFluxCapture(ulong indexResolution, ulong dataResolution, byte[] indexBuffer, byte[] dataBuffer,
uint head, ushort track, byte subTrack, uint captureIndex);
ErrorNumber WriteFluxCapture(ulong indexResolution, ulong dataResolution, byte[] indexBuffer, byte[] dataBuffer,
uint head, ushort track, byte subTrack, uint captureIndex);
/// <summary>Writes a capture's index stream.</summary>
/// <returns>Error number</returns>
@@ -66,7 +66,7 @@ public interface IWritableFluxImage : IFluxImage, IWritableImage
/// <param name="subTrack">Physical sub-step of track (e.g. half-track)</param>
/// <param name="captureIndex">Which capture to read. See also <see cref="CapturesLength" /></param>
ErrorNumber WriteFluxIndexCapture(ulong resolution, byte[] index, uint head, ushort track, byte subTrack,
uint captureIndex);
uint captureIndex);
/// <summary>Writes a capture's data stream.</summary>
/// <returns>Error number</returns>
@@ -77,5 +77,5 @@ public interface IWritableFluxImage : IFluxImage, IWritableImage
/// <param name="subTrack">Physical sub-step of track (e.g. half-track)</param>
/// <param name="captureIndex">Which capture to read. See also <see cref="CapturesLength" /></param>
ErrorNumber WriteFluxDataCapture(ulong resolution, byte[] data, uint head, ushort track, byte subTrack,
uint captureIndex);
uint captureIndex);
}

View File

@@ -126,8 +126,10 @@ public static class DetectOS
int error = uname(out utsname unixname);
if(error != 0)
{
throw new Exception(string.Format(Localization.Unhandled_exception_calling_uname_0,
Marshal.GetLastWin32Error()));
}
switch(unixname.sysname)
{
@@ -173,43 +175,63 @@ public static class DetectOS
Marshal.FreeHGlobal(pLen);
if(machine != null &&
(machine.StartsWith("iPad", StringComparison.Ordinal) ||
machine.StartsWith("iPod", StringComparison.Ordinal) ||
(machine.StartsWith("iPad", StringComparison.Ordinal) ||
machine.StartsWith("iPod", StringComparison.Ordinal) ||
machine.StartsWith("iPhone", StringComparison.Ordinal)))
return PlatformID.iOS;
return PlatformID.MacOSX;
}
case "GNU": return PlatformID.Hurd;
case "GNU":
return PlatformID.Hurd;
case "FreeBSD":
case "GNU/kFreeBSD": return PlatformID.FreeBSD;
case "DragonFly": return PlatformID.DragonFly;
case "Haiku": return PlatformID.Haiku;
case "HP-UX": return PlatformID.HPUX;
case "AIX": return PlatformID.AIX;
case "OS400": return PlatformID.OS400;
case "GNU/kFreeBSD":
return PlatformID.FreeBSD;
case "DragonFly":
return PlatformID.DragonFly;
case "Haiku":
return PlatformID.Haiku;
case "HP-UX":
return PlatformID.HPUX;
case "AIX":
return PlatformID.AIX;
case "OS400":
return PlatformID.OS400;
case "IRIX":
case "IRIX64": return PlatformID.IRIX;
case "Minix": return PlatformID.Minix;
case "NetBSD": return PlatformID.NetBSD;
case "NONSTOP_KERNEL": return PlatformID.NonStop;
case "OpenBSD": return PlatformID.OpenBSD;
case "QNX": return PlatformID.QNX;
case "SINIX-Y": return PlatformID.SINIX;
case "SunOS": return PlatformID.Solaris;
case "OSF1": return PlatformID.Tru64;
case "ULTRIX": return PlatformID.Ultrix;
case "SCO_SV": return PlatformID.OpenServer;
case "UnixWare": return PlatformID.UnixWare;
case "IRIX64":
return PlatformID.IRIX;
case "Minix":
return PlatformID.Minix;
case "NetBSD":
return PlatformID.NetBSD;
case "NONSTOP_KERNEL":
return PlatformID.NonStop;
case "OpenBSD":
return PlatformID.OpenBSD;
case "QNX":
return PlatformID.QNX;
case "SINIX-Y":
return PlatformID.SINIX;
case "SunOS":
return PlatformID.Solaris;
case "OSF1":
return PlatformID.Tru64;
case "ULTRIX":
return PlatformID.Ultrix;
case "SCO_SV":
return PlatformID.OpenServer;
case "UnixWare":
return PlatformID.UnixWare;
case "Interix":
case "UWIN-W7": return PlatformID.Win32NT;
case "UWIN-W7":
return PlatformID.Win32NT;
default:
{
if(unixname.sysname.StartsWith("CYGWIN_NT", StringComparison.Ordinal) ||
if(unixname.sysname.StartsWith("CYGWIN_NT", StringComparison.Ordinal) ||
unixname.sysname.StartsWith("MINGW32_NT", StringComparison.Ordinal) ||
unixname.sysname.StartsWith("MSYS_NT", StringComparison.Ordinal) ||
unixname.sysname.StartsWith("UWIN", StringComparison.Ordinal))
unixname.sysname.StartsWith("MSYS_NT", StringComparison.Ordinal) ||
unixname.sysname.StartsWith("UWIN", StringComparison.Ordinal))
return PlatformID.Win32NT;
return PlatformID.Unknown;
@@ -234,20 +256,25 @@ public static class DetectOS
switch(Environment.OSVersion.Version.Minor)
{
case 3: return "10.0";
case 4: return "10.1";
case 3:
return "10.0";
case 4:
return "10.1";
}
goto default;
case PlatformID.Win32NT:
// From Windows 8.1 the reported version is simply falsified...
if(Environment.OSVersion.Version.Major is 6 and >= 2 or > 6)
{
return FileVersionInfo.
GetVersionInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System),
"KERNEL32.DLL")).ProductVersion;
}
return environ;
default: return environ;
default:
return environ;
}
}
@@ -259,15 +286,24 @@ public static class DetectOS
{
switch(id)
{
case PlatformID.AIX: return "AIX";
case PlatformID.Android: return "Android";
case PlatformID.DragonFly: return "DragonFly BSD";
case PlatformID.FreeBSD: return "FreeBSD";
case PlatformID.Haiku: return "Haiku";
case PlatformID.HPUX: return "HP/UX";
case PlatformID.Hurd: return "Hurd";
case PlatformID.iOS: return "iOS";
case PlatformID.IRIX: return "IRIX";
case PlatformID.AIX:
return "AIX";
case PlatformID.Android:
return "Android";
case PlatformID.DragonFly:
return "DragonFly BSD";
case PlatformID.FreeBSD:
return "FreeBSD";
case PlatformID.Haiku:
return "Haiku";
case PlatformID.HPUX:
return "HP/UX";
case PlatformID.Hurd:
return "Hurd";
case PlatformID.iOS:
return "iOS";
case PlatformID.IRIX:
return "IRIX";
case PlatformID.Linux:
if(!File.Exists("/proc/version"))
return "Linux";
@@ -294,24 +330,42 @@ public static class DetectOS
return minor >= 8 ? "OS X" : "Mac OS X";
case PlatformID.Minix: return "MINIX";
case PlatformID.NetBSD: return "NetBSD";
case PlatformID.NonStop: return "NonStop OS";
case PlatformID.OpenBSD: return "OpenBSD";
case PlatformID.OpenServer: return "SCO OpenServer";
case PlatformID.OS400: return "OS/400";
case PlatformID.PlayStation3: return "Sony CellOS";
case PlatformID.PlayStation4: return "Sony Orbis OS";
case PlatformID.QNX: return "QNX";
case PlatformID.SINIX: return "SINIX";
case PlatformID.Solaris: return "Sun Solaris";
case PlatformID.Tizen: return "Samsung Tizen";
case PlatformID.Tru64: return "Tru64 UNIX";
case PlatformID.Ultrix: return "Ultrix";
case PlatformID.Unix: return "UNIX";
case PlatformID.UnixWare: return "SCO UnixWare";
case PlatformID.Wii: return "Nintendo Wii";
case PlatformID.WiiU: return "Nintendo Wii U";
case PlatformID.Minix:
return "MINIX";
case PlatformID.NetBSD:
return "NetBSD";
case PlatformID.NonStop:
return "NonStop OS";
case PlatformID.OpenBSD:
return "OpenBSD";
case PlatformID.OpenServer:
return "SCO OpenServer";
case PlatformID.OS400:
return "OS/400";
case PlatformID.PlayStation3:
return "Sony CellOS";
case PlatformID.PlayStation4:
return "Sony Orbis OS";
case PlatformID.QNX:
return "QNX";
case PlatformID.SINIX:
return "SINIX";
case PlatformID.Solaris:
return "Sun Solaris";
case PlatformID.Tizen:
return "Samsung Tizen";
case PlatformID.Tru64:
return "Tru64 UNIX";
case PlatformID.Ultrix:
return "Ultrix";
case PlatformID.Unix:
return "UNIX";
case PlatformID.UnixWare:
return "SCO UnixWare";
case PlatformID.Wii:
return "Nintendo Wii";
case PlatformID.WiiU:
return "Nintendo Wii U";
case PlatformID.Win32NT:
if(string.IsNullOrEmpty(version))
return "Windows NT/2000/XP/Vista/7/10";
@@ -344,10 +398,12 @@ public static class DetectOS
if(version.StartsWith("10.0", StringComparison.Ordinal))
return "Windows 10";
return version.StartsWith("11.0", StringComparison.Ordinal) ? "Windows 11"
return version.StartsWith("11.0", StringComparison.Ordinal)
? "Windows 11"
: "Windows NT/2000/XP/Vista/7/10/11";
case PlatformID.Win32S: return "Windows 3.x with win32s";
case PlatformID.Win32S:
return "Windows 3.x with win32s";
case PlatformID.Win32Windows:
if(string.IsNullOrEmpty(version))
return "Windows 9x/Me";
@@ -363,14 +419,21 @@ public static class DetectOS
return version.StartsWith("4.9", StringComparison.Ordinal) ? "Windows Me" : "Windows 9x/Me";
case PlatformID.WinCE: return "Windows CE/Mobile";
case PlatformID.WindowsPhone: return "Windows Phone";
case PlatformID.Xbox: return "Xbox OS";
case PlatformID.zOS: return "z/OS";
default: return id.ToString();
case PlatformID.WinCE:
return "Windows CE/Mobile";
case PlatformID.WindowsPhone:
return "Windows Phone";
case PlatformID.Xbox:
return "Xbox OS";
case PlatformID.zOS:
return "z/OS";
default:
return id.ToString();
}
}
#region Nested type: utsname
/// <summary>POSIX uname structure, size from OSX, big enough to handle extra fields</summary>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
struct utsname
@@ -391,4 +454,6 @@ public static class DetectOS
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public readonly string machine;
}
#endregion
}

View File

@@ -55,10 +55,7 @@ public static class Version
{
Assembly assembly = typeof(GCSettings).Assembly;
string[] assemblyPath = assembly.CodeBase?.Split(new[]
{
'/', '\\'
}, StringSplitOptions.RemoveEmptyEntries);
string[] assemblyPath = assembly.CodeBase?.Split(new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries);
if(assemblyPath is null)
return null;

View File

@@ -1,621 +1,631 @@
<root>
<!-- ReSharper disable MarkupTextTypo -->
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Drive_manufacturer_is_SyQuest_media_has_1961069_blocks_of_512_bytes_setting_media_type_to_SparQ" xml:space="preserve">
<!-- ReSharper disable MarkupTextTypo -->
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Drive_manufacturer_is_SyQuest_media_has_1961069_blocks_of_512_bytes_setting_media_type_to_SparQ"
xml:space="preserve">
<value>El fabricante es SyQuest, el medio tiene 1961069 bloques de 512 bytes, estableciendo tipo como SparQ.</value>
</data>
<data name="Exception_0" xml:space="preserve">
<data name="Exception_0" xml:space="preserve">
<value>Excepción {0}</value>
</data>
<data name="IDENTIFY_response_is_different_than_512_bytes_not_decoding" xml:space="preserve">
<data name="IDENTIFY_response_is_different_than_512_bytes_not_decoding" xml:space="preserve">
<value>La respuesta a IDENTIFY es diferente de 512, no se decodificará.</value>
</data>
<data name="INQUIRY_response_is_0_bytes_less_than_minimum_of_36_bytes" xml:space="preserve">
<data name="INQUIRY_response_is_0_bytes_less_than_minimum_of_36_bytes" xml:space="preserve">
<value>La respuesta a INQUIRY es de {0} bytes, menor del mínimo de 36 bytes, los datos decodificados podrían ser incorrect, no se decodificará.</value>
</data>
<data name="INQUIRY_response_length_0_bytes_is_different_than_specified_in_length_field" xml:space="preserve">
<data name="INQUIRY_response_length_0_bytes_is_different_than_specified_in_length_field" xml:space="preserve">
<value>El tamaño de la respuesta a INQUIRY ({0} bytes) es diferente a la especificada en el campo de longitud ({1} bytes), los datos decodificados podrían ser incorrectos, no se decodificará.</value>
</data>
<data name="SCSI_Media_Type_Description_Acorn_MD1DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Acorn_MD1DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 5¼" en formato Acorn.</value>
</data>
<data name="SCSI_Media_Type_Description_Acorn_MD1DD_80" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Acorn_MD1DD_80" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 5¼" y 80 pistas en formato Acorn.</value>
</data>
<data name="SCSI_Media_Type_Description_Acorn_MD1SD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Acorn_MD1SD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de densidad sencilla de 5¼" en formato Acorn.</value>
</data>
<data name="SCSI_Media_Type_Description_Acorn_MF2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Acorn_MF2DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 3½" en formato Acorn.</value>
</data>
<data name="SCSI_Media_Type_Description_Acorn_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Acorn_MF2HD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de alta densidad de 3½" en formato Acorn.</value>
</data>
<data name="SCSI_Media_Type_Description_Amiga_MF2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Amiga_MF2DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 3½" en formato Amiga.</value>
</data>
<data name="SCSI_Media_Type_Description_Amiga_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Amiga_MF2HD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de alta densidad de 3½" en formato Amiga.</value>
</data>
<data name="SCSI_Media_Type_Description_Apple_DOS32" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apple_DOS32" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 5¼" en formato Apple DOS 3.2.</value>
</data>
<data name="SCSI_Media_Type_Description_Apple_DOS32_DS" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apple_DOS32_DS" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 5¼" de doble cara en formato Apple DOS 3.2</value>
</data>
<data name="SCSI_Media_Type_Description_Apple_DOS33" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apple_DOS33" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 5¼" en formato Apple DOS 3.3</value>
</data>
<data name="SCSI_Media_Type_Description_Apple_DOS33_DS" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apple_DOS33_DS" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 5¼" de doble cara en formato Apple DOS 3.3</value>
</data>
<data name="SCSI_Media_Type_Description_Apple_MF1DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apple_MF1DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad y una cara de 3½" en formato Apple.</value>
</data>
<data name="SCSI_Media_Type_Description_Apricot_MF2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apricot_MF2DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 3½" en formato Apricot.</value>
</data>
<data name="SCSI_Media_Type_Description_Atari_MD1SD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Atari_MD1SD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de densidad sencilla de 5¼" en formato Atari.</value>
</data>
<data name="SCSI_Media_Type_Description_Atari_MD1DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Atari_MD1DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 5¼" en formato Acorn.</value>
</data>
<data name="SCSI_Media_Type_Description_Bernoulli10" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Bernoulli10" xml:space="preserve">
<value>El fabricante es IOMEGA, el medio tiene {0} bloques de 256 bytes, estableciendo tipo como Bernoulli Box de 10Mb.</value>
</data>
<data name="SCSI_Media_Type_Description_Bernoulli2_150" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Bernoulli2_150" xml:space="preserve">
<value>El fabricante es IOMEGA, el medio tiene 294918 bloques de 512 bytes, estableciendo tipo como Bernoulli Box II de 150Mb.</value>
</data>
<data name="SCSI_Media_Type_Description_Bernoulli2_44" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Bernoulli2_44" xml:space="preserve">
<value>El fabricante es IOMEGA, el medio tiene 87040 bloques de 512 bytes, estableciendo tipo como Bernoulli Box II de 44Mb.</value>
</data>
<data name="SCSI_Media_Type_Description_Bernoulli2_90" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Bernoulli2_90" xml:space="preserve">
<value>El fabricante es IOMEGA, el medio tiene 175856 bloques de 512 bytes, estableciendo tipo como Bernoulli Box II de 90Mb.</value>
</data>
<data name="SCSI_Media_Type_Description_CompactTape" xml:space="preserve">
<data name="SCSI_Media_Type_Description_CompactTape" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, el modelo de la unidad comienza con "dlt", estableciendo tipo como CompacTape.</value>
</data>
<data name="SCSI_Media_Type_Description_CompactTapeII" xml:space="preserve">
<data name="SCSI_Media_Type_Description_CompactTapeII" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, el modelo de la unidad comienza con "dlt", estableciendo tipo como CompacTape II.</value>
</data>
<data name="SCSI_Media_Type_Description_DLTtapeIII" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DLTtapeIII" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, el modelo de la unidad comienza con "dlt", estableciendo tipo como DLTtapeIII.</value>
</data>
<data name="SCSI_Media_Type_Description_DLTtapeIIIxt" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DLTtapeIIIxt" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, el modelo de la unidad comienza con "dlt", estableciendo tipo como DLTtape IIIxt.</value>
</data>
<data name="SCSI_Media_Type_Description_DLTtapeIV" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DLTtapeIV" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, el modelo de la unidad comienza con "dlt", estableciendo tipo como DLTtape IV.</value>
</data>
<data name="SCSI_Media_Type_Description_DAT72_dat" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DAT72_dat" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, el modelo de la unidad comienza con "dat", estableciendo tipo como DAT72.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS2_dat" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS2_dat" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, el modelo de la unidad comienza con "dat", estableciendo tipo como DDS-2.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS3_dat" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS3_dat" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, el modelo de la unidad comienza con "dat", estableciendo tipo como DDS-3.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS4_alt" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS4_alt" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, el modelo de la unidad comienza con "dat", estableciendo tipo como DDS-4.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como DDS.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS2" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como DDS-2.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS3" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS3" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como DDS-3.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS4" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS4" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como DDS-4.</value>
</data>
<data name="SCSI_Media_Type_Description_DEC_RX02" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DEC_RX02" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete DEC RX02.</value>
</data>
<data name="SCSI_Media_Type_Description_DMF_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DMF_MF2HD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de alta densidad de 3½" en formato Microsoft DMF.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA154" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA154" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 3½" conforme con ECMA-154 / ISO 10090.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA201" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA201" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 3½" conforme con ECMA-201 / ISO 13963.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA201_embossed" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA201_embossed" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico estampado de 3½" conforme con ECMA-201 / ISO 13963.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA223" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA223" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 3½" conforme con ECMA-223.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA239" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA239" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 3½" conforme con ECMA-239 / ISO 15498.</value>
</data>
<data name="SCSI_Media_Type_Description_FDFORMAT_MF2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_FDFORMAT_MF2DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 3½" en formato FDFORMAT.</value>
</data>
<data name="SCSI_Media_Type_Description_FDFORMAT_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_FDFORMAT_MF2HD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de alta densidad de 3½" en formato FDFORMAT.</value>
</data>
<data name="SCSI_Media_Type_Description_GigaMO" xml:space="preserve">
<data name="SCSI_Media_Type_Description_GigaMO" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 3½" modelo GigaMO.</value>
</data>
<data name="SCSI_Media_Type_Description_GigaMO2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_GigaMO2" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 3½" modelo GigaMO 2.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF1DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF1DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad y una cara de 3½" con formato IBM.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF1DD_8" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF1DD_8" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad y una cara de 3½" con formato IBM (8 sectores).</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF2DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 3½" con formato IBM.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF2DD_8" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF2DD_8" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 3½" con formato IBM (8 sectores).</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF2ED" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF2ED" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de densidad extra de 3½" con formato IBM.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF2HD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de alta densidad de 3½" con formato IBM.</value>
</data>
<data name="SCSI_Media_Type_Description_LS_PC98_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LS_PC98_MF2HD" xml:space="preserve">
<value>El modelo de la unidad es LS (SuperDisk), el medio tiene 2880 bloques de 512 bytes, estableciendo tipo como disquete de alta densidad de 3½" con formato PC-98.</value>
</data>
<data name="SCSI_Media_Type_Description_PC98_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_PC98_MF2HD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de alta densidad de 3½" con formato PC-98.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA183" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA183" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 5¼" conforme con ECMA-183 / ISO 13481.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA184" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA184" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 5¼" conforme con ECMA-184 / ISO 13549.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA195" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA195" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 5¼" conforme con ECMA-195 / ISO 13482.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA238" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA238" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 5¼" conforme con ECMA-238 / ISO 15486.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA280" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA280" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 5¼" conforme con ECMA-280 / ISO 18093.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA322" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA322" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 5¼" conforme con ECMA-322 / ISO 22092.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA260" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA260" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 356mm conforme con ECMA-260 / ISO 15898.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA317" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA317" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 300mm conforme con ECMA-317 / ISO 20162.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA56" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA56" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 5¼" en formato ECMA-56.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA66" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA66" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 5¼" en formato ECMA-66.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA70" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA70" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 5¼" en formato ECMA-70.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA78" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA78" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 5¼" en formato ECMA-78.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA99" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA99" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 5¼" en formato ECMA-99.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA54" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA54" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 8" en formato ECMA-54.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA59" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA59" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 8" en formato ECMA-59.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA69" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA69" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 8" en formato ECMA-69.</value>
</data>
<data name="SCSI_Media_Type_Description_FDFORMAT_MD2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_FDFORMAT_MD2HD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de alta densidad de 5¼" en formato FDFORMAT.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MD1DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MD1DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad y una cara de 5¼" en formato IBM.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MD1DD_8" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MD1DD_8" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad y una cara de 5¼" en formato IBM (8 sectores).</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MD2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MD2DD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 5¼" en formato IBM.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MD2DD_8" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MD2DD_8" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad de 5¼" en formato IBM (8 sectores.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MD2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MD2HD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de alta densidad de 5¼" en formato IBM.</value>
</data>
<data name="SCSI_Media_Type_Description_ISO10089" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ISO10089" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 5¼" conforme con ISO 10089.</value>
</data>
<data name="SCSI_Media_Type_Description_ISO14517" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ISO14517" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 5¼" conforme con ISO 14517.</value>
</data>
<data name="SCSI_Media_Type_Description_ISO15041" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ISO15041" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 3½" conforme con ISO 15041.</value>
</data>
<data name="SCSI_Media_Type_Description_ISO15286" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ISO15286" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico de 5¼" conforme con ISO 15286.</value>
</data>
<data name="SCSI_Media_Type_Description_LS120" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LS120" xml:space="preserve">
<value>El modelo de la unidad es LS (SuperDisk), el medio tiene 246528 bloques de 512 bytes, estableciendo tipo como LS-120.</value>
</data>
<data name="SCSI_Media_Type_Description_LS240" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LS240" xml:space="preserve">
<value>El modelo de la unidad es LS (SuperDisk), el medio tiene 469504 bloques de 512 bytes, estableciendo tipo como LS-120.</value>
</data>
<data name="SCSI_Media_Type_Description_JAZ" xml:space="preserve">
<data name="SCSI_Media_Type_Description_JAZ" xml:space="preserve">
<value>El fabricante de la unidad es IOMEGA, el modelo es JAZ y el medio tiene 2091050 bloques de 512 bytes, estableciendo tipo como JAZ de 1Gb.</value>
</data>
<data name="SCSI_Media_Type_Description_JAZ2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_JAZ2" xml:space="preserve">
<value>El fabricante de la unidad es IOMEGA, el modelo es JAZ y el medio tiene 3915600 bloques de 512 bytes, estableciendo tipo como JAZ de 2Gb.</value>
</data>
<data name="SCSI_Media_Type_Description_ZIP100" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ZIP100" xml:space="preserve">
<value>El fabricante de la unidad es IOMEGA, el modelo es ZIP y el medio tiene 196608 bloques de 512 bytes, estableciendo tipo como ZIP de 100Mb.</value>
</data>
<data name="SCSI_Media_Type_Description_ZIP250" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ZIP250" xml:space="preserve">
<value>El fabricante de la unidad es IOMEGA, el modelo es ZIP y el medio tiene 196608 bloques de 512 bytes, estableciendo tipo como ZIP de 250Mb.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como LTO.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO2" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como LTO-2.</value>
</data>
<data name="SCSI_Media_Type_Description_QIC11" xml:space="preserve">
<data name="SCSI_Media_Type_Description_QIC11" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como QIC-11.</value>
</data>
<data name="SCSI_Media_Type_Description_QIC120" xml:space="preserve">
<data name="SCSI_Media_Type_Description_QIC120" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como QIC-120.</value>
</data>
<data name="SCSI_Media_Type_Description_QIC150" xml:space="preserve">
<data name="SCSI_Media_Type_Description_QIC150" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como QIC-150.</value>
</data>
<data name="SCSI_Media_Type_Description_QIC24" xml:space="preserve">
<data name="SCSI_Media_Type_Description_QIC24" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como QIC-24.</value>
</data>
<data name="SCSI_Media_Type_Description_Travan5" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Travan5" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como Travan 5.</value>
</data>
<data name="SCSI_Media_Type_Description_Travan4" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Travan4" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como Travan 4.</value>
</data>
<data name="SCSI_Media_Type_Description_T10000A" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T10000A" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el fabricante es StorageTek, estableciendo tipo como T10000A.</value>
</data>
<data name="SCSI_Media_Type_Description_T10000B" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T10000B" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el fabricante es StorageTek, estableciendo tipo como T10000B.</value>
</data>
<data name="SCSI_Media_Type_Description_T10000C" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T10000C" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el fabricante es StorageTek, estableciendo tipo como T10000C.</value>
</data>
<data name="SCSI_Media_Type_Description_T10000D" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T10000D" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el fabricante es StorageTek, estableciendo tipo como T10000D.</value>
</data>
<data name="SCSI_Media_Type_Description_T9840A" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T9840A" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el fabricante es StorageTek, estableciendo tipo como T9840A.</value>
</data>
<data name="SCSI_Media_Type_Description_T9840D" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T9840D" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el fabricante es StorageTek, estableciendo tipo como T9840D.</value>
</data>
<data name="SCSI_Media_Type_Description_T9940A" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T9940A" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el fabricante es StorageTek, estableciendo tipo como T9940A.</value>
</data>
<data name="SCSI_Media_Type_Description_T9940B" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T9940B" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el fabricante es StorageTek, estableciendo tipo como T9940B.</value>
</data>
<data name="SCSI_Media_Type_Description_T9940C" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T9940C" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el fabricante es StorageTek, estableciendo tipo como T9840C.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_106m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_106m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 106m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_112m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_112m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 112m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_125m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_125m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 125m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_150m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_150m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 150m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_15m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_15m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 15m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_160m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_160m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape XL de 160m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_170m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_170m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 170m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_225m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_225m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 225m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_22m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_22m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 22m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_22m_AME" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_22m_AME" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape AME de 22m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_28m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_28m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 28m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_40m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_40m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 40m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_45m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_45m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 45m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_54m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_54m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 54m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_75m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_75m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 75m.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_76m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_76m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 76.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_80m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_80m" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "exb", estableciendo tipo como Exatape de 80m.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO2_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO2_ult" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO-2.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO3" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO3" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO-3.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO4" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO4" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO-4.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO5" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO5" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO-5.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO6_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO6_ult" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO-6.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO7_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO7_ult" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO-7.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO_ult" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO.</value>
</data>
<data name="SCSI_Media_Type_Description_SAIT" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SAIT" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "sdz", estableciendo tipo como Super AIT.</value>
</data>
<data name="SCSI_Media_Type_Description_SDLT" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SDLT" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "dlt", estableciendo tipo como SuperDLT.</value>
</data>
<data name="SCSI_Media_Type_Description_SDLT2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SDLT2" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "dlt", estableciendo tipo como SuperDLT 2.</value>
</data>
<data name="SCSI_Media_Type_Description_Travan5_stt" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Travan5_stt" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "stt", estableciendo tipo como Travan 5.</value>
</data>
<data name="SCSI_Media_Type_Description_Travan7" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Travan7" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "stt", estableciendo tipo como Travan 7.</value>
</data>
<data name="SCSI_Media_Type_Description_VStape" xml:space="preserve">
<data name="SCSI_Media_Type_Description_VStape" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "dlt", estableciendo tipo como VStape I.</value>
</data>
<data name="SCSI_Media_Type_Description_VXA" xml:space="preserve">
<data name="SCSI_Media_Type_Description_VXA" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "vxa", estableciendo tipo como VXA.</value>
</data>
<data name="SCSI_Media_Type_Description_VXA2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_VXA2" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "vxa", estableciendo tipo como VXA 2.</value>
</data>
<data name="SCSI_Media_Type_Description_VXA3" xml:space="preserve">
<data name="SCSI_Media_Type_Description_VXA3" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "vxa", estableciendo tipo como VXA 3.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_LTO3" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_LTO3" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como WORM LTO-3.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_LTO4" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_LTO4" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como WORM LTO-4.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_LTO5" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_LTO5" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como WORM LTO-5.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_LTO6_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_LTO6_ult" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como WORM LTO-6.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_LTO7_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_LTO7_ult" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "uly", estableciendo tipo como WORM LTO-7.</value>
</data>
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO2" xml:space="preserve">
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO2"
xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO-2.</value>
</data>
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO3" xml:space="preserve">
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO3"
xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO-3.</value>
</data>
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO4" xml:space="preserve">
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO4"
xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO-4.</value>
</data>
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO5" xml:space="preserve">
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO5"
xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el modelo de la unidad comienza por "ult", estableciendo tipo como LTO-5.</value>
</data>
<data name="SCSI_Media_Type_Description_Floptical" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Floptical" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como Floptical.</value>
</data>
<data name="SCSI_Media_Type_Description_HiMD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_HiMD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como Sony HiMD.</value>
</data>
<data name="SCSI_Media_Type_Description_MD60" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD60" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como MiniDisc de 60 minutos.</value>
</data>
<data name="SCSI_Media_Type_Description_MD74" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD74" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como MiniDisc de 74 minutos.</value>
</data>
<data name="SCSI_Media_Type_Description_MD80" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD80" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como MiniDisc de 80 minutos.</value>
</data>
<data name="SCSI_Media_Type_Description_REV120" xml:space="preserve">
<data name="SCSI_Media_Type_Description_REV120" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como REV de 120Gb.</value>
</data>
<data name="SCSI_Media_Type_Description_REV35" xml:space="preserve">
<data name="SCSI_Media_Type_Description_REV35" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como REV de 35Gb.</value>
</data>
<data name="SCSI_Media_Type_Description_REV70" xml:space="preserve">
<data name="SCSI_Media_Type_Description_REV70" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como REV de 70Gb.</value>
</data>
<data name="SCSI_Media_Type_Description_UDO" xml:space="preserve">
<data name="SCSI_Media_Type_Description_UDO" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como UDO.</value>
</data>
<data name="SCSI_Media_Type_Description_UDO2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_UDO2" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como UDO2.</value>
</data>
<data name="SCSI_Media_Type_Description_Unknown" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Unknown" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como desconocido.</value>
</data>
<data name="SCSI_Media_Type_Description_Unknown_MO" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Unknown_MO" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como magneto-óptico desconocido.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_UDO2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_UDO2" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como WORM UDO 2.</value>
</data>
<data name="SCSI_medium_type_is_0_media_has_1_blocks_of_2_bytes_setting_media_type_to_PD_650" xml:space="preserve">
<data name="SCSI_medium_type_is_0_media_has_1_blocks_of_2_bytes_setting_media_type_to_PD_650" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como PD-650.</value>
</data>
<data name="SCSI_medium_type_is_0_media_has_1_blocks_of_2_bytes_setting_media_type_to_WORM_PD_650" xml:space="preserve">
<data name="SCSI_medium_type_is_0_media_has_1_blocks_of_2_bytes_setting_media_type_to_WORM_PD_650"
xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como WORM PD-650.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_23FD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_23FD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 8" en formato IBM 23FD.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_33FD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_33FD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 8" en formato IBM 33FD.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_43FD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_43FD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 8" en formato IBM 43FD.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_53FD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_53FD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de 8" en formato IBM 53FD.</value>
</data>
<data name="SCSI_Media_Type_Description_PC98_MD2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_PC98_MD2HD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de alta densidad de 5¼" en formato PC-98.</value>
</data>
<data name="SCSI_Media_Type_Description_Sharp_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Sharp_MF2HD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de alta densidad de 3½" con formato Sharp.</value>
</data>
<data name="SCSI_Media_Type_Description_HF12" xml:space="preserve">
<data name="SCSI_Media_Type_Description_HF12" xml:space="preserve">
<value>El medio tiene 46956 bloques de 256 bytes, estableciendo tipo como HyperFlex de 12Mb.</value>
</data>
<data name="SCSI_Media_Type_Description_HF24" xml:space="preserve">
<data name="SCSI_Media_Type_Description_HF24" xml:space="preserve">
<value>El medio tiene 46956 bloques de 256 bytes, estableciendo tipo como HyperFlex de 24Mb.</value>
</data>
<data name="SCSI_Media_Type_Description_Orb" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Orb" xml:space="preserve">
<value>El modelo de la unidad es Castlewood Orb, el medio tiene 4307184 bloques de 512 bytes, estableciendo tipo como Orb.</value>
</data>
<data name="SCSI_Media_Type_Description_RDX320" xml:space="preserve">
<data name="SCSI_Media_Type_Description_RDX320" xml:space="preserve">
<value>El modelo de la unidad es RDX, el medio tiene {0} bloques de {1} bytes, estableciendo tipo como RDX320.</value>
</data>
<data name="SCSI_Media_Type_Description_SQ2000" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SQ2000" xml:space="preserve">
<value>El fabricante de la unidad es SyQuest, el medio tiene 390696 bloques de 512 bytes, estableciendo tipo como SQ2000.</value>
</data>
<data name="SCSI_Media_Type_Description_SQ310" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SQ310" xml:space="preserve">
<value>El fabricante de la unidad es SyQuest, el medio tiene 215440 bloques de 512 bytes, estableciendo tipo como SQ310.</value>
</data>
<data name="SCSI_Media_Type_Description_SQ327" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SQ327" xml:space="preserve">
<value>El fabricante de la unidad es SyQuest, el medio tiene 524288 bloques de 512 bytes, estableciendo tipo como SQ327.</value>
</data>
<data name="SCSI_Media_Type_Description_SQ400" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SQ400" xml:space="preserve">
<value>El fabricante de la unidad es SyQuest, el medio tiene 87600 bloques de 512 bytes, estableciendo tipo como SQ400.</value>
</data>
<data name="SCSI_Media_Type_Description_SQ800" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SQ800" xml:space="preserve">
<value>El fabricante de la unidad es SyQuest, el medio tiene 173456 bloques de 512 bytes, estableciendo tipo como SQ800.</value>
</data>
<data name="SCSI_Media_Type_Description_SyJet" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SyJet" xml:space="preserve">
<value>El fabricante de la unidad es SyQuest, el medio tiene 2929800 bloques de 512 bytes, estableciendo tipo como SyJet.</value>
</data>
<data name="SCSI_Media_Type_Description_PocketZIP" xml:space="preserve">
<data name="SCSI_Media_Type_Description_PocketZIP" xml:space="preserve">
<value>El fabricante de la unidad es IOMEGA, el medio tiene 78882 bloques de 512 bytes, estableciendo tipo como PocketZIP.</value>
</data>
<data name="SCSI_Media_Type_Description_HiFD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_HiFD" xml:space="preserve">
<value>El modelo de la unidad es HiFD, el medio tiene 393380 bloques de 512 bytes, estableciendo tipo como HiFD.</value>
</data>
<data name="SCSI_Media_Type_Description_FD32MB" xml:space="preserve">
<data name="SCSI_Media_Type_Description_FD32MB" xml:space="preserve">
<value>El modelo de la unidad es LS (SuperDisk), el medio tiene 65536 bloques de 512 bytes, estableciendo tipo como FD32MB.</value>
</data>
<data name="SCSI_Media_Type_Description_EZ135" xml:space="preserve">
<data name="SCSI_Media_Type_Description_EZ135" xml:space="preserve">
<value>El fabricante es SyQuest, el medio tiene 262144 bloques de 512 bytes, estableciendo tipo como EZ135.</value>
</data>
<data name="SCSI_Media_Type_Description_EZ230" xml:space="preserve">
<data name="SCSI_Media_Type_Description_EZ230" xml:space="preserve">
<value>El fabricante es SyQuest, el medio tiene 450560 bloques de 512 bytes, estableciendo tipo como EZ230.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM3490" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM3490" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como IBM 3490.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM3490E" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM3490E" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h, estableciendo tipo como IBM 3490E.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM3592" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM3592" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el código de densidad es {1:X2}h y el fabricante de la unidad es IBM, estableciendo tipo como IBM 3592.</value>
</data>
<data name="SCSI_Media_Type_Description_MD60_MDDATA" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD60_MDDATA" xml:space="preserve">
<value>El tipo de periférico SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como MiniDisc de 60 minutos.</value>
</data>
<data name="SCSI_Media_Type_Description_MD74_MDDATA" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD74_MDDATA" xml:space="preserve">
<value>El tipo de periférico SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como MiniDisc de 74 minutos.</value>
</data>
<data name="SCSI_Media_Type_Description_MD80_MDDATA" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD80_MDDATA" xml:space="preserve">
<value>El tipo de periférico SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como MiniDisc de 80 minutos.</value>
</data>
<data name="SCSI_Media_Type_Description_MDDATA" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MDDATA" xml:space="preserve">
<value>El tipo de periférico SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como MiniDisc for Data.</value>
</data>
<data name="SCSI_Media_Type_Description_MetaFloppy" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MetaFloppy" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, el medio tiene {1} bloques de {2} bytes, estableciendo tipo como disquete de doble densidad y una cara de 5¼" en formato MetaFloppy.</value>
</data>
<data name="SCSI_Media_Type_Description_ZBC_Host_Managed" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ZBC_Host_Managed" xml:space="preserve">
<value>El tipo de periférico SCSI es {0:X2}h, estableciendo tipo como dispositivo de zonas de bloques gestionado.</value>
</data>
<data name="SCSI_medium_type_is_0_and_device_is_USB_setting_media_type_to_Flash_Drive" xml:space="preserve">
<data name="SCSI_medium_type_is_0_and_device_is_USB_setting_media_type_to_Flash_Drive" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h y el dispositivo es USB, estableciendo tipo como unidad Flash.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_CDR" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_CDR" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, estableciendo tipo como CD-R.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_CDRW" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_CDRW" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, estableciendo tipo como CD-RW.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_CD_Plus" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_CD_Plus" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, estableciendo tipo como CD+.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_CD_ROM" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_CD_ROM" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, estableciendo tipo como CD-ROM.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_Compact_Disc" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_Compact_Disc" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, estableciendo tipo como Compact Disc.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_Compact_Disc_Digital_Audio" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_Compact_Disc_Digital_Audio" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, estableciendo tipo como Compact Disc Digital Audio.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_Photo_CD" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_Photo_CD" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, estableciendo tipo como Photo CD.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_unknown_magneto_optical" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_unknown_magneto_optical" xml:space="preserve">
<value>El tipo de medio SCSI es {0:X2}h, estableciendo tipo como magneto-óptico desconocido.</value>
</data>
<data name="Unhandled_exception_calling_uname_0" xml:space="preserve">
<data name="Unhandled_exception_calling_uname_0" xml:space="preserve">
<value>Excepción no manejada llamando a uname: {0}</value>
</data>
</root>

View File

@@ -1,636 +1,638 @@
<?xml version="1.0" encoding="utf-8" ?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true"></xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Unhandled_exception_calling_uname_0" xml:space="preserve">
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true"></xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Unhandled_exception_calling_uname_0" xml:space="preserve">
<value>Unhandled exception calling uname: {0}</value>
</data>
<data name="Drive_manufacturer_is_SyQuest_media_has_1961069_blocks_of_512_bytes_setting_media_type_to_SparQ"
xml:space="preserve">
<data name="Drive_manufacturer_is_SyQuest_media_has_1961069_blocks_of_512_bytes_setting_media_type_to_SparQ"
xml:space="preserve">
<value>Drive manufacturer is SyQuest, media has 1961069 blocks of 512 bytes, setting media type to SparQ.</value>
</data>
<data name="SCSI_medium_type_is_0_media_has_1_blocks_of_2_bytes_setting_media_type_to_WORM_PD_650"
xml:space="preserve">
<data name="SCSI_medium_type_is_0_media_has_1_blocks_of_2_bytes_setting_media_type_to_WORM_PD_650"
xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to WORM PD-650.</value>
</data>
<data name="SCSI_medium_type_is_0_media_has_1_blocks_of_2_bytes_setting_media_type_to_PD_650" xml:space="preserve">
<data name="SCSI_medium_type_is_0_media_has_1_blocks_of_2_bytes_setting_media_type_to_PD_650" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to PD-650.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_Compact_Disc" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_Compact_Disc" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, setting media type to Compact Disc.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_CD_ROM" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_CD_ROM" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, setting media type to CD-ROM.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_Compact_Disc_Digital_Audio" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_Compact_Disc_Digital_Audio" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, setting media type to Compact Disc Digital Audio.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_CD_Plus" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_CD_Plus" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, setting media type to CD+.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_Photo_CD" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_Photo_CD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, setting media type to Photo CD.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_CDR" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_CDR" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, setting media type to CD-R.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_CDRW" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_CDRW" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, setting media type to CD-RW.</value>
</data>
<data name="SCSI_medium_type_is_0_and_device_is_USB_setting_media_type_to_Flash_Drive" xml:space="preserve">
<data name="SCSI_medium_type_is_0_and_device_is_USB_setting_media_type_to_Flash_Drive" xml:space="preserve">
<value>SCSI medium type is {0:X2}h and device is USB, setting media type to Flash Drive.</value>
</data>
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO2"
xml:space="preserve">
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO2"
xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive starts with "ult", setting media type to LTO-2.</value>
</data>
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO3"
xml:space="preserve">
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO3"
xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive starts with "ult", setting media type to LTO-3.</value>
</data>
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO4"
xml:space="preserve">
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO4"
xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive starts with "ult", setting media type to LTO-4.</value>
</data>
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO5"
xml:space="preserve">
<data name="SCSI_medium_type_is_0_density_code_is_1_drive_starts_with_ult_setting_media_type_to_LTO5"
xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive starts with "ult", setting media type to LTO-5.</value>
</data>
<data name="SCSI_medium_type_is_0_setting_media_type_to_unknown_magneto_optical" xml:space="preserve">
<data name="SCSI_medium_type_is_0_setting_media_type_to_unknown_magneto_optical" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, setting media type to unknown magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA154" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA154" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-154 / ISO 10090 conforming 3½" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA201_embossed" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA201_embossed" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-201 / ISO 13963 conforming 3½" embossed magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA201" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA201" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-201 / ISO 13963 conforming 3½" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA223" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA223" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-223 conforming 3½" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA183" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA183" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-183 / ISO 13481 conforming 5¼" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ISO15041" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ISO15041" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ISO 15041 conforming 3½" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA184" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA184" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-184 / ISO 13549 conforming 5¼" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA195" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA195" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-195 / ISO 13842 conforming 5¼" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ISO14517" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ISO14517" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ISO 14517 conforming 5¼" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_Unknown_MO" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Unknown_MO" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to unknown magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ISO10089" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ISO10089" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ISO 10089 conforming 5¼" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA238" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA238" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-238 / ISO 15486 conforming 5¼" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ISO15286" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ISO15286" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ISO 15286 conforming 5¼" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA322" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA322" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-322 / ISO 22092 conforming 5¼" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA260" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA260" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-260 / ISO 15898 conforming 356mm magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA239" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA239" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-239 / ISO 15498 conforming 3½" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_GigaMO" xml:space="preserve">
<data name="SCSI_Media_Type_Description_GigaMO" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to GigaMO 3½" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_GigaMO2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_GigaMO2" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to GigaMO 2 3½" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA280" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA280" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-280 / ISO 18093 conforming 5¼" magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA317" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA317" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-317 / ISO 20162 conforming 300mm magneto-optical.</value>
</data>
<data name="SCSI_Media_Type_Description_UDO" xml:space="preserve">
<data name="SCSI_Media_Type_Description_UDO" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to UDO.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_UDO2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_UDO2" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to WORM UDO2.</value>
</data>
<data name="SCSI_Media_Type_Description_UDO2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_UDO2" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to UDO2.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA54" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA54" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-54 formatted 8" floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA59" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA59" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-59 formatted 8" floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA69" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA69" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-69 formatted 8" floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Unknown" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Unknown" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to unknown.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA66" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA66" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-66 formatted 5¼" floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA70" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA70" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-70 formatted 5¼" floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA78" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA78" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-78 formatted 5¼" floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA99" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA99" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-99 formatted 5¼" floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF2DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 3½" double density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_REV120" xml:space="preserve">
<data name="SCSI_Media_Type_Description_REV120" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to 120Gb REV.</value>
</data>
<data name="SCSI_Media_Type_Description_REV70" xml:space="preserve">
<data name="SCSI_Media_Type_Description_REV70" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to 70Gb REV.</value>
</data>
<data name="SCSI_Media_Type_Description_REV35" xml:space="preserve">
<data name="SCSI_Media_Type_Description_REV35" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to 35Gb REV.</value>
</data>
<data name="SCSI_Media_Type_Description_PC98_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_PC98_MF2HD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to PC-98 formatted 3½" high density floppy (15 sectors).</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF2HD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 3½" high density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Atari_MD1SD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Atari_MD1SD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Atari formatted 5¼" single density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Atari_MD1DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Atari_MD1DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Atari formatted 5¼" double density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_33FD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_33FD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 8" (33FD) floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_43FD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_43FD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 8" (43FD) floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_ECMA56" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ECMA56" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to ECMA-56 formatted 5¼" double density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Acorn_MD1SD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Acorn_MD1SD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Acorn formatted 5¼" single density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Apple_DOS32" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apple_DOS32" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Apple DOS 3.2 formatted 5¼" floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Apple_DOS33" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apple_DOS33" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Apple DOS 3.3 formatted 5¼" floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Acorn_MD1DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Acorn_MD1DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Acorn formatted 5¼" double density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Apple_DOS32_DS" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apple_DOS32_DS" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Apple DOS 3.2 formatted 5¼" double sided floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Apple_DOS33_DS" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apple_DOS33_DS" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Apple DOS 3.3 formatted 5¼" double sided floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_MetaFloppy" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MetaFloppy" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to MetaFloppy formatted 5¼" double density single sided floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Acorn_MD1DD_80" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Acorn_MD1DD_80" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Acorn formatted 5¼" double density floppy with 80 tracks.</value>
</data>
<data name="SCSI_Media_Type_Description_DEC_RX02" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DEC_RX02" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to DEC RX02 floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_53FD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_53FD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 8" (53FD) floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Bernoulli10" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Bernoulli10" xml:space="preserve">
<value>Drive manufacturer is IOMEGA, media has {0} blocks of 256 bytes, setting media type to 10Mb Bernoulli Box.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_23FD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_23FD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 8" (23FD) floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MD1DD_8" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MD1DD_8" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 5¼" double density single sided floppy (8 sectors).</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MD1DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MD1DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 5¼" double density single sided floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Apricot_MF2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apricot_MF2DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Apricot formatted 3½" floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF1DD_8" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF1DD_8" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 3½" double density single sided floppy (8 sectors).</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MD2DD_8" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MD2DD_8" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 5¼" double density floppy (8 sectors).</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF1DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF1DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 3½" double density single sided floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MD2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MD2DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 5¼" double density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Apple_MF1DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Apple_MF1DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Apple formatted 3½" double density single sided floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF2DD_8" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF2DD_8" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 3½" double density floppy (8 sectors).</value>
</data>
<data name="SCSI_Media_Type_Description_FDFORMAT_MF2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_FDFORMAT_MF2DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to FDFORMAT formatted 3½" double density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Amiga_MF2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Amiga_MF2DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Amiga formatted 3½" double density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MD2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MD2HD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 5¼" high density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_FDFORMAT_MD2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_FDFORMAT_MD2HD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to FDFORMAT formatted 5¼" high density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_DMF_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DMF_MF2HD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Microsoft DMF formatted 3½" high density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_FDFORMAT_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_FDFORMAT_MF2HD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to FDFORMAT formatted 3½" high density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Amiga_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Amiga_MF2HD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Amiga formatted 3½" high density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM_MF2ED" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM_MF2ED" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to IBM formatted 3½" extra density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Floptical" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Floptical" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Floptical.</value>
</data>
<data name="SCSI_Media_Type_Description_FD32MB" xml:space="preserve">
<data name="SCSI_Media_Type_Description_FD32MB" xml:space="preserve">
<value>Drive model is LS (SuperDisk), media has 65536 blocks of 512 bytes, setting media type to FD32MB.</value>
</data>
<data name="SCSI_Media_Type_Description_PocketZIP" xml:space="preserve">
<data name="SCSI_Media_Type_Description_PocketZIP" xml:space="preserve">
<value>Drive manufacturer is IOMEGA, media has 78882 blocks of 512 bytes, setting media type to PocketZIP.</value>
</data>
<data name="SCSI_Media_Type_Description_SQ400" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SQ400" xml:space="preserve">
<value>Drive manufacturer is SyQuest, media has 86700 blocks of 512 bytes, setting media type to SQ400.</value>
</data>
<data name="SCSI_Media_Type_Description_Bernoulli2_44" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Bernoulli2_44" xml:space="preserve">
<value>Drive manufacturer is IOMEGA, media has 87040 blocks of 512 bytes, setting media type to 44Mb Bernoulli Box II.</value>
</data>
<data name="SCSI_Media_Type_Description_SQ800" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SQ800" xml:space="preserve">
<value>Drive manufacturer is SyQuest, media has 173456 blocks of 512 bytes, setting media type to SQ800.</value>
</data>
<data name="SCSI_Media_Type_Description_Bernoulli2_90" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Bernoulli2_90" xml:space="preserve">
<value>Drive manufacturer is IOMEGA, media has 175856 blocks of 512 bytes, setting media type to 90Mb Bernoulli Box II.</value>
</data>
<data name="SCSI_Media_Type_Description_ZIP100" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ZIP100" xml:space="preserve">
<value>Drive manufacturer is IOMEGA, drive model is ZIP, media has 196608 blocks of 512 bytes, setting media type to 100Mb ZIP.</value>
</data>
<data name="SCSI_Media_Type_Description_SQ310" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SQ310" xml:space="preserve">
<value>Drive manufacturer is SyQuest, media has 215440 blocks of 512 bytes, setting media type to SQ310.</value>
</data>
<data name="SCSI_Media_Type_Description_LS120" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LS120" xml:space="preserve">
<value>Drive model is LS (SuperDisk), media has 246528 blocks of 512 bytes, setting media type to LS-120.</value>
</data>
<data name="SCSI_Media_Type_Description_EZ135" xml:space="preserve">
<data name="SCSI_Media_Type_Description_EZ135" xml:space="preserve">
<value>Drive manufacturer is SyQuest, media has 262144 blocks of 512 bytes, setting media type to EZ135.</value>
</data>
<data name="SCSI_Media_Type_Description_Bernoulli2_150" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Bernoulli2_150" xml:space="preserve">
<value>Drive manufacturer is IOMEGA, media has 294918 blocks of 512 bytes, setting media type to 150Mb Bernoulli Box II.</value>
</data>
<data name="SCSI_Media_Type_Description_SQ2000" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SQ2000" xml:space="preserve">
<value>Drive manufacturer is SyQuest, media has 390696 blocks of 512 bytes, setting media type to SQ2000.</value>
</data>
<data name="SCSI_Media_Type_Description_HiFD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_HiFD" xml:space="preserve">
<value>Drive model is HiFD, media has 393380 blocks of 512 bytes, setting media type to HiFD.</value>
</data>
<data name="SCSI_Media_Type_Description_EZ230" xml:space="preserve">
<data name="SCSI_Media_Type_Description_EZ230" xml:space="preserve">
<value>Drive manufacturer is SyQuest, media has 450560 blocks of 512 bytes, setting media type to EZ230.</value>
</data>
<data name="SCSI_Media_Type_Description_LS240" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LS240" xml:space="preserve">
<value>Drive model is LS (SuperDisk), media has 469504 blocks of 512 bytes, setting media type to LS-240.</value>
</data>
<data name="SCSI_Media_Type_Description_ZIP250" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ZIP250" xml:space="preserve">
<value>Drive manufacturer is IOMEGA, drive model is ZIP, media has 489532 blocks of 512 bytes, setting media type to 250Mb ZIP.</value>
</data>
<data name="SCSI_Media_Type_Description_SQ327" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SQ327" xml:space="preserve">
<value>Drive manufacturer is SyQuest, media has 524288 blocks of 512 bytes, setting media type to SQ327.</value>
</data>
<data name="SCSI_Media_Type_Description_JAZ" xml:space="preserve">
<data name="SCSI_Media_Type_Description_JAZ" xml:space="preserve">
<value>Drive manufacturer is IOMEGA, drive model is JAZ, media has 2091050 blocks of 512 bytes, setting media type to 1Gb JAZ.</value>
</data>
<data name="SCSI_Media_Type_Description_SyJet" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SyJet" xml:space="preserve">
<value>Drive manufacturer is SyQuest, media has 2929800 blocks of 512 bytes, setting media type to SyJet.</value>
</data>
<data name="SCSI_Media_Type_Description_JAZ2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_JAZ2" xml:space="preserve">
<value>Drive manufacturer is IOMEGA, drive model is JAZ, media has 3915600 blocks of 512 bytes, setting media type to 2Gb JAZ.</value>
</data>
<data name="SCSI_Media_Type_Description_Orb" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Orb" xml:space="preserve">
<value>Drive model is Castlewood Orb, media has 4307184 blocks of 512 bytes, setting media type to Orb.</value>
</data>
<data name="SCSI_Media_Type_Description_RDX320" xml:space="preserve">
<data name="SCSI_Media_Type_Description_RDX320" xml:space="preserve">
<value>Drive model is RDX, media has {0} blocks of {1} bytes, setting media type to RDX320.</value>
</data>
<data name="SCSI_Media_Type_Description_Acorn_MF2DD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Acorn_MF2DD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Acorn formatted 3½" double density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_LS_PC98_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LS_PC98_MF2HD" xml:space="preserve">
<value>Drive model is LS (SuperDisk), media has 2880 blocks of 512 bytes, setting media type to PC-98 formatted 3½" high density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Sharp_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Sharp_MF2HD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Sharp formatted 3½" high density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_PC98_MD2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_PC98_MD2HD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to PC-98 formatted 5¼" high density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_Acorn_MF2HD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Acorn_MF2HD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Acorn formatted 3½" high density floppy.</value>
</data>
<data name="SCSI_Media_Type_Description_MD60" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD60" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to 60 minute MiniDisc.</value>
</data>
<data name="SCSI_Media_Type_Description_MD74" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD74" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to 74 minute MiniDisc.</value>
</data>
<data name="SCSI_Media_Type_Description_MD80" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD80" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to 80 minute MiniDisc.</value>
</data>
<data name="SCSI_Media_Type_Description_HiMD" xml:space="preserve">
<data name="SCSI_Media_Type_Description_HiMD" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to Sony HiMD.</value>
</data>
<data name="SCSI_Media_Type_Description_MDDATA" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MDDATA" xml:space="preserve">
<value>SCSI peripheral type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to MiniDisc for Data.</value>
</data>
<data name="SCSI_Media_Type_Description_MD60_MDDATA" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD60_MDDATA" xml:space="preserve">
<value>SCSI peripheral type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to 60 minute MiniDisc.</value>
</data>
<data name="SCSI_Media_Type_Description_MD74_MDDATA" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD74_MDDATA" xml:space="preserve">
<value>SCSI peripheral type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to 74 minute MiniDisc.</value>
</data>
<data name="SCSI_Media_Type_Description_MD80_MDDATA" xml:space="preserve">
<data name="SCSI_Media_Type_Description_MD80_MDDATA" xml:space="preserve">
<value>SCSI peripheral type is {0:X2}h, media has {1} blocks of {2} bytes, setting media type to 80 minute MiniDisc.</value>
</data>
<data name="SCSI_Media_Type_Description_ZBC_Host_Managed" xml:space="preserve">
<data name="SCSI_Media_Type_Description_ZBC_Host_Managed" xml:space="preserve">
<value>SCSI peripheral type is {0:X2}h, setting media type to host managed zoned block device.</value>
</data>
<data name="SCSI_Media_Type_Description_QIC11" xml:space="preserve">
<data name="SCSI_Media_Type_Description_QIC11" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to QIC-11.</value>
</data>
<data name="SCSI_Media_Type_Description_QIC24" xml:space="preserve">
<data name="SCSI_Media_Type_Description_QIC24" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to QIC-24.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM3490" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM3490" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to IBM 3490.</value>
</data>
<data name="SCSI_Media_Type_Description_QIC120" xml:space="preserve">
<data name="SCSI_Media_Type_Description_QIC120" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to QIC-120.</value>
</data>
<data name="SCSI_Media_Type_Description_QIC150" xml:space="preserve">
<data name="SCSI_Media_Type_Description_QIC150" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to QIC-150.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to DDS.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS2" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to DDS-2.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS3" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS3" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to DDS-3.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS4" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS4" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to DDS-4.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM3490E" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM3490E" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to IBM 3490E.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO_ult" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to LTO.</value>
</data>
<data name="SCSI_Media_Type_Description_SAIT" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SAIT" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "sdz" setting media type to Super AIT.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO2_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO2_ult" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to LTO-2.</value>
</data>
<data name="SCSI_Media_Type_Description_T9840A" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T9840A" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive manufacturer is StorageTek, setting media type to T9840A.</value>
</data>
<data name="SCSI_Media_Type_Description_T9940A" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T9940A" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive manufacturer is StorageTek, setting media type to T9940A.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO3" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO3" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to LTO-3.</value>
</data>
<data name="SCSI_Media_Type_Description_T9940B" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T9940B" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive manufacturer is StorageTek, setting media type to T9940B.</value>
</data>
<data name="SCSI_Media_Type_Description_T9940C" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T9940C" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive manufacturer is StorageTek, setting media type to T9840C.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO4" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO4" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to LTO-4.</value>
</data>
<data name="SCSI_Media_Type_Description_T9840D" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T9840D" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive manufacturer is StorageTek, setting media type to T9840D.</value>
</data>
<data name="SCSI_Media_Type_Description_T10000A" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T10000A" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive manufacturer is StorageTek, setting media type to T10000A.</value>
</data>
<data name="SCSI_Media_Type_Description_T10000B" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T10000B" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive manufacturer is StorageTek, setting media type to T10000B.</value>
</data>
<data name="SCSI_Media_Type_Description_T10000C" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T10000C" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive manufacturer is StorageTek, setting media type to T10000C.</value>
</data>
<data name="SCSI_Media_Type_Description_T10000D" xml:space="preserve">
<data name="SCSI_Media_Type_Description_T10000D" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive manufacturer is StorageTek, setting media type to T10000D.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO5" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO5" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to LTO-5.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_LTO3" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_LTO3" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to WORM LTO-3.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_LTO4" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_LTO4" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to WORM LTO-4.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_LTO5" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_LTO5" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to WORM LTO-5.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to LTO.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO2" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to LTO-2.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS3_dat" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS3_dat" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dat" setting media type to DDS-3.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS4_alt" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS4_alt" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dat" setting media type to DDS-4.</value>
</data>
<data name="SCSI_Media_Type_Description_DAT72_dat" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DAT72_dat" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dat" setting media type to DAT72.</value>
</data>
<data name="SCSI_Media_Type_Description_DDS2_dat" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DDS2_dat" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dat" setting media type to DDS-2.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO6_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO6_ult" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to LTO-6.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_LTO6_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_LTO6_ult" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to WORM LTO-6.</value>
</data>
<data name="SCSI_Media_Type_Description_LTO7_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_LTO7_ult" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to LTO-7.</value>
</data>
<data name="SCSI_Media_Type_Description_WORM_LTO7_ult" xml:space="preserve">
<data name="SCSI_Media_Type_Description_WORM_LTO7_ult" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "ult" setting media type to WORM LTO-7.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_15m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_15m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 15m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_IBM3592" xml:space="preserve">
<data name="SCSI_Media_Type_Description_IBM3592" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive manufacturer is IBM, setting media type to IBM 3592.</value>
</data>
<data name="SCSI_Media_Type_Description_VXA" xml:space="preserve">
<data name="SCSI_Media_Type_Description_VXA" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "vxa" setting media type to VXA.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_28m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_28m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 28m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_CompactTape" xml:space="preserve">
<data name="SCSI_Media_Type_Description_CompactTape" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dlt" setting media type to CompactTape.</value>
</data>
<data name="SCSI_Media_Type_Description_CompactTapeII" xml:space="preserve">
<data name="SCSI_Media_Type_Description_CompactTapeII" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dlt" setting media type to CompactTape II.</value>
</data>
<data name="SCSI_Media_Type_Description_VXA2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_VXA2" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "vxa" setting media type to VXA 2.</value>
</data>
<data name="SCSI_Media_Type_Description_VXA3" xml:space="preserve">
<data name="SCSI_Media_Type_Description_VXA3" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "vxa" setting media type to VXA 3.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_54m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_54m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 54m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_DLTtapeIII" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DLTtapeIII" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dlt" setting media type to DLTtape III.</value>
</data>
<data name="SCSI_Media_Type_Description_DLTtapeIIIxt" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DLTtapeIIIxt" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dlt" setting media type to DLTtape IIIxt.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_106m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_106m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 106m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_DLTtapeIV" xml:space="preserve">
<data name="SCSI_Media_Type_Description_DLTtapeIV" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dlt" setting media type to DLTtape IV.</value>
</data>
<data name="SCSI_Media_Type_Description_Travan5_stt" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Travan5_stt" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "stt" setting media type to Travan 5.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_160m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_160m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 160m Exatape XL.</value>
</data>
<data name="SCSI_Media_Type_Description_SDLT" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SDLT" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dlt" setting media type to SuperDLT.</value>
</data>
<data name="SCSI_Media_Type_Description_SDLT2" xml:space="preserve">
<data name="SCSI_Media_Type_Description_SDLT2" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dlt" setting media type to SuperDLT 2.</value>
</data>
<data name="SCSI_Media_Type_Description_VStape" xml:space="preserve">
<data name="SCSI_Media_Type_Description_VStape" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "dlt" setting media type to VStape I.</value>
</data>
<data name="SCSI_Media_Type_Description_Travan7" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Travan7" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "stt" setting media type to Travan 7.</value>
</data>
<data name="SCSI_Media_Type_Description_Travan4" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Travan4" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to Travan 4.</value>
</data>
<data name="SCSI_Media_Type_Description_Travan5" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Travan5" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, setting media type to Travan 5.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_22m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_22m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 22m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_40m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_40m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 40m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_76m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_76m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 76m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_112m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_112m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 112m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_22m_AME" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_22m_AME" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 22m Exatape AME.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_170m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_170m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 170m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_125m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_125m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 125m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_45m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_45m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 45m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_225m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_225m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 225m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_150m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_150m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 150m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_75m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_75m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 75m Exatape.</value>
</data>
<data name="SCSI_Media_Type_Description_Exatape_80m" xml:space="preserve">
<data name="SCSI_Media_Type_Description_Exatape_80m" xml:space="preserve">
<value>SCSI medium type is {0:X2}h, density code is {1:X2}h, drive model starts with "exb" setting media type to 80m Exatape.</value>
</data>
<data name="IDENTIFY_response_is_different_than_512_bytes_not_decoding" xml:space="preserve">
<data name="IDENTIFY_response_is_different_than_512_bytes_not_decoding" xml:space="preserve">
<value>IDENTIFY response is different than 512 bytes, not decoding.</value>
</data>
<data name="INQUIRY_response_is_0_bytes_less_than_minimum_of_36_bytes" xml:space="preserve">
<data name="INQUIRY_response_is_0_bytes_less_than_minimum_of_36_bytes" xml:space="preserve">
<value>INQUIRY response is {0} bytes, less than minimum of 36 bytes, decoded data can be incorrect, not decoding.</value>
</data>
<data name="INQUIRY_response_length_0_bytes_is_different_than_specified_in_length_field" xml:space="preserve">
<data name="INQUIRY_response_length_0_bytes_is_different_than_specified_in_length_field" xml:space="preserve">
<value>INQUIRY response length ({0} bytes) is different than specified in length field ({1} bytes), decoded data can be incorrect, not decoding.</value>
</data>
<data name="Exception_0" xml:space="preserve">
<data name="Exception_0" xml:space="preserve">
<value>Exception {0}</value>
</data>
<data name="SCSI_Media_Type_Description_HF12" xml:space="preserve">
<data name="SCSI_Media_Type_Description_HF12" xml:space="preserve">
<value>Media has 46956 blocks of 256 bytes, setting media type to 12Mb HyperFlex.</value>
</data>
<data name="SCSI_Media_Type_Description_HF24" xml:space="preserve">
<data name="SCSI_Media_Type_Description_HF24" xml:space="preserve">
<value>Media has 78936 blocks of 256 bytes, setting media type to 24Mb HyperFlex.</value>
</data>
</root>

View File

@@ -50,14 +50,19 @@ namespace Aaru.CommonTypes;
public enum MediaEncoding
{
Unknown, FM, MFM,
M2FM, AppleGCR, CommodoreGCR
Unknown,
FM,
MFM,
M2FM,
AppleGCR,
CommodoreGCR
}
/// <summary>Contains an enumeration of all known types of media.</summary>
public enum MediaType : uint
{
#region Generics, types 0 to 9
#region Generics, types 0 to 9
/// <summary>Unknown disk type</summary>
Unknown = 0,
/// <summary>Unknown magneto-optical</summary>
@@ -72,9 +77,11 @@ public enum MediaType : uint
FlashDrive = 5,
/// <summary>Unknown data tape</summary>
UnknownTape = 6,
#endregion Generics, types 0 to 9
#region Somewhat standard Compact Disc formats, types 10 to 39
#endregion Generics, types 0 to 9
#region Somewhat standard Compact Disc formats, types 10 to 39
/// <summary>Any unknown or standard violating CD</summary>
CD = 10,
/// <summary>CD Digital Audio (Red Book)</summary>
@@ -127,10 +134,13 @@ public enum MediaType : uint
/// CD-i Ready, contains a track before the first TOC track, in mode 2, and all TOC tracks are Audio. Subchannel
/// marks track as audio pause.
/// </summary>
CDIREADY = 34, FMTOWNS = 35,
#endregion Somewhat standard Compact Disc formats, types 10 to 39
CDIREADY = 34,
FMTOWNS = 35,
#endregion Somewhat standard Compact Disc formats, types 10 to 39
#region Standard DVD formats, types 40 to 50
#region Standard DVD formats, types 40 to 50
/// <summary>DVD-ROM (applies to DVD Video and DVD Audio)</summary>
DVDROM = 40,
/// <summary>DVD-R</summary>
@@ -153,9 +163,11 @@ public enum MediaType : uint
DVDRWDL = 49,
/// <summary>DVD-Download</summary>
DVDDownload = 50,
#endregion Standard DVD formats, types 40 to 50
#region Standard HD-DVD formats, types 51 to 59
#endregion Standard DVD formats, types 40 to 50
#region Standard HD-DVD formats, types 51 to 59
/// <summary>HD DVD-ROM (applies to HD DVD Video)</summary>
HDDVDROM = 51,
/// <summary>HD DVD-RAM</summary>
@@ -168,9 +180,11 @@ public enum MediaType : uint
HDDVDRDL = 55,
/// <summary>HD DVD-RW DL</summary>
HDDVDRWDL = 56,
#endregion Standard HD-DVD formats, types 51 to 59
#region Standard Blu-ray formats, types 60 to 69
#endregion Standard HD-DVD formats, types 51 to 59
#region Standard Blu-ray formats, types 60 to 69
/// <summary>BD-ROM (and BD Video)</summary>
BDROM = 60,
/// <summary>BD-R</summary>
@@ -183,9 +197,11 @@ public enum MediaType : uint
BDREXL = 64,
/// <summary>Ultra HD Blu-ray</summary>
UHDBD = 65,
#endregion Standard Blu-ray formats, types 60 to 69
#region Rare or uncommon optical standards, types 70 to 79
#endregion Standard Blu-ray formats, types 60 to 69
#region Rare or uncommon optical standards, types 70 to 79
/// <summary>Enhanced Versatile Disc</summary>
EVD = 70,
/// <summary>Forward Versatile Disc</summary>
@@ -204,18 +220,25 @@ public enum MediaType : uint
FDDVD = 77,
/// <summary>China Video Disc</summary>
CVD = 78,
#endregion Rare or uncommon optical standards, types 70 to 79
#region LaserDisc based, types 80 to 89
#endregion Rare or uncommon optical standards, types 70 to 79
#region LaserDisc based, types 80 to 89
/// <summary>Pioneer LaserDisc</summary>
LD = 80,
/// <summary>Pioneer LaserDisc data</summary>
LDROM = 81, LDROM2 = 82, LVROM = 83, MegaLD = 84,
LDROM = 81,
LDROM2 = 82,
LVROM = 83,
MegaLD = 84,
/// <summary>Writable LaserDisc with support for component video</summary>
CRVdisc = 85,
#endregion LaserDisc based, types 80 to 89
#region MiniDisc based, types 90 to 99
#endregion LaserDisc based, types 80 to 89
#region MiniDisc based, types 90 to 99
/// <summary>Sony Hi-MD</summary>
HiMD = 90,
/// <summary>Sony MiniDisc</summary>
@@ -230,19 +253,24 @@ public enum MediaType : uint
MD74 = 95,
/// <summary>Sony MiniDisc, 80 minutes, formatted with Hi-MD format</summary>
MD80 = 96,
#endregion MiniDisc based, types 90 to 99
#region Plasmon UDO, types 100 to 109
#endregion MiniDisc based, types 90 to 99
#region Plasmon UDO, types 100 to 109
/// <summary>5.25", Phase-Change, 1834348 sectors, 8192 bytes/sector, Ultra Density Optical, ECMA-350, ISO 17345</summary>
UDO = 100,
/// <summary>5.25", Phase-Change, 3669724 sectors, 8192 bytes/sector, Ultra Density Optical 2, ECMA-380, ISO 11976</summary>
UDO2 = 101,
/// <summary>5.25", Write-Once, 3668759 sectors, 8192 bytes/sector, Ultra Density Optical 2, ECMA-380, ISO 11976</summary>
UDO2_WORM = 102,
#endregion Plasmon UDO, types 100 to 109
#region Sony game media, types 110 to 129
PlayStationMemoryCard = 110, PlayStationMemoryCard2 = 111,
#endregion Plasmon UDO, types 100 to 109
#region Sony game media, types 110 to 129
PlayStationMemoryCard = 110,
PlayStationMemoryCard2 = 111,
/// <summary>Sony PlayStation game CD</summary>
PS1CD = 112,
/// <summary>Sony PlayStation 2 game CD</summary>
@@ -256,12 +284,15 @@ public enum MediaType : uint
/// <summary>Sony PlayStation 4 game Blu-ray</summary>
PS4BD = 117,
/// <summary>Sony PlayStation Portable Universal Media Disc (ECMA-365)</summary>
UMD = 118, PlayStationVitaGameCard = 119,
UMD = 118,
PlayStationVitaGameCard = 119,
/// <summary>Sony PlayStation 5 game Ultra HD Blu-ray</summary>
PS5BD = 120,
#endregion Sony game media, types 110 to 129
#region Microsoft game media, types 130 to 149
#endregion Sony game media, types 110 to 129
#region Microsoft game media, types 130 to 149
/// <summary>Microsoft X-box Game Disc</summary>
XGD = 130,
/// <summary>Microsoft X-box 360 Game Disc</summary>
@@ -270,9 +301,11 @@ public enum MediaType : uint
XGD3 = 132,
/// <summary>Microsoft X-box One Game Disc</summary>
XGD4 = 133,
#endregion Microsoft game media, types 130 to 149
#region Sega game media, types 150 to 169
#endregion Microsoft game media, types 130 to 149
#region Sega game media, types 150 to 169
/// <summary>Sega MegaCD</summary>
MEGACD = 150,
/// <summary>Sega Saturn disc</summary>
@@ -280,12 +313,20 @@ public enum MediaType : uint
/// <summary>Sega/Yamaha Gigabyte Disc</summary>
GDROM = 152,
/// <summary>Sega/Yamaha recordable Gigabyte Disc</summary>
GDR = 153, SegaCard = 154, MilCD = 155, MegaDriveCartridge = 156,
_32XCartridge = 157, SegaPicoCartridge = 158, MasterSystemCartridge = 159,
GameGearCartridge = 160, SegaSaturnCartridge = 161,
#endregion Sega game media, types 150 to 169
GDR = 153,
SegaCard = 154,
MilCD = 155,
MegaDriveCartridge = 156,
_32XCartridge = 157,
SegaPicoCartridge = 158,
MasterSystemCartridge = 159,
GameGearCartridge = 160,
SegaSaturnCartridge = 161,
#endregion Sega game media, types 150 to 169
#region Other game media, types 170 to 179
#region Other game media, types 170 to 179
/// <summary>PC-Engine / TurboGrafx cartridge</summary>
HuCard = 170,
/// <summary>PC-Engine / TurboGrafx CD</summary>
@@ -306,9 +347,11 @@ public enum MediaType : uint
Nuon = 178,
/// <summary>Bandai Playdia</summary>
Playdia = 179,
#endregion Other game media, types 170 to 179
#region Apple standard floppy format, types 180 to 189
#endregion Other game media, types 170 to 179
#region Apple standard floppy format, types 180 to 189
/// <summary>5.25", SS, DD, 35 tracks, 13 spt, 256 bytes/sector, GCR</summary>
Apple32SS = 180,
/// <summary>5.25", DS, DD, 35 tracks, 13 spt, 256 bytes/sector, GCR</summary>
@@ -323,9 +366,11 @@ public enum MediaType : uint
AppleSonyDS = 185,
/// <summary>5.25", DS, ?D, ?? tracks, ?? spt, 512 bytes/sector, GCR, opposite side heads, aka Twiggy</summary>
AppleFileWare = 186,
#endregion Apple standard floppy format
#region IBM/Microsoft PC floppy formats, types 190 to 209
#endregion Apple standard floppy format
#region IBM/Microsoft PC floppy formats, types 190 to 209
/// <summary>5.25", SS, DD, 40 tracks, 8 spt, 512 bytes/sector, MFM</summary>
DOS_525_SS_DD_8 = 190,
/// <summary>5.25", SS, DD, 40 tracks, 9 spt, 512 bytes/sector, MFM</summary>
@@ -362,9 +407,11 @@ public enum MediaType : uint
/// bytes/sector, falsified to DOS as 23 spt, 512 bps
/// </summary>
XDF_35 = 204,
#endregion IBM/Microsoft PC standard floppy formats, types 190 to 209
#region IBM standard floppy formats, types 210 to 219
#endregion IBM/Microsoft PC standard floppy formats, types 190 to 209
#region IBM standard floppy formats, types 210 to 219
/// <summary>8", SS, SD, 32 tracks, 8 spt, 319 bytes/sector, FM</summary>
IBM23FD = 210,
/// <summary>8", SS, SD, 73 tracks, 26 spt, 128 bytes/sector, FM</summary>
@@ -392,9 +439,11 @@ public enum MediaType : uint
/// side 1 = 26 sectors, 256 bytes/sector
/// </summary>
IBM53FD_1024 = 218,
#endregion IBM standard floppy formats, types 210 to 219
#region DEC standard floppy formats, types 220 to 229
#endregion IBM standard floppy formats, types 210 to 219
#region DEC standard floppy formats, types 220 to 229
/// <summary>8", SS, DD, 77 tracks, 26 spt, 128 bytes/sector, FM</summary>
RX01 = 220,
/// <summary>8", SS, DD, 77 tracks, 26 spt, 256 bytes/sector, FM/MFM</summary>
@@ -403,9 +452,11 @@ public enum MediaType : uint
RX03 = 222,
/// <summary>5.25", SS, DD, 80 tracks, 10 spt, 512 bytes/sector, MFM</summary>
RX50 = 223,
#endregion DEC standard floppy formats, types 220 to 229
#region Acorn standard floppy formats, types 230 to 239
#endregion DEC standard floppy formats, types 220 to 229
#region Acorn standard floppy formats, types 230 to 239
/// <summary>5,25", SS, SD, 40 tracks, 10 spt, 256 bytes/sector, FM</summary>
ACORN_525_SS_SD_40 = 230,
/// <summary>5,25", SS, SD, 80 tracks, 10 spt, 256 bytes/sector, FM</summary>
@@ -420,9 +471,11 @@ public enum MediaType : uint
ACORN_35_DS_DD = 235,
/// <summary>3,5", DS, HD, 80 tracks, 10 spt, 1024 bytes/sector, MFM</summary>
ACORN_35_DS_HD = 236,
#endregion Acorn standard floppy formats, types 230 to 239
#region Atari standard floppy formats, types 240 to 249
#endregion Acorn standard floppy formats, types 230 to 239
#region Atari standard floppy formats, types 240 to 249
/// <summary>5,25", SS, SD, 40 tracks, 18 spt, 128 bytes/sector, FM</summary>
ATARI_525_SD = 240,
/// <summary>5,25", SS, ED, 40 tracks, 26 spt, 128 bytes/sector, MFM</summary>
@@ -437,9 +490,11 @@ public enum MediaType : uint
ATARI_35_SS_DD_11 = 245,
/// <summary>3,5", DS, DD, 80 tracks, 11 spt, 512 bytes/sector, MFM</summary>
ATARI_35_DS_DD_11 = 246,
#endregion Atari standard floppy formats, types 240 to 249
#region Commodore standard floppy formats, types 250 to 259
#endregion Atari standard floppy formats, types 240 to 249
#region Commodore standard floppy formats, types 250 to 259
/// <summary>3,5", DS, DD, 80 tracks, 10 spt, 512 bytes/sector, MFM (1581)</summary>
CBM_35_DD = 250,
/// <summary>3,5", DS, DD, 80 tracks, 11 spt, 512 bytes/sector, MFM (Amiga)</summary>
@@ -452,9 +507,11 @@ public enum MediaType : uint
CBM_1540_Ext = 254,
/// <summary>5,25", DS, DD, 35 tracks, GCR</summary>
CBM_1571 = 255,
#endregion Commodore standard floppy formats, types 250 to 259
#region NEC/SHARP standard floppy formats, types 260 to 269
#endregion Commodore standard floppy formats, types 250 to 259
#region NEC/SHARP standard floppy formats, types 260 to 269
/// <summary>8", DS, SD, 77 tracks, 26 spt, 128 bytes/sector, FM</summary>
NEC_8_SD = 260,
/// <summary>8", DS, DD, 77 tracks, 26 spt, 256 bytes/sector, MFM</summary>
@@ -479,9 +536,11 @@ public enum MediaType : uint
SHARP_35 = NEC_35_HD_8,
/// <summary>3,5", DS, HD, 80 tracks, 9 spt, 1024 bytes/sector, MFM</summary>
SHARP_35_9 = 269,
#endregion NEC/SHARP standard floppy formats, types 260 to 269
#region ECMA floppy standards, types 270 to 289
#endregion NEC/SHARP standard floppy formats, types 260 to 269
#region ECMA floppy standards, types 270 to 289
/// <summary>
/// 5,25", DS, DD, 80 tracks, 8 spt, 1024 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track
/// 0 side 1 = 26 sectors, 256 bytes/sector
@@ -536,9 +595,11 @@ public enum MediaType : uint
ECMA_78 = 280,
/// <summary>5,25", DS, DD, 80 tracks, 9 spt, 512 bytes/sector, FM</summary>
ECMA_78_2 = 281,
#endregion ECMA floppy standards, types 270 to 289
#region Non-standard PC formats (FDFORMAT, 2M, etc), types 290 to 308
#endregion ECMA floppy standards, types 270 to 289
#region Non-standard PC formats (FDFORMAT, 2M, etc), types 290 to 308
/// <summary>5,25", DS, DD, 82 tracks, 10 spt, 512 bytes/sector, MFM</summary>
FDFORMAT_525_DD = 290,
/// <summary>5,25", DS, HD, 82 tracks, 17 spt, 512 bytes/sector, MFM</summary>
@@ -547,35 +608,61 @@ public enum MediaType : uint
FDFORMAT_35_DD = 292,
/// <summary>3,5", DS, HD, 82 tracks, 21 spt, 512 bytes/sector, MFM</summary>
FDFORMAT_35_HD = 293,
#endregion Non-standard PC formats (FDFORMAT, 2M, etc), types 290 to 308
#region Apricot ACT standard floppy formats, type 309
#endregion Non-standard PC formats (FDFORMAT, 2M, etc), types 290 to 308
#region Apricot ACT standard floppy formats, type 309
/// <summary>3.5", DS, DD, 70 tracks, 9 spt, 512 bytes/sector, MFM</summary>
Apricot_35 = 309,
#endregion Apricot ACT standard floppy formats, type 309
#region OnStream ADR, types 310 to 319
ADR2120 = 310, ADR260 = 311, ADR30 = 312,
#endregion Apricot ACT standard floppy formats, type 309
#region OnStream ADR, types 310 to 319
ADR2120 = 310,
ADR260 = 311,
ADR30 = 312,
ADR50 = 313,
#endregion OnStream ADR, types 310 to 319
#region Advanced Intelligent Tape, types 320 to 339
AIT1 = 320, AIT1Turbo = 321, AIT2 = 322,
AIT2Turbo = 323, AIT3 = 324, AIT3Ex = 325,
AIT3Turbo = 326, AIT4 = 327, AIT5 = 328,
AITETurbo = 329, SAIT1 = 330, SAIT2 = 331,
#endregion Advanced Intelligent Tape, types 320 to 339
#endregion OnStream ADR, types 310 to 319
#region Advanced Intelligent Tape, types 320 to 339
AIT1 = 320,
AIT1Turbo = 321,
AIT2 = 322,
AIT2Turbo = 323,
AIT3 = 324,
AIT3Ex = 325,
AIT3Turbo = 326,
AIT4 = 327,
AIT5 = 328,
AITETurbo = 329,
SAIT1 = 330,
SAIT2 = 331,
#endregion Advanced Intelligent Tape, types 320 to 339
#region Iomega, types 340 to 359
#region Iomega, types 340 to 359
/// <summary>Obsolete type for 8"x11" Bernoulli Box disk</summary>
[Obsolete]
Bernoulli = 340,
/// <summary>Obsolete type for 5⅓" Bernoulli Box II disks</summary>
[Obsolete]
Bernoulli2 = 341, Ditto = 342, DittoMax = 343, Jaz = 344,
Jaz2 = 345, PocketZip = 346, REV120 = 347,
REV35 = 348, REV70 = 349, ZIP100 = 350,
ZIP250 = 351, ZIP750 = 352,
Bernoulli2 = 341,
Ditto = 342,
DittoMax = 343,
Jaz = 344,
Jaz2 = 345,
PocketZip = 346,
REV120 = 347,
REV35 = 348,
REV70 = 349,
ZIP100 = 350,
ZIP250 = 351,
ZIP750 = 352,
/// <summary>5⅓" Bernoulli Box II disk with 35Mb capacity</summary>
Bernoulli35 = 353,
/// <summary>5⅓" Bernoulli Box II disk with 44Mb capacity</summary>
@@ -590,50 +677,94 @@ public enum MediaType : uint
Bernoulli150 = 358,
/// <summary>5⅓" Bernoulli Box II disk with 230Mb capacity</summary>
Bernoulli230 = 359,
#endregion Iomega, types 340 to 359
#region Audio or video media, types 360 to 369
CompactCassette = 360, Data8 = 361, MiniDV = 362,
#endregion Iomega, types 340 to 359
#region Audio or video media, types 360 to 369
CompactCassette = 360,
Data8 = 361,
MiniDV = 362,
/// <summary>D/CAS-25: Digital data on Compact Cassette form factor, special magnetic media, 9-track</summary>
Dcas25 = 363,
/// <summary>D/CAS-85: Digital data on Compact Cassette form factor, special magnetic media, 17-track</summary>
Dcas85 = 364,
/// <summary>D/CAS-103: Digital data on Compact Cassette form factor, special magnetic media, 21-track</summary>
Dcas103 = 365,
#endregion Audio media, types 360 to 369
#region CompactFlash Association, types 370 to 379
CFast = 370, CompactFlash = 371, CompactFlashType2 = 372,
#endregion CompactFlash Association, types 370 to 379
#endregion Audio media, types 360 to 369
#region Digital Audio Tape / Digital Data Storage, types 380 to 389
DigitalAudioTape = 380, DAT160 = 381, DAT320 = 382,
DAT72 = 383, DDS1 = 384, DDS2 = 385,
DDS3 = 386, DDS4 = 387,
#endregion Digital Audio Tape / Digital Data Storage, types 380 to 389
#region CompactFlash Association, types 370 to 379
#region DEC, types 390 to 399
CompactTapeI = 390, CompactTapeII = 391, DECtapeII = 392,
DLTtapeIII = 393, DLTtapeIIIxt = 394, DLTtapeIV = 395,
DLTtapeS4 = 396, SDLT1 = 397, SDLT2 = 398,
VStapeI = 399,
#endregion DEC, types 390 to 399
CFast = 370,
CompactFlash = 371,
CompactFlashType2 = 372,
#region Exatape, types 400 to 419
Exatape15m = 400, Exatape22m = 401, Exatape22mAME = 402,
Exatape28m = 403, Exatape40m = 404, Exatape45m = 405,
Exatape54m = 406, Exatape75m = 407, Exatape76m = 408,
Exatape80m = 409, Exatape106m = 410, Exatape160mXL = 411,
Exatape112m = 412, Exatape125m = 413, Exatape150m = 414,
Exatape170m = 415, Exatape225m = 416,
#endregion Exatape, types 400 to 419
#endregion CompactFlash Association, types 370 to 379
#region PCMCIA / ExpressCard, types 420 to 429
ExpressCard34 = 420, ExpressCard54 = 421, PCCardTypeI = 422,
PCCardTypeII = 423, PCCardTypeIII = 424, PCCardTypeIV = 425,
#endregion PCMCIA / ExpressCard, types 420 to 429
#region Digital Audio Tape / Digital Data Storage, types 380 to 389
DigitalAudioTape = 380,
DAT160 = 381,
DAT320 = 382,
DAT72 = 383,
DDS1 = 384,
DDS2 = 385,
DDS3 = 386,
DDS4 = 387,
#endregion Digital Audio Tape / Digital Data Storage, types 380 to 389
#region DEC, types 390 to 399
CompactTapeI = 390,
CompactTapeII = 391,
DECtapeII = 392,
DLTtapeIII = 393,
DLTtapeIIIxt = 394,
DLTtapeIV = 395,
DLTtapeS4 = 396,
SDLT1 = 397,
SDLT2 = 398,
VStapeI = 399,
#endregion DEC, types 390 to 399
#region Exatape, types 400 to 419
Exatape15m = 400,
Exatape22m = 401,
Exatape22mAME = 402,
Exatape28m = 403,
Exatape40m = 404,
Exatape45m = 405,
Exatape54m = 406,
Exatape75m = 407,
Exatape76m = 408,
Exatape80m = 409,
Exatape106m = 410,
Exatape160mXL = 411,
Exatape112m = 412,
Exatape125m = 413,
Exatape150m = 414,
Exatape170m = 415,
Exatape225m = 416,
#endregion Exatape, types 400 to 419
#region PCMCIA / ExpressCard, types 420 to 429
ExpressCard34 = 420,
ExpressCard54 = 421,
PCCardTypeI = 422,
PCCardTypeII = 423,
PCCardTypeIII = 424,
PCCardTypeIV = 425,
#endregion PCMCIA / ExpressCard, types 420 to 429
#region SyQuest, types 430 to 449
#region SyQuest, types 430 to 449
/// <summary>SyQuest 135Mb cartridge for use in EZ135 and EZFlyer drives</summary>
EZ135 = 430,
/// <summary>SyQuest EZFlyer 230Mb cartridge for use in EZFlyer drive</summary>
@@ -663,84 +794,173 @@ public enum MediaType : uint
SQ2000 = 442,
/// <summary>SyQuest 1.5Gb cartridge for SyJet drive</summary>
SyJet = 443,
#endregion SyQuest, types 430 to 449
#region Nintendo, types 450 to 469
FamicomGamePak = 450, GameBoyAdvanceGamePak = 451, GameBoyGamePak = 452,
#endregion SyQuest, types 430 to 449
#region Nintendo, types 450 to 469
FamicomGamePak = 450,
GameBoyAdvanceGamePak = 451,
GameBoyGamePak = 452,
/// <summary>Nintendo GameCube Optical Disc</summary>
GOD = 453, N64DD = 454, N64GamePak = 455, NESGamePak = 456,
Nintendo3DSGameCard = 457, NintendoDiskCard = 458, NintendoDSGameCard = 459,
NintendoDSiGameCard = 460, SNESGamePak = 461, SNESGamePakUS = 462,
GOD = 453,
N64DD = 454,
N64GamePak = 455,
NESGamePak = 456,
Nintendo3DSGameCard = 457,
NintendoDiskCard = 458,
NintendoDSGameCard = 459,
NintendoDSiGameCard = 460,
SNESGamePak = 461,
SNESGamePakUS = 462,
/// <summary>Nintendo Wii Optical Disc</summary>
WOD = 463,
/// <summary>Nintendo Wii U Optical Disc</summary>
WUOD = 464, SwitchGameCard = 465,
#endregion Nintendo, types 450 to 469
WUOD = 464,
SwitchGameCard = 465,
#region IBM Tapes, types 470 to 479
IBM3470 = 470, IBM3480 = 471, IBM3490 = 472,
IBM3490E = 473, IBM3592 = 474,
#endregion IBM Tapes, types 470 to 479
#endregion Nintendo, types 450 to 469
#region LTO Ultrium, types 480 to 509
LTO = 480, LTO2 = 481, LTO3 = 482,
LTO3WORM = 483, LTO4 = 484, LTO4WORM = 485,
LTO5 = 486, LTO5WORM = 487, LTO6 = 488,
LTO6WORM = 489, LTO7 = 490, LTO7WORM = 491,
#endregion LTO Ultrium, types 480 to 509
#region IBM Tapes, types 470 to 479
#region MemoryStick, types 510 to 519
MemoryStick = 510, MemoryStickDuo = 511, MemoryStickMicro = 512,
MemoryStickPro = 513, MemoryStickProDuo = 514,
#endregion MemoryStick, types 510 to 519
IBM3470 = 470,
IBM3480 = 471,
IBM3490 = 472,
IBM3490E = 473,
IBM3592 = 474,
#region SecureDigital, types 520 to 529
microSD = 520, miniSD = 521, SecureDigital = 522,
#endregion SecureDigital, types 520 to 529
#endregion IBM Tapes, types 470 to 479
#region MultiMediaCard, types 530 to 539
MMC = 530, MMCmicro = 531, RSMMC = 532,
MMCplus = 533, MMCmobile = 534,
#endregion MultiMediaCard, types 530 to 539
#region LTO Ultrium, types 480 to 509
#region SLR, types 540 to 569
MLR1 = 540, MLR1SL = 541, MLR3 = 542,
SLR1 = 543, SLR2 = 544, SLR3 = 545,
SLR32 = 546, SLR32SL = 547, SLR4 = 548,
SLR5 = 549, SLR5SL = 550, SLR6 = 551,
SLRtape7 = 552, SLRtape7SL = 553, SLRtape24 = 554,
SLRtape24SL = 555, SLRtape40 = 556, SLRtape50 = 557,
SLRtape60 = 558, SLRtape75 = 559, SLRtape100 = 560,
LTO = 480,
LTO2 = 481,
LTO3 = 482,
LTO3WORM = 483,
LTO4 = 484,
LTO4WORM = 485,
LTO5 = 486,
LTO5WORM = 487,
LTO6 = 488,
LTO6WORM = 489,
LTO7 = 490,
LTO7WORM = 491,
#endregion LTO Ultrium, types 480 to 509
#region MemoryStick, types 510 to 519
MemoryStick = 510,
MemoryStickDuo = 511,
MemoryStickMicro = 512,
MemoryStickPro = 513,
MemoryStickProDuo = 514,
#endregion MemoryStick, types 510 to 519
#region SecureDigital, types 520 to 529
microSD = 520,
miniSD = 521,
SecureDigital = 522,
#endregion SecureDigital, types 520 to 529
#region MultiMediaCard, types 530 to 539
MMC = 530,
MMCmicro = 531,
RSMMC = 532,
MMCplus = 533,
MMCmobile = 534,
#endregion MultiMediaCard, types 530 to 539
#region SLR, types 540 to 569
MLR1 = 540,
MLR1SL = 541,
MLR3 = 542,
SLR1 = 543,
SLR2 = 544,
SLR3 = 545,
SLR32 = 546,
SLR32SL = 547,
SLR4 = 548,
SLR5 = 549,
SLR5SL = 550,
SLR6 = 551,
SLRtape7 = 552,
SLRtape7SL = 553,
SLRtape24 = 554,
SLRtape24SL = 555,
SLRtape40 = 556,
SLRtape50 = 557,
SLRtape60 = 558,
SLRtape75 = 559,
SLRtape100 = 560,
SLRtape140 = 561,
#endregion SLR, types 540 to 569
#region QIC, types 570 to 589
QIC11 = 570, QIC120 = 571, QIC1350 = 572,
QIC150 = 573, QIC24 = 574, QIC3010 = 575,
QIC3020 = 576, QIC3080 = 577, QIC3095 = 578,
QIC320 = 579, QIC40 = 580, QIC525 = 581,
#endregion SLR, types 540 to 569
#region QIC, types 570 to 589
QIC11 = 570,
QIC120 = 571,
QIC1350 = 572,
QIC150 = 573,
QIC24 = 574,
QIC3010 = 575,
QIC3020 = 576,
QIC3080 = 577,
QIC3095 = 578,
QIC320 = 579,
QIC40 = 580,
QIC525 = 581,
QIC80 = 582,
#endregion QIC, types 570 to 589
#region StorageTek tapes, types 590 to 609
STK4480 = 590, STK4490 = 591, STK9490 = 592,
T9840A = 593, T9840B = 594, T9840C = 595,
T9840D = 596, T9940A = 597, T9940B = 598,
T10000A = 599, T10000B = 600, T10000C = 601,
#endregion QIC, types 570 to 589
#region StorageTek tapes, types 590 to 609
STK4480 = 590,
STK4490 = 591,
STK9490 = 592,
T9840A = 593,
T9840B = 594,
T9840C = 595,
T9840D = 596,
T9940A = 597,
T9940B = 598,
T10000A = 599,
T10000B = 600,
T10000C = 601,
T10000D = 602,
#endregion StorageTek tapes, types 590 to 609
#region Travan, types 610 to 619
Travan = 610, Travan1Ex = 611, Travan3 = 612,
Travan3Ex = 613, Travan4 = 614, Travan5 = 615,
#endregion StorageTek tapes, types 590 to 609
#region Travan, types 610 to 619
Travan = 610,
Travan1Ex = 611,
Travan3 = 612,
Travan3Ex = 613,
Travan4 = 614,
Travan5 = 615,
Travan7 = 616,
#endregion Travan, types 610 to 619
#region VXA, types 620 to 629
VXA1 = 620, VXA2 = 621, VXA3 = 622,
#endregion VXA, types 620 to 629
#endregion Travan, types 610 to 619
#region VXA, types 620 to 629
VXA1 = 620,
VXA2 = 621,
VXA3 = 622,
#endregion VXA, types 620 to 629
#region Magneto-optical, types 630 to 659
#region Magneto-optical, types 630 to 659
/// <summary>5,25", M.O., WORM, 650Mb, 318750 sectors, 1024 bytes/sector, ECMA-153, ISO 11560</summary>
ECMA_153 = 630,
/// <summary>5,25", M.O., WORM, 600Mb, 581250 sectors, 512 bytes/sector, ECMA-153, ISO 11560</summary>
@@ -801,33 +1021,62 @@ public enum MediaType : uint
ISO_10089 = 658,
/// <summary>5,25", M.O., ?????? sectors, 512 bytes/sector, ISO 10089, 594Mb/cart</summary>
ISO_10089_512 = 659,
#endregion Magneto-optical, types 630 to 659
#region Other floppy standards, types 660 to 689
CompactFloppy = 660, DemiDiskette = 661,
#endregion Magneto-optical, types 630 to 659
#region Other floppy standards, types 660 to 689
CompactFloppy = 660,
DemiDiskette = 661,
/// <summary>3.5", 652 tracks, 2 sides, 512 bytes/sector, Floptical, ECMA-207, ISO 14169</summary>
Floptical = 662, HiFD = 663, QuickDisk = 664, UHD144 = 665,
VideoFloppy = 666, Wafer = 667, ZXMicrodrive = 668,
Floptical = 662,
HiFD = 663,
QuickDisk = 664,
UHD144 = 665,
VideoFloppy = 666,
Wafer = 667,
ZXMicrodrive = 668,
/// <summary>5.25", SS, DD, 77 tracks, 16 spt, 256 bytes/sector, MFM, 100 tpi, 300rpm</summary>
MetaFloppy_Mod_II = 669,
#endregion Other floppy standards, types 660 to 669
#region Miscellaneous, types 670 to 689
BeeCard = 670, Borsu = 671, DataStore = 672,
DIR = 673, DST = 674, DTF = 675,
DTF2 = 676, Flextra3020 = 677, Flextra3225 = 678,
HiTC1 = 679, HiTC2 = 680, LT1 = 681,
MiniCard = 872, Orb = 683, Orb5 = 684,
SmartMedia = 685, xD = 686, XQD = 687,
DataPlay = 688,
#endregion Miscellaneous, types 670 to 689
#endregion Other floppy standards, types 660 to 669
#region Apple specific media, types 690 to 699
AppleProfile = 690, AppleWidget = 691, AppleHD20 = 692,
PriamDataTower = 693, Pippin = 694,
#endregion Apple specific media, types 690 to 699
#region Miscellaneous, types 670 to 689
BeeCard = 670,
Borsu = 671,
DataStore = 672,
DIR = 673,
DST = 674,
DTF = 675,
DTF2 = 676,
Flextra3020 = 677,
Flextra3225 = 678,
HiTC1 = 679,
HiTC2 = 680,
LT1 = 681,
MiniCard = 872,
Orb = 683,
Orb5 = 684,
SmartMedia = 685,
xD = 686,
XQD = 687,
DataPlay = 688,
#endregion Miscellaneous, types 670 to 689
#region Apple specific media, types 690 to 699
AppleProfile = 690,
AppleWidget = 691,
AppleHD20 = 692,
PriamDataTower = 693,
Pippin = 694,
#endregion Apple specific media, types 690 to 699
#region DEC hard disks, types 700 to 729
#region DEC hard disks, types 700 to 729
/// <summary>
/// 2382 cylinders, 4 tracks/cylinder, 42 sectors/track, 128 words/sector, 32 bits/word, 512 bytes/sector,
/// 204890112 bytes
@@ -963,33 +1212,49 @@ public enum MediaType : uint
/// 178387200 bytes
/// </summary>
RP06_18 = 726,
#endregion DEC hard disks, types 700 to 729
#region Imation, types 730 to 739
LS120 = 730, LS240 = 731, FD32MB = 732,
RDX = 733,
#endregion DEC hard disks, types 700 to 729
#region Imation, types 730 to 739
LS120 = 730,
LS240 = 731,
FD32MB = 732,
RDX = 733,
/// <summary>Imation 320Gb RDX</summary>
RDX320 = 734,
#endregion Imation, types 730 to 739
#region VideoNow, types 740 to 749
VideoNow = 740, VideoNowColor = 741, VideoNowXp = 742,
#endregion
#endregion Imation, types 730 to 739
#region VideoNow, types 740 to 749
VideoNow = 740,
VideoNowColor = 741,
VideoNowXp = 742,
#endregion
#region Iomega, types 750 to 759
#region Iomega, types 750 to 759
/// <summary>8"x11" Bernoulli Box disk with 10Mb capacity</summary>
Bernoulli10 = 750,
/// <summary>8"x11" Bernoulli Box disk with 20Mb capacity</summary>
Bernoulli20 = 751,
/// <summary>5⅓" Bernoulli Box II disk with 20Mb capacity</summary>
BernoulliBox2_20 = 752,
#endregion Iomega, types 750 to 759
#region Kodak, types 760 to 769
KodakVerbatim3 = 760, KodakVerbatim6 = 761, KodakVerbatim12 = 762,
#endregion Kodak, types 760 to 769
#endregion Iomega, types 750 to 759
#region Kodak, types 760 to 769
KodakVerbatim3 = 760,
KodakVerbatim6 = 761,
KodakVerbatim12 = 762,
#endregion Kodak, types 760 to 769
#region Sony and Panasonic Blu-ray derived, types 770 to 799
#region Sony and Panasonic Blu-ray derived, types 770 to 799
/// <summary>Professional Disc for video, single layer, rewritable, 23Gb</summary>
ProfessionalDisc = 770,
/// <summary>Professional Disc for video, dual layer, rewritable, 50Gb</summary>
@@ -1024,9 +1289,11 @@ public enum MediaType : uint
ODC3300R = 785,
/// <summary>Optical Disc archive, 5th gen., write once, 5500Gb</summary>
ODC5500R = 786,
#endregion Sony and Panasonic Blu-ray derived, types 770 to 799
#region Magneto-optical, types 800 to 819
#endregion Sony and Panasonic Blu-ray derived, types 770 to 799
#region Magneto-optical, types 800 to 819
/// <summary>5,25", M.O., 4383356 sectors, 1024 bytes/sector, ECMA-322, ISO 22092, 9.1Gb/cart</summary>
ECMA_322_1k = 800,
/// <summary>5,25", M.O., ??????? sectors, 512 bytes/sector, ECMA-322, ISO 22092, 9.1Gb/cart</summary>
@@ -1037,16 +1304,20 @@ public enum MediaType : uint
ISO_14517_512 = 803,
/// <summary>3,5", M.O., 1041500 sectors, 512 bytes/sector, ISO 15041, 540Mb/cart</summary>
ISO_15041_512 = 804,
#endregion Magneto-optical, types 800 to 819
#region More floppy formats, types 820 to deprecated
#endregion Magneto-optical, types 800 to 819
#region More floppy formats, types 820 to deprecated
/// <summary>5.25", SS, DD, 35 tracks, 16 spt, 256 bytes/sector, MFM, 48 tpi, ???rpm</summary>
MetaFloppy_Mod_I = 820,
/// <summary>HyperFlex (12Mb), 5.25", DS, 301 tracks, 78 spt, 256 bytes/sector, MFM, 333 tpi, 600rpm</summary>
HF12 = 823,
/// <summary>HyperFlex (24Mb), 5.25", DS, 506 tracks, 78 spt, 256 bytes/sector, MFM, 666 tpi, 720rpm</summary>
HF24 = 824,
#endregion
AtariLynxCard = 821, AtariJaguarCartridge = 822
#endregion
AtariLynxCard = 821,
AtariJaguarCartridge = 822
}

View File

@@ -47,7 +47,7 @@ public static partial class MediaTypeFromDevice
/// <param name="blocks">Number of blocks in device</param>
/// <returns>The media type</returns>
public static MediaType GetFromAta(string manufacturer, string model, bool removable, bool compactFlash,
bool pcmcia, ulong blocks)
bool pcmcia, ulong blocks)
{
if(!removable)
{

View File

@@ -50,12 +50,13 @@ public static partial class MediaTypeFromDevice
/// <param name="opticalDisc">Is the media an optical disc</param>
/// <returns>Media type</returns>
static MediaType GetFromMmc(string model, byte mediumType, byte densityCode, ulong blocks, uint blockSize,
bool isUsb, bool opticalDisc)
bool isUsb, bool opticalDisc)
{
switch(mediumType)
{
case 0x00:
if(blockSize == 512)
{
if(blocks == 1281856)
{
AaruConsole.DebugWriteLine(MODULE_NAME,
@@ -74,6 +75,7 @@ public static partial class MediaTypeFromDevice
return MediaType.PD650;
}
}
AaruConsole.DebugWriteLine(MODULE_NAME,
Localization.SCSI_medium_type_is_0_setting_media_type_to_Compact_Disc,
@@ -144,6 +146,7 @@ public static partial class MediaTypeFromDevice
return MediaType.FlashDrive;
case 0x80:
if(model.ToLowerInvariant().StartsWith("ult", StringComparison.Ordinal))
{
switch(densityCode)
{
case 0x42:
@@ -175,6 +178,7 @@ public static partial class MediaTypeFromDevice
return MediaType.LTO5;
}
}
break;
}

View File

@@ -67,15 +67,18 @@ public static partial class MediaTypeFromDevice
return GetFromSbc(vendor, model, mediumType, blocks, blockSize);
// Sequential access device
case 0x01: return GetFromSsc(scsiPeripheralType, vendor, model, mediumType, densityCode, blocks, blockSize);
case 0x01:
return GetFromSsc(scsiPeripheralType, vendor, model, mediumType, densityCode, blocks, blockSize);
// Write-once device
case 0x04:
// Optical device
case 0x07: return GetFromOdc(mediumType, blocks, blockSize);
case 0x07:
return GetFromOdc(mediumType, blocks, blockSize);
// MultiMedia Device
case 0x05: return GetFromMmc(model, mediumType, densityCode, blocks, blockSize, isUsb, opticalDisc);
case 0x05:
return GetFromMmc(model, mediumType, densityCode, blocks, blockSize, isUsb, opticalDisc);
// MD DATA drives
case 0x10 when model.StartsWith("MDM", StringComparison.Ordinal) ||

View File

@@ -49,7 +49,7 @@ public static partial class MediaTypeFromDevice
/// <param name="blockSize">Size of a block in bytes</param>
/// <returns>Media type</returns>
public static MediaType GetFromSsc(byte scsiPeripheralType, string vendor, string model, byte mediumType,
byte densityCode, ulong blocks, uint blockSize)
byte densityCode, ulong blocks, uint blockSize)
{
switch(mediumType)
{
@@ -1073,8 +1073,8 @@ public static partial class MediaTypeFromDevice
return MediaType.Exatape106m;
}
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("superdlt", StringComparison.Ordinal))
{
AaruConsole.DebugWriteLine(MODULE_NAME,
@@ -1127,8 +1127,8 @@ public static partial class MediaTypeFromDevice
case 0x88:
case 0x89:
{
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("superdlt", StringComparison.Ordinal))
{
AaruConsole.DebugWriteLine(MODULE_NAME,
@@ -1174,8 +1174,8 @@ public static partial class MediaTypeFromDevice
return MediaType.Exatape160mXL;
}
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("superdlt", StringComparison.Ordinal))
{
AaruConsole.DebugWriteLine(MODULE_NAME, Localization.SCSI_Media_Type_Description_SDLT,
@@ -1205,8 +1205,8 @@ public static partial class MediaTypeFromDevice
case 0x92:
case 0x93:
{
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("superdlt", StringComparison.Ordinal))
{
AaruConsole.DebugWriteLine(MODULE_NAME, Localization.SCSI_Media_Type_Description_SDLT,
@@ -1228,8 +1228,8 @@ public static partial class MediaTypeFromDevice
case 0x00:
case 0x4A:
{
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("superdlt", StringComparison.Ordinal))
{
AaruConsole.DebugWriteLine(MODULE_NAME,
@@ -1254,8 +1254,8 @@ public static partial class MediaTypeFromDevice
case 0x98:
case 0x99:
{
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
if(model.ToLowerInvariant().StartsWith("dlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("sdlt", StringComparison.Ordinal) ||
model.ToLowerInvariant().StartsWith("superdlt", StringComparison.Ordinal))
{
AaruConsole.DebugWriteLine(MODULE_NAME,

View File

@@ -45,12 +45,16 @@ public class CdOffset
{
/// <summary>Drive manufacturer</summary>
public string Manufacturer { get; set; }
/// <summary>Drive model</summary>
public string Model { get; set; }
/// <summary>Reading offset</summary>
public short Offset { get; set; }
/// <summary>Number of times this offset has been submitted</summary>
public int Submissions { get; set; }
/// <summary>Percentage of submissions in agreement with this offset</summary>
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:P0}")]
public float Agreement { get; set; }

File diff suppressed because it is too large Load Diff

View File

@@ -57,12 +57,19 @@ public class ResumeJson
}
/// <summary>Information that allows to resume a dump</summary>
[Serializable, XmlRoot("DicResume", Namespace = "", IsNullable = false)]
[Serializable]
[XmlRoot("DicResume", Namespace = "", IsNullable = false)]
public class Resume
{
/// <summary>List of blocks that returned an error on reading</summary>
[XmlArrayItem("Block")]
public List<ulong> BadBlocks;
/// <summary>List of CD subchannels that did not read correctly</summary>
[XmlArrayItem("Block")]
public List<int> BadSubchannels;
/// <summary>Extents of BLANK sectors for magneto-opticals</summary>
[XmlArrayItem("Extent")]
public Extent[] BlankExtents;
/// <summary>Date/time this resume file was created</summary>
[XmlElement(DataType = "dateTime")]
public DateTime CreationDate;
@@ -71,21 +78,15 @@ public class Resume
/// <summary>Date/time this resume file was last written to</summary>
[XmlElement(DataType = "dateTime")]
public DateTime LastWriteDate;
/// <summary>Title keys that has not been read</summary>
[XmlArrayItem("Block")]
public List<ulong> MissingTitleKeys;
/// <summary>Next block to read</summary>
public ulong NextBlock;
/// <summary>Is media removable?</summary>
public bool Removable;
/// <summary>Is media a tape?</summary>
public bool Tape;
/// <summary>List of CD subchannels that did not read correctly</summary>
[XmlArrayItem("Block")]
public List<int> BadSubchannels;
/// <summary>Extents of BLANK sectors for magneto-opticals</summary>
[XmlArrayItem("Extent")]
public Extent[] BlankExtents;
/// <summary>Title keys that has not been read</summary>
[XmlArrayItem("Block")]
public List<ulong> MissingTitleKeys;
/// <summary>List of dump tries</summary>
[XmlArrayItem("DumpTry")]
public List<DumpHardware> Tries;

View File

@@ -52,34 +52,45 @@ public class Stats
{
/// <summary>Executed commands</summary>
public CommandsStats Commands;
/// <summary>Operating systems Aaru has run from</summary>
[XmlArrayItem("OperatingSystem")]
public List<OsStats> OperatingSystems { get; set; }
/// <summary>Aaru versions</summary>
[XmlArrayItem("Version")]
public List<NameValueStats> Versions { get; set; }
/// <summary>Detected filesystems</summary>
[XmlArrayItem("Filesystem")]
public List<NameValueStats> Filesystems { get; set; }
/// <summary>Detected partitioning schemes</summary>
[XmlArrayItem("Scheme")]
public List<NameValueStats> Partitions { get; set; }
/// <summary>Media image formats</summary>
[XmlArrayItem("Format")]
public List<NameValueStats> MediaImages { get; set; }
/// <summary>Used filters</summary>
[XmlArrayItem("Filter", IsNullable = true)]
public List<NameValueStats> Filters { get; set; }
/// <summary>Found devices</summary>
[XmlArrayItem("Device", IsNullable = true)]
public List<DeviceStats> Devices { get; set; }
/// <summary>Found media types, real, and in image</summary>
[XmlArrayItem("Media")]
public List<MediaStats> Medias { get; set; }
/// <summary>Benchmark statistics</summary>
public BenchmarkStats Benchmark { get; set; }
/// <summary>Media scanning statistics</summary>
public MediaScanStats MediaScan { get; set; }
/// <summary>Image verification statistics</summary>
public VerifyStats Verify { get; set; }
}
@@ -96,26 +107,37 @@ public class StatsDto
{
/// <summary>Executed commands</summary>
public List<NameValueStats> Commands { get; set; }
/// <summary>Operating systems Aaru has run from</summary>
public List<OsStats> OperatingSystems { get; set; }
/// <summary>Aaru versions</summary>
public List<NameValueStats> Versions { get; set; }
/// <summary>Detected filesystems</summary>
public List<NameValueStats> Filesystems { get; set; }
/// <summary>Detected partitioning schemes</summary>
public List<NameValueStats> Partitions { get; set; }
/// <summary>Media image formats</summary>
public List<NameValueStats> MediaFormats { get; set; }
/// <summary>Used filters</summary>
public List<NameValueStats> Filters { get; set; }
/// <summary>Found devices</summary>
public List<DeviceStats> Devices { get; set; }
/// <summary>Found media types, real, and in image</summary>
public List<MediaStats> Medias { get; set; }
/// <summary>Remote applications</summary>
public List<OsStats> RemoteApplications { get; set; }
/// <summary>Remote application architectures</summary>
public List<NameValueStats> RemoteArchitectures { get; set; }
/// <summary>Operating systems where a remote application has been running</summary>
public List<OsStats> RemoteOperatingSystems { get; set; }
}
@@ -260,13 +282,13 @@ public class BenchmarkStats
[SuppressMessage("ReSharper", "InconsistentNaming")]
public class MediaStats
{
/// <summary>Found in a real device?</summary>
[XmlAttribute]
public bool real;
/// <summary>Media type</summary>
[XmlAttribute(AttributeName = "type")]
[JsonPropertyName("type")]
public string MediaType;
/// <summary>Found in a real device?</summary>
[XmlAttribute]
public bool real;
/// <summary>Number of times it has been found</summary>
[XmlText]
public long Value;
@@ -278,12 +300,16 @@ public class DeviceStats
/// <summary>Is manufacturer null?</summary>
[XmlIgnore]
public bool ManufacturerSpecified;
/// <summary>Manufacturer string</summary>
public string Manufacturer { get; set; }
/// <summary>Model string</summary>
public string Model { get; set; }
/// <summary>Revision or firmware version</summary>
public string Revision { get; set; }
/// <summary>Bus the device was attached to</summary>
public string Bus { get; set; }
}
@@ -295,6 +321,7 @@ public class NameValueStats
/// <summary>Name</summary>
[XmlAttribute]
public string name { get; set; }
/// <summary>Number of times it has been used/found</summary>
[XmlText]
public long Value { get; set; }
@@ -307,9 +334,11 @@ public class OsStats
/// <summary>Operating system name</summary>
[XmlAttribute]
public string name { get; set; }
/// <summary>Operating system version</summary>
[XmlAttribute]
public string version { get; set; }
/// <summary>Number of times Aaru run on it</summary>
[XmlText]
public long Value { get; set; }

View File

@@ -61,8 +61,10 @@ public struct Partition : IEquatable<Partition>, IComparable<Partition>
public ulong Length;
/// <summary>Information that does not find space in this struct</summary>
public string Description;
/// <summary>LBA of last partition sector</summary>
public readonly ulong End => Start + Length - 1;
/// <summary>Name of partition scheme that contains this partition</summary>
public string Scheme;

View File

@@ -55,11 +55,12 @@ namespace Aaru.CommonTypes.Structs.Devices.ATA;
/// T13-1699D rev. 3f (ATA8-ACS) T13-1699D rev. 4a (ATA8-ACS) T13-2015D rev. 2 (ACS-2) T13-2161D rev. 5 (ACS-3) CF+
/// &amp; CF Specification rev. 1.4 (CFA)
/// </summary>
[SuppressMessage("ReSharper", "InconsistentNaming"), SuppressMessage("ReSharper", "MemberCanBeInternal"),
SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static class Identify
{
const string MODULE_NAME = "ATA/ATAPI IDENTIFY decoder";
#region CapabilitiesBit enum
/// <summary>Capabilities flag bits.</summary>
[Flags]
@@ -101,6 +102,10 @@ public static class Identify
PhysicalAlignment0 = 0x0001
}
#endregion
#region CapabilitiesBit2 enum
/// <summary>More capabilities flag bits.</summary>
[Flags]
public enum CapabilitiesBit2 : ushort
@@ -109,17 +114,29 @@ public static class Identify
MustBeClear = 0x8000,
/// <summary>MUST be set</summary>
MustBeSet = 0x4000,
#pragma warning disable 1591
Reserved13 = 0x2000, Reserved12 = 0x1000, Reserved11 = 0x0800,
Reserved10 = 0x0400, Reserved09 = 0x0200, Reserved08 = 0x0100,
Reserved07 = 0x0080, Reserved06 = 0x0040, Reserved05 = 0x0020,
Reserved04 = 0x0010, Reserved03 = 0x0008, Reserved02 = 0x0004,
#pragma warning disable 1591
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
Reserved05 = 0x0020,
Reserved04 = 0x0010,
Reserved03 = 0x0008,
Reserved02 = 0x0004,
Reserved01 = 0x0002,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Indicates a device specific minimum standby timer value</summary>
SpecificStandbyTimer = 0x0001
}
#endregion
#region CapabilitiesBit3 enum
/// <summary>Even more capabilities flag bits.</summary>
[Flags]
public enum CapabilitiesBit3 : byte
@@ -136,13 +153,17 @@ public static class Identify
SanitizeCommands = 0x0008,
/// <summary>SANITIZE ANTIFREEZE LOCK EXT is supported</summary>
SanitizeAntifreeze = 0x0004,
#pragma warning disable 1591
#pragma warning disable 1591
Reserved01 = 0x0002,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Multiple logical sector setting is valid</summary>
MultipleValid = 0x0001
}
#endregion
#region CommandSetBit enum
/// <summary>Command set flag bits.</summary>
[Flags]
public enum CommandSetBit : ushort
@@ -181,6 +202,10 @@ public static class Identify
SMART = 0x0001
}
#endregion
#region CommandSetBit2 enum
/// <summary>More command set flag bits.</summary>
[Flags]
public enum CommandSetBit2 : ushort
@@ -219,6 +244,10 @@ public static class Identify
DownloadMicrocode = 0x0001
}
#endregion
#region CommandSetBit3 enum
/// <summary>Even more command set flag bits.</summary>
[Flags]
public enum CommandSetBit3 : ushort
@@ -257,6 +286,10 @@ public static class Identify
SMARTLog = 0x0001
}
#endregion
#region CommandSetBit4 enum
/// <summary>Yet more command set flag bits.</summary>
[Flags]
public enum CommandSetBit4 : ushort
@@ -265,10 +298,12 @@ public static class Identify
MustBeClear = 0x8000,
/// <summary>MUST be set</summary>
MustBeSet = 0x4000,
#pragma warning disable 1591
Reserved13 = 0x2000, Reserved12 = 0x1000, Reserved11 = 0x0800,
#pragma warning disable 1591
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>DSN feature set is supported</summary>
DSN = 0x0200,
/// <summary>Accessible Max Address Configuration is supported</summary>
@@ -291,6 +326,10 @@ public static class Identify
DT1825 = 0x0001
}
#endregion
#region CommandSetBit5 enum
/// <summary>Yet again more command set flag bits.</summary>
[Flags]
public enum CommandSetBit5 : ushort
@@ -329,21 +368,39 @@ public static class Identify
ZonedBit0 = 0x0001
}
#endregion
#region DataSetMgmtBit enum
/// <summary>Data set management flag bits.</summary>
[Flags]
public enum DataSetMgmtBit : ushort
{
#pragma warning disable 1591
Reserved15 = 0x8000, Reserved14 = 0x4000, Reserved13 = 0x2000,
Reserved12 = 0x1000, Reserved11 = 0x0800, Reserved10 = 0x0400,
Reserved09 = 0x0200, Reserved08 = 0x0100, Reserved07 = 0x0080,
Reserved06 = 0x0040, Reserved05 = 0x0020, Reserved04 = 0x0010,
Reserved03 = 0x0008, Reserved02 = 0x0004, Reserved01 = 0x0002,
#pragma warning restore 1591
#pragma warning disable 1591
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
Reserved05 = 0x0020,
Reserved04 = 0x0010,
Reserved03 = 0x0008,
Reserved02 = 0x0004,
Reserved01 = 0x0002,
#pragma warning restore 1591
/// <summary>TRIM is supported</summary>
Trim = 0x0001
}
#endregion
#region DeviceFormFactorEnum enum
/// <summary>Device form factor</summary>
public enum DeviceFormFactorEnum : ushort
{
@@ -361,6 +418,10 @@ public static class Identify
LessThanOnePointEight = 5
}
#endregion
#region ExtendedIdentifyBit enum
/// <summary>Extended identify flag bits.</summary>
[Flags]
public enum ExtendedIdentifyBit : byte
@@ -383,6 +444,10 @@ public static class Identify
Words54to58Valid = 0x01
}
#endregion
#region GeneralConfigurationBit enum
/// <summary>General configuration flag bits.</summary>
[Flags]
public enum GeneralConfigurationBit : ushort
@@ -423,14 +488,20 @@ public static class Identify
Reserved = 0x0001
}
#endregion
#region MajorVersionBit enum
/// <summary>Word 80 Major version</summary>
[Flags]
public enum MajorVersionBit : ushort
{
#pragma warning disable 1591
Reserved15 = 0x8000, Reserved14 = 0x4000, Reserved13 = 0x2000,
#pragma warning disable 1591
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>ACS-4</summary>
ACS4 = 0x0800,
/// <summary>ACS-3</summary>
@@ -453,11 +524,15 @@ public static class Identify
Ata2 = 0x0004,
/// <summary>ATA-1</summary>
Ata1 = 0x0002,
#pragma warning disable 1591
#pragma warning disable 1591
Reserved00 = 0x0001
#pragma warning restore 1591
#pragma warning restore 1591
}
#endregion
#region SATACapabilitiesBit enum
/// <summary>SATA capabilities flags</summary>
[Flags]
public enum SATACapabilitiesBit : ushort
@@ -478,10 +553,12 @@ public static class Identify
PowerReceipt = 0x0200,
/// <summary>Supports NCQ</summary>
NCQ = 0x0100,
#pragma warning disable 1591
Reserved07 = 0x0080, Reserved06 = 0x0040, Reserved05 = 0x0020,
#pragma warning disable 1591
Reserved07 = 0x0080,
Reserved06 = 0x0040,
Reserved05 = 0x0020,
Reserved04 = 0x0010,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Supports SATA Gen. 3 Signaling Speed (6.0Gb/s)</summary>
Gen3Speed = 0x0008,
/// <summary>Supports SATA Gen. 2 Signaling Speed (3.0Gb/s)</summary>
@@ -492,15 +569,25 @@ public static class Identify
Clear = 0x0001
}
#endregion
#region SATACapabilitiesBit2 enum
/// <summary>More SATA capabilities flags</summary>
[Flags]
public enum SATACapabilitiesBit2 : ushort
{
#pragma warning disable 1591
Reserved15 = 0x8000, Reserved14 = 0x4000, Reserved13 = 0x2000,
Reserved12 = 0x1000, Reserved11 = 0x0800, Reserved10 = 0x0400,
Reserved09 = 0x0200, Reserved08 = 0x0100, Reserved07 = 0x0080,
#pragma warning restore 1591
#pragma warning disable 1591
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
#pragma warning restore 1591
/// <summary>Supports RECEIVE FPDMA QUEUED and SEND FPDMA QUEUED</summary>
FPDMAQ = 0x0040,
/// <summary>Supports NCQ Queue Management</summary>
@@ -521,15 +608,24 @@ public static class Identify
Clear = 0x0001
}
#endregion
#region SATAFeaturesBit enum
/// <summary>SATA features flags</summary>
[Flags]
public enum SATAFeaturesBit : ushort
{
#pragma warning disable 1591
Reserved15 = 0x8000, Reserved14 = 0x4000, Reserved13 = 0x2000,
Reserved12 = 0x1000, Reserved11 = 0x0800, Reserved10 = 0x0400,
Reserved09 = 0x0200, Reserved08 = 0x0100,
#pragma warning restore 1591
#pragma warning disable 1591
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
#pragma warning restore 1591
/// <summary>Supports NCQ autosense</summary>
NCQAutoSense = 0x0080,
/// <summary>Automatic Partial to Slumber transitions are enabled</summary>
@@ -552,16 +648,26 @@ public static class Identify
Clear = 0x0001
}
#endregion
#region SCTCommandTransportBit enum
/// <summary>SCT Command Transport flags</summary>
[Flags]
public enum SCTCommandTransportBit : ushort
{
#pragma warning disable 1591
Vendor15 = 0x8000, Vendor14 = 0x4000, Vendor13 = 0x2000,
Vendor12 = 0x1000, Reserved11 = 0x0800, Reserved10 = 0x0400,
Reserved09 = 0x0200, Reserved08 = 0x0100, Reserved07 = 0x0080,
#pragma warning disable 1591
Vendor15 = 0x8000,
Vendor14 = 0x4000,
Vendor13 = 0x2000,
Vendor12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>SCT Command Transport Data Tables supported</summary>
DataTables = 0x0020,
/// <summary>SCT Command Transport Features Control supported</summary>
@@ -576,20 +682,29 @@ public static class Identify
Supported = 0x0001
}
#endregion
#region SecurityStatusBit enum
/// <summary>Security status flag bits.</summary>
[Flags]
public enum SecurityStatusBit : ushort
{
#pragma warning disable 1591
Reserved15 = 0x8000, Reserved14 = 0x4000, Reserved13 = 0x2000,
Reserved12 = 0x1000, Reserved11 = 0x0800, Reserved10 = 0x0400,
#pragma warning disable 1591
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Maximum security level</summary>
Maximum = 0x0100,
#pragma warning disable 1591
Reserved07 = 0x0080, Reserved06 = 0x0040,
#pragma warning restore 1591
#pragma warning disable 1591
Reserved07 = 0x0080,
Reserved06 = 0x0040,
#pragma warning restore 1591
/// <summary>Supports enhanced security erase</summary>
Enhanced = 0x0020,
/// <summary>Security count expired</summary>
@@ -604,6 +719,10 @@ public static class Identify
Supported = 0x0001
}
#endregion
#region SpecificConfigurationEnum enum
/// <summary>Specific configuration flags</summary>
public enum SpecificConfigurationEnum : ushort
{
@@ -617,17 +736,30 @@ public static class Identify
NotRequiresSetCompleteResponse = 0xC837
}
#endregion
#region TransferMode enum
/// <summary>Transfer mode flags</summary>
[Flags]
public enum TransferMode : byte
{
#pragma warning disable 1591
Mode7 = 0x80, Mode6 = 0x40, Mode5 = 0x20,
Mode4 = 0x10, Mode3 = 0x08, Mode2 = 0x04,
Mode1 = 0x02, Mode0 = 0x01
#pragma warning restore 1591
#pragma warning disable 1591
Mode7 = 0x80,
Mode6 = 0x40,
Mode5 = 0x20,
Mode4 = 0x10,
Mode3 = 0x08,
Mode2 = 0x04,
Mode1 = 0x02,
Mode0 = 0x01
#pragma warning restore 1591
}
#endregion
#region TrustedComputingBit enum
/// <summary>Trusted Computing flags</summary>
[Flags]
public enum TrustedComputingBit : ushort
@@ -636,17 +768,158 @@ public static class Identify
Clear = 0x8000,
/// <summary>MUST be set</summary>
Set = 0x4000,
#pragma warning disable 1591
Reserved13 = 0x2000, Reserved12 = 0x1000, Reserved11 = 0x0800,
Reserved10 = 0x0400, Reserved09 = 0x0200, Reserved08 = 0x0100,
Reserved07 = 0x0080, Reserved06 = 0x0040, Reserved05 = 0x0020,
Reserved04 = 0x0010, Reserved03 = 0x0008, Reserved02 = 0x0004,
#pragma warning disable 1591
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
Reserved05 = 0x0020,
Reserved04 = 0x0010,
Reserved03 = 0x0008,
Reserved02 = 0x0004,
Reserved01 = 0x0002,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Trusted Computing feature set is supported</summary>
TrustedComputing = 0x0001
}
#endregion
const string MODULE_NAME = "ATA/ATAPI IDENTIFY decoder";
/// <summary>Decodes a raw IDENTIFY DEVICE response</summary>
/// <param name="IdentifyDeviceResponse">Raw IDENTIFY DEVICE response</param>
/// <returns>Decoded IDENTIFY DEVICE</returns>
public static IdentifyDevice? Decode(byte[] IdentifyDeviceResponse)
{
if(IdentifyDeviceResponse == null)
return null;
if(IdentifyDeviceResponse.Length != 512)
{
AaruConsole.DebugWriteLine(MODULE_NAME,
Localization.IDENTIFY_response_is_different_than_512_bytes_not_decoding);
return null;
}
IdentifyDevice ATAID = Marshal.ByteArrayToStructureLittleEndian<IdentifyDevice>(IdentifyDeviceResponse);
ATAID.WWN = DescrambleWWN(ATAID.WWN);
ATAID.WWNExtension = DescrambleWWN(ATAID.WWNExtension);
ATAID.SerialNumber = DescrambleATAString(IdentifyDeviceResponse, 10 * 2, 20);
ATAID.FirmwareRevision = DescrambleATAString(IdentifyDeviceResponse, 23 * 2, 8);
ATAID.Model = DescrambleATAString(IdentifyDeviceResponse, 27 * 2, 40);
ATAID.AdditionalPID = DescrambleATAString(IdentifyDeviceResponse, 170 * 2, 8);
ATAID.MediaSerial = DescrambleATAString(IdentifyDeviceResponse, 176 * 2, 40);
ATAID.MediaManufacturer = DescrambleATAString(IdentifyDeviceResponse, 196 * 2, 20);
return ATAID;
}
/// <summary>Encodes a raw IDENTIFY DEVICE response</summary>
/// <param name="identify">Decoded IDENTIFY DEVICE</param>
/// <returns>Raw IDENTIFY DEVICE response</returns>
public static byte[] Encode(IdentifyDevice? identify)
{
if(identify is null)
return null;
IdentifyDevice ataId = identify.Value;
ataId.WWN = DescrambleWWN(ataId.WWN);
ataId.WWNExtension = DescrambleWWN(ataId.WWNExtension);
var buf = new byte[512];
nint ptr = System.Runtime.InteropServices.Marshal.AllocHGlobal(512);
System.Runtime.InteropServices.Marshal.StructureToPtr(ataId, ptr, false);
System.Runtime.InteropServices.Marshal.Copy(ptr, buf, 0, 512);
System.Runtime.InteropServices.Marshal.FreeHGlobal(ptr);
byte[] str = ScrambleATAString(ataId.SerialNumber, 20);
Array.Copy(str, 0, buf, 10 * 2, 20);
str = ScrambleATAString(ataId.FirmwareRevision, 8);
Array.Copy(str, 0, buf, 23 * 2, 8);
str = ScrambleATAString(ataId.Model, 40);
Array.Copy(str, 0, buf, 27 * 2, 40);
str = ScrambleATAString(ataId.AdditionalPID, 8);
Array.Copy(str, 0, buf, 170 * 2, 8);
str = ScrambleATAString(ataId.MediaSerial, 40);
Array.Copy(str, 0, buf, 176 * 2, 40);
str = ScrambleATAString(ataId.MediaManufacturer, 20);
Array.Copy(str, 0, buf, 196 * 2, 20);
return buf;
}
static ulong DescrambleWWN(ulong WWN)
{
byte[] qwb = BitConverter.GetBytes(WWN);
var qword = new byte[8];
qword[7] = qwb[1];
qword[6] = qwb[0];
qword[5] = qwb[3];
qword[4] = qwb[2];
qword[3] = qwb[5];
qword[2] = qwb[4];
qword[1] = qwb[7];
qword[0] = qwb[6];
return BitConverter.ToUInt64(qword, 0);
}
static string DescrambleATAString(IList<byte> buffer, int offset, int length)
{
byte[] outbuf = buffer[offset + length - 1] != 0x00 ? new byte[length + 1] : new byte[length];
for(var i = 0; i < length; i += 2)
{
outbuf[i] = buffer[offset + i + 1];
outbuf[i + 1] = buffer[offset + i];
}
string outStr = StringHandlers.CToString(outbuf);
return outStr.Trim();
}
static byte[] ScrambleATAString(string str, int length)
{
var buf = new byte[length];
for(var i = 0; i < length; i++)
buf[i] = 0x20;
if(str is null)
return buf;
byte[] bytes = Encoding.ASCII.GetBytes(str);
if(bytes.Length % 2 != 0)
{
var tmp = new byte[bytes.Length + 1];
tmp[^1] = 0x20;
Array.Copy(bytes, 0, tmp, 0, bytes.Length);
bytes = tmp;
}
for(var i = 0; i < bytes.Length; i += 2)
{
buf[i] = bytes[i + 1];
buf[i + 1] = bytes[i];
}
return buf;
}
#region Nested type: IdentifyDevice
/// <summary>IDENTIFY DEVICE decoded response</summary>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 2)]
public struct IdentifyDevice
@@ -999,130 +1272,5 @@ public static class Identify
public byte Checksum;
}
/// <summary>Decodes a raw IDENTIFY DEVICE response</summary>
/// <param name="IdentifyDeviceResponse">Raw IDENTIFY DEVICE response</param>
/// <returns>Decoded IDENTIFY DEVICE</returns>
public static IdentifyDevice? Decode(byte[] IdentifyDeviceResponse)
{
if(IdentifyDeviceResponse == null)
return null;
if(IdentifyDeviceResponse.Length != 512)
{
AaruConsole.DebugWriteLine(MODULE_NAME,
Localization.IDENTIFY_response_is_different_than_512_bytes_not_decoding);
return null;
}
IdentifyDevice ATAID = Marshal.ByteArrayToStructureLittleEndian<IdentifyDevice>(IdentifyDeviceResponse);
ATAID.WWN = DescrambleWWN(ATAID.WWN);
ATAID.WWNExtension = DescrambleWWN(ATAID.WWNExtension);
ATAID.SerialNumber = DescrambleATAString(IdentifyDeviceResponse, 10 * 2, 20);
ATAID.FirmwareRevision = DescrambleATAString(IdentifyDeviceResponse, 23 * 2, 8);
ATAID.Model = DescrambleATAString(IdentifyDeviceResponse, 27 * 2, 40);
ATAID.AdditionalPID = DescrambleATAString(IdentifyDeviceResponse, 170 * 2, 8);
ATAID.MediaSerial = DescrambleATAString(IdentifyDeviceResponse, 176 * 2, 40);
ATAID.MediaManufacturer = DescrambleATAString(IdentifyDeviceResponse, 196 * 2, 20);
return ATAID;
}
/// <summary>Encodes a raw IDENTIFY DEVICE response</summary>
/// <param name="identify">Decoded IDENTIFY DEVICE</param>
/// <returns>Raw IDENTIFY DEVICE response</returns>
public static byte[] Encode(IdentifyDevice? identify)
{
if(identify is null)
return null;
IdentifyDevice ataId = identify.Value;
ataId.WWN = DescrambleWWN(ataId.WWN);
ataId.WWNExtension = DescrambleWWN(ataId.WWNExtension);
byte[] buf = new byte[512];
nint ptr = System.Runtime.InteropServices.Marshal.AllocHGlobal(512);
System.Runtime.InteropServices.Marshal.StructureToPtr(ataId, ptr, false);
System.Runtime.InteropServices.Marshal.Copy(ptr, buf, 0, 512);
System.Runtime.InteropServices.Marshal.FreeHGlobal(ptr);
byte[] str = ScrambleATAString(ataId.SerialNumber, 20);
Array.Copy(str, 0, buf, 10 * 2, 20);
str = ScrambleATAString(ataId.FirmwareRevision, 8);
Array.Copy(str, 0, buf, 23 * 2, 8);
str = ScrambleATAString(ataId.Model, 40);
Array.Copy(str, 0, buf, 27 * 2, 40);
str = ScrambleATAString(ataId.AdditionalPID, 8);
Array.Copy(str, 0, buf, 170 * 2, 8);
str = ScrambleATAString(ataId.MediaSerial, 40);
Array.Copy(str, 0, buf, 176 * 2, 40);
str = ScrambleATAString(ataId.MediaManufacturer, 20);
Array.Copy(str, 0, buf, 196 * 2, 20);
return buf;
}
static ulong DescrambleWWN(ulong WWN)
{
byte[] qwb = BitConverter.GetBytes(WWN);
byte[] qword = new byte[8];
qword[7] = qwb[1];
qword[6] = qwb[0];
qword[5] = qwb[3];
qword[4] = qwb[2];
qword[3] = qwb[5];
qword[2] = qwb[4];
qword[1] = qwb[7];
qword[0] = qwb[6];
return BitConverter.ToUInt64(qword, 0);
}
static string DescrambleATAString(IList<byte> buffer, int offset, int length)
{
byte[] outbuf = buffer[offset + length - 1] != 0x00 ? new byte[length + 1] : new byte[length];
for(int i = 0; i < length; i += 2)
{
outbuf[i] = buffer[offset + i + 1];
outbuf[i + 1] = buffer[offset + i];
}
string outStr = StringHandlers.CToString(outbuf);
return outStr.Trim();
}
static byte[] ScrambleATAString(string str, int length)
{
byte[] buf = new byte[length];
for(int i = 0; i < length; i++)
buf[i] = 0x20;
if(str is null)
return buf;
byte[] bytes = Encoding.ASCII.GetBytes(str);
if(bytes.Length % 2 != 0)
{
byte[] tmp = new byte[bytes.Length + 1];
tmp[^1] = 0x20;
Array.Copy(bytes, 0, tmp, 0, bytes.Length);
bytes = tmp;
}
for(int i = 0; i < bytes.Length; i += 2)
{
buf[i] = bytes[i + 1];
buf[i + 1] = bytes[i];
}
return buf;
}
#endregion
}

View File

@@ -47,8 +47,9 @@ namespace Aaru.CommonTypes.Structs.Devices.SCSI;
/// Information from the following standards: T9/375-D revision 10l T10/995-D revision 10 T10/1236-D revision 20
/// T10/1416-D revision 23 T10/1731-D revision 16 T10/502 revision 05 RFC 7144 ECMA-111
/// </summary>
[SuppressMessage("ReSharper", "InconsistentNaming"), SuppressMessage("ReSharper", "MemberCanBeInternal"),
SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public struct Inquiry
{
const string MODULE_NAME = "SCSI INQUIRY decoder";
@@ -149,7 +150,8 @@ public struct Inquiry
// Per DLT4000/DLT4500/DLT4700 Cartridge Tape Subsystem Product Manual
#region Quantum vendor unique inquiry data structure
#region Quantum vendor unique inquiry data structure
/// <summary>Means that the INQUIRY response contains 56 bytes or more, so this data has been filled</summary>
public bool QuantumPresent;
/// <summary>The product family. Byte 36, bits 7 to 5</summary>
@@ -188,9 +190,11 @@ public struct Inquiry
public bool Qt_LibraryPresent;
/// <summary>The module revision. Bytes 52 to 55</summary>
public byte[] Qt_ModuleRevision;
#endregion Quantum vendor unique inquiry data structure
#region IBM vendor unique inquiry data structure
#endregion Quantum vendor unique inquiry data structure
#region IBM vendor unique inquiry data structure
/// <summary>Means that the INQUIRY response contains 56 bytes or more, so this data has been filled</summary>
public bool IBMPresent;
/// <summary>Drive is not capable of automation Byte 36 bit 0</summary>
@@ -199,9 +203,11 @@ public struct Inquiry
public byte IBM_PerformanceLimit;
/// <summary>Byte 41</summary>
public byte IBM_OEMSpecific;
#endregion IBM vendor unique inquiry data structure
#region HP vendor unique inquiry data structure
#endregion IBM vendor unique inquiry data structure
#region HP vendor unique inquiry data structure
/// <summary>Means that the INQUIRY response contains 49 bytes or more, so this data has been filled</summary>
public bool HPPresent;
/// <summary>WORM version Byte 40 bits 7 to 1</summary>
@@ -210,9 +216,11 @@ public struct Inquiry
public bool HP_WORM;
/// <summary>Bytes 43 to 48</summary>
public byte[] HP_OBDR;
#endregion HP vendor unique inquiry data structure
#region Seagate vendor unique inquiry data structure
#endregion HP vendor unique inquiry data structure
#region Seagate vendor unique inquiry data structure
/// <summary>Means that bytes 36 to 43 are filled</summary>
public bool SeagatePresent;
/// <summary>Drive Serial Number Bytes 36 to 43</summary>
@@ -225,9 +233,11 @@ public struct Inquiry
public bool Seagate3Present;
/// <summary>Reserved Seagate field Bytes 144 to 147</summary>
public byte[] Seagate_ServoPROMPartNo;
#endregion Seagate vendor unique inquiry data structure
#region Kreon vendor unique inquiry data structure
#endregion Seagate vendor unique inquiry data structure
#region Kreon vendor unique inquiry data structure
/// <summary>Means that firmware is Kreon</summary>
public bool KreonPresent;
/// <summary>Kreon identifier Bytes 36 to 40</summary>
@@ -236,23 +246,28 @@ public struct Inquiry
public byte KreonSpace;
/// <summary>Kreon version string Bytes 42 to 46</summary>
public byte[] KreonVersion;
#endregion Kreon vendor unique inquiry data structure
#region Sony Hi-MD data
#endregion Kreon vendor unique inquiry data structure
#region Sony Hi-MD data
/// <summary>Set if Hi-MD signature is present</summary>
public bool IsHiMD;
/// <summary>Hi-MD signature, bytes 36 to 44</summary>
public byte[] HiMDSignature;
/// <summary>Unknown data, bytes 44 to 55</summary>
public byte[] HiMDSpecific;
#endregion Sony Hi-MD data
#endregion Sony Hi-MD data
static readonly byte[] HiMDSignatureContents = "Hi-MD "u8.ToArray();
/// <summary>Decodes a SCSI INQUIRY response</summary>
/// <param name="SCSIInquiryResponse">INQUIRY raw response data</param>
/// <returns>Decoded SCSI INQUIRY</returns>
#region Public methods
#region Public methods
public static Inquiry? Decode(byte[] SCSIInquiryResponse)
{
if(SCSIInquiryResponse == null)
@@ -465,8 +480,8 @@ public struct Inquiry
decoded.VersionDescriptors = new ushort[descriptorsNo];
for(int i = 0; i < descriptorsNo; i++)
decoded.VersionDescriptors[i] = BitConverter.ToUInt16(SCSIInquiryResponse, 58 + (i * 2));
for(var i = 0; i < descriptorsNo; i++)
decoded.VersionDescriptors[i] = BitConverter.ToUInt16(SCSIInquiryResponse, 58 + i * 2);
}
switch(SCSIInquiryResponse.Length)
@@ -518,8 +533,8 @@ public struct Inquiry
Inquiry decoded = inq.Value;
byte[] buffer = new byte[512];
byte length = 0;
var buffer = new byte[512];
byte length = 0;
buffer[0] = (byte)(decoded.PeripheralQualifier << 5);
buffer[0] += decoded.PeripheralDeviceType;
@@ -682,7 +697,7 @@ public struct Inquiry
Array.Copy(decoded.Seagate_DriveSerialNumber, 0, buffer, 36, 8);
}
if(decoded is { KreonIdentifier: {}, KreonVersion: {} })
if(decoded is { KreonIdentifier: not null, KreonVersion: not null })
{
length = 46;
Array.Copy(decoded.KreonIdentifier, 0, buffer, 36, 5);
@@ -712,7 +727,7 @@ public struct Inquiry
Array.Copy(decoded.HiMDSpecific, 0, buffer, 44, 12);
}
if(decoded is { VendorSpecific: {}, IsHiMD: false })
if(decoded is { VendorSpecific: not null, IsHiMD: false })
{
length = 56;
Array.Copy(decoded.VendorSpecific, 0, buffer, 36, 20);
@@ -742,10 +757,10 @@ public struct Inquiry
if(decoded.VersionDescriptors != null)
{
length = (byte)(58 + (decoded.VersionDescriptors.Length * 2));
length = (byte)(58 + decoded.VersionDescriptors.Length * 2);
for(int i = 0; i < decoded.VersionDescriptors.Length; i++)
Array.Copy(BitConverter.GetBytes(decoded.VersionDescriptors[i]), 0, buffer, 56 + (i * 2), 2);
for(var i = 0; i < decoded.VersionDescriptors.Length; i++)
Array.Copy(BitConverter.GetBytes(decoded.VersionDescriptors[i]), 0, buffer, 56 + i * 2, 2);
}
if(decoded.Reserved5 != null)
@@ -773,10 +788,11 @@ public struct Inquiry
}
buffer[4] = length;
byte[] dest = new byte[length];
var dest = new byte[length];
Array.Copy(buffer, 0, dest, 0, length);
return dest;
}
#endregion Public methods
#endregion Public methods
}

View File

@@ -38,89 +38,128 @@ using System.Text.Json.Serialization;
namespace Aaru.CommonTypes.Structs.Devices.SCSI.Modes;
#region Mode Page 0x2A: CD-ROM capabilities page
/// <summary>
/// CD-ROM capabilities page Page code 0x2A 16 bytes in OB-U0077C 20 bytes in SFF-8020i 22 bytes in MMC-1 26 bytes
/// in MMC-2 Variable bytes in MMC-3
/// </summary>
[SuppressMessage("ReSharper", "InconsistentNaming"), SuppressMessage("ReSharper", "MemberCanBeInternal"),
SuppressMessage("ReSharper", "MemberCanBePrivate.Global"), SuppressMessage("ReSharper", "NotAccessedField.Global")]
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
[SuppressMessage("ReSharper", "NotAccessedField.Global")]
public class ModePage_2A
{
/// <summary>Write speed performance descriptors</summary>
public ModePage_2A_WriteDescriptor[] WriteSpeedPerformanceDescriptors;
/// <summary>Parameters can be saved</summary>
public bool PS { get; set; }
/// <summary>Drive supports multi-session and/or Photo-CD</summary>
public bool MultiSession { get; set; }
/// <summary>Drive is capable of reading sectors in Mode 2 Form 2 format</summary>
public bool Mode2Form2 { get; set; }
/// <summary>Drive is capable of reading sectors in Mode 2 Form 1 format</summary>
public bool Mode2Form1 { get; set; }
/// <summary>Drive is capable of playing audio</summary>
public bool AudioPlay { get; set; }
/// <summary>Drive can return the ISRC</summary>
public bool ISRC { get; set; }
/// <summary>Drive can return the media catalogue number</summary>
public bool UPC { get; set; }
/// <summary>Drive can return C2 pointers</summary>
public bool C2Pointer { get; set; }
/// <summary>Drive can read, deinterlave and correct R-W subchannels</summary>
public bool DeinterlaveSubchannel { get; set; }
/// <summary>Drive can read interleaved and uncorrected R-W subchannels</summary>
public bool Subchannel { get; set; }
/// <summary>Drive can continue from a loss of streaming on audio reading</summary>
public bool AccurateCDDA { get; set; }
/// <summary>Audio can be read as digital data</summary>
public bool CDDACommand { get; set; }
/// <summary>Loading Mechanism Type</summary>
public byte LoadingMechanism { get; set; }
/// <summary>Drive can eject discs</summary>
public bool Eject { get; set; }
/// <summary>Drive's optional prevent jumper status</summary>
public bool PreventJumper { get; set; }
/// <summary>Current lock status</summary>
public bool LockState { get; set; }
/// <summary>Drive can lock media</summary>
public bool Lock { get; set; }
/// <summary>Each channel can be muted independently</summary>
public bool SeparateChannelMute { get; set; }
/// <summary>Each channel's volume can be controlled independently</summary>
public bool SeparateChannelVolume { get; set; }
/// <summary>Maximum drive speed in Kbytes/second</summary>
public ushort MaximumSpeed { get; set; }
/// <summary>Supported volume levels</summary>
public ushort SupportedVolumeLevels { get; set; }
/// <summary>Buffer size in Kbytes</summary>
public ushort BufferSize { get; set; }
/// <summary>Current drive speed in Kbytes/second</summary>
public ushort CurrentSpeed { get; set; }
/// <summary>Can read packet media</summary>
public bool Method2 { get; set; }
/// <summary>Can read CD-RW</summary>
public bool ReadCDRW { get; set; }
/// <summary>Can read CD-R</summary>
public bool ReadCDR { get; set; }
/// <summary>Can write CD-RW</summary>
public bool WriteCDRW { get; set; }
/// <summary>Can write CD-R</summary>
public bool WriteCDR { get; set; }
/// <summary>Supports IEC-958 digital output on port 2</summary>
public bool DigitalPort2 { get; set; }
/// <summary>Supports IEC-958 digital output on port 1</summary>
public bool DigitalPort1 { get; set; }
/// <summary>Can deliver a composite audio and video data stream</summary>
public bool Composite { get; set; }
/// <summary>This bit controls the behavior of the LOAD/UNLOAD command when trying to load a Slot with no Disc present</summary>
public bool SSS { get; set; }
/// <summary>Contains a changer that can report the exact contents of the slots</summary>
public bool SDP { get; set; }
/// <summary>Page length</summary>
public byte Length { get; set; }
/// <summary>Set if LSB comes first</summary>
public bool LSBF { get; set; }
/// <summary>Set if HIGH on LRCK indicates left channel. Clear if HIGH on LRCK indicates right channel.</summary>
public bool RCK { get; set; }
/// <summary>
/// Set if data valid on the falling edge of the BCK signal. Clear if data valid on the rising edge of the BCK
/// signal
@@ -129,37 +168,52 @@ public class ModePage_2A
/// <summary>Can do a test write</summary>
public bool TestWrite { get; set; }
/// <summary>Maximum write speed</summary>
public ushort MaxWriteSpeed { get; set; }
/// <summary>Current write speed</summary>
public ushort CurrentWriteSpeed { get; set; }
/// <summary>Can read disc's barcode</summary>
public bool ReadBarcode { get; set; }
/// <summary>Can read DVD-RAM</summary>
public bool ReadDVDRAM { get; set; }
/// <summary>Can read DVD-R</summary>
public bool ReadDVDR { get; set; }
/// <summary>Can read DVD-ROM</summary>
public bool ReadDVDROM { get; set; }
/// <summary>Can write DVD-RAM</summary>
public bool WriteDVDRAM { get; set; }
/// <summary>Can write DVD-R</summary>
public bool WriteDVDR { get; set; }
/// <summary>Can read raw R-W subchannel from the Lead-In</summary>
public bool LeadInPW { get; set; }
/// <summary>Can read both sides of a disc</summary>
public bool SCC { get; set; }
/// <summary>Support copyright management</summary>
public ushort CMRSupported { get; set; }
/// <summary>Supports buffer under-run free recording</summary>
public bool BUF { get; set; }
/// <summary>Selected rotational control</summary>
public byte RotationControlSelected { get; set; }
/// <summary>Current write speed selected</summary>
public ushort CurrentWriteSpeedSelected { get; set; }
/// <summary>Database ID</summary>
[JsonIgnore, Key]
[JsonIgnore]
[Key]
public int Id { get; set; }
/// <summary>Decodes the page 2Ah of a MODE SENSE response</summary>
@@ -263,15 +317,17 @@ public class ModePage_2A
decoded.RotationControlSelected = (byte)(pageResponse[27] & 0x03);
decoded.CurrentWriteSpeedSelected = (ushort)((pageResponse[28] << 8) + pageResponse[29]);
ushort descriptors = (ushort)((pageResponse.Length - 32) / 4);
var descriptors = (ushort)((pageResponse.Length - 32) / 4);
decoded.WriteSpeedPerformanceDescriptors = new ModePage_2A_WriteDescriptor[descriptors];
for(int i = 0; i < descriptors; i++)
for(var i = 0; i < descriptors; i++)
{
decoded.WriteSpeedPerformanceDescriptors[i] = new ModePage_2A_WriteDescriptor
{
RotationControl = (byte)(pageResponse[1 + 32 + (i * 4)] & 0x07),
WriteSpeed = (ushort)((pageResponse[2 + 32 + (i * 4)] << 8) + pageResponse[3 + 32 + (i * 4)])
RotationControl = (byte)(pageResponse[1 + 32 + i * 4] & 0x07),
WriteSpeed = (ushort)((pageResponse[2 + 32 + i * 4] << 8) + pageResponse[3 + 32 + i * 4])
};
}
return decoded;
}
@@ -281,8 +337,8 @@ public class ModePage_2A
/// <returns>Raw page 2Ah</returns>
public static byte[] Encode(ModePage_2A decoded)
{
byte[] pageResponse = new byte[512];
byte length = 16;
var pageResponse = new byte[512];
byte length = 16;
pageResponse[0] = 0x2A;
@@ -480,20 +536,20 @@ public class ModePage_2A
{
length = 32;
for(int i = 0; i < decoded.WriteSpeedPerformanceDescriptors.Length; i++)
for(var i = 0; i < decoded.WriteSpeedPerformanceDescriptors.Length; i++)
{
length += 4;
pageResponse[1 + 32 + (i * 4)] = decoded.WriteSpeedPerformanceDescriptors[i].RotationControl;
length += 4;
pageResponse[1 + 32 + i * 4] = decoded.WriteSpeedPerformanceDescriptors[i].RotationControl;
pageResponse[2 + 32 + (i * 4)] =
pageResponse[2 + 32 + i * 4] =
(byte)((decoded.WriteSpeedPerformanceDescriptors[i].WriteSpeed & 0xFF00) >> 8);
pageResponse[3 + 32 + (i * 4)] = (byte)(decoded.WriteSpeedPerformanceDescriptors[i].WriteSpeed & 0xFF);
pageResponse[3 + 32 + i * 4] = (byte)(decoded.WriteSpeedPerformanceDescriptors[i].WriteSpeed & 0xFF);
}
}
pageResponse[1] = (byte)(length - 2);
byte[] buf = new byte[length];
var buf = new byte[length];
Array.Copy(pageResponse, 0, buf, 0, length);
return buf;
@@ -509,4 +565,5 @@ public struct ModePage_2A_WriteDescriptor
/// <summary>Write speed</summary>
public ushort WriteSpeed;
}
#endregion Mode Page 0x2A: CD-ROM capabilities page

View File

@@ -156,32 +156,46 @@ public class FileEntryInfo
{
/// <summary>File attributes</summary>
public FileAttributes Attributes { get; set; }
/// <summary>File length in blocks</summary>
public long Blocks { get; set; }
/// <summary>File block size in bytes</summary>
public long BlockSize { get; set; }
/// <summary>If file points to a device, device number. Null if the underlying filesystem does not support them.</summary>
public ulong? DeviceNo { get; set; }
/// <summary>POSIX group ID. Null if the underlying filesystem does not support them.</summary>
public ulong? GID { get; set; }
/// <summary>inode number for this file (or other unique identifier for the volume)</summary>
public ulong Inode { get; set; }
/// <summary>File length in bytes</summary>
public long Length { get; set; }
/// <summary>Number of hard links pointing to this file (. and .. entries count as hard links)</summary>
public ulong Links { get; set; }
/// <summary>POSIX permissions/mode for this file. Null if the underlying filesystem does not support them.</summary>
public uint? Mode { get; set; }
/// <summary>POSIX owner ID. Null if the underlying filesystem does not support them.</summary>
public ulong? UID { get; set; }
/// <summary>File creation date in UTC. Null if the underlying filesystem does not support them.</summary>
public DateTime? CreationTimeUtc { get; set; }
/// <summary>File last access date in UTC. Null if the underlying filesystem does not support them.</summary>
public DateTime? AccessTimeUtc { get; set; }
/// <summary>File attributes change date in UTC. Null if the underlying filesystem does not support them.</summary>
public DateTime? StatusChangeTimeUtc { get; set; }
/// <summary>File last backup date in UTC. Null if the underlying filesystem does not support them.</summary>
public DateTime? BackupTimeUtc { get; set; }
/// <summary>File last modification date in UTC. Null if the underlying filesystem does not support them.</summary>
public DateTime? LastWriteTimeUtc { get; set; }

View File

@@ -202,21 +202,28 @@ public struct LinearMemoryDevice
{
/// <summary>Device manufacturer</summary>
public string Manufacturer { get; set; }
/// <summary>Device model</summary>
public string Model { get; set; }
/// <summary>Device package, e.g. DIP28</summary>
public string Package { get; set; }
/// <summary>Device location marking in PCB, e.g. U28</summary>
public string Location { get; set; }
/// <summary>Device functional type</summary>
public LinearMemoryType Type { get; set; }
/// <summary>Arbitrary device information</summary>
public string Description { get; set; }
/// <summary>
/// Physical addressing is the address considering all devices in the linear memory media, starting at the lowest
/// marking in PCB and going up incrementally. This is the view of the memory inside Aaru.
/// </summary>
public LinearMemoryAddressing PhysicalAddress { get; set; }
/// <summary>
/// Virtual addressing is the address as seen by the hardware directly accessing the linear memory media. This
/// allows devices to be overlapped or banked.
@@ -229,8 +236,10 @@ public class LinearMemoryAddressing
{
/// <summary>Start in memory where the device is mapped</summary>
public ulong Start { get; set; }
/// <summary>Length in bytes of the device, not including interleaving</summary>
public ulong Length { get; set; }
/// <summary>Interleaving information</summary>
public LinearMemoryInterleave Interleave { get; set; }
}
@@ -240,6 +249,7 @@ public class LinearMemoryInterleave
{
/// <summary>How many bytes to skip from start of map before device first byte starts</summary>
public uint Offset { get; set; }
/// <summary>How many bytes in memory to skip every device byte</summary>
public uint Value { get; set; }
}