mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
REFACTOR: Final cleanup of DiscImageChef.Metadata.
This commit is contained in:
@@ -45,34 +45,6 @@ namespace DiscImageChef.Interop
|
|||||||
{
|
{
|
||||||
public static class DetectOS
|
public static class DetectOS
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// POSIX uname structure, size from OSX, big enough to handle extra fields
|
|
||||||
/// </summary>
|
|
||||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
|
||||||
struct utsname
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// System name
|
|
||||||
/// </summary>
|
|
||||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string sysname;
|
|
||||||
/// <summary>
|
|
||||||
/// Node name
|
|
||||||
/// </summary>
|
|
||||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string nodename;
|
|
||||||
/// <summary>
|
|
||||||
/// Release level
|
|
||||||
/// </summary>
|
|
||||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string release;
|
|
||||||
/// <summary>
|
|
||||||
/// Version level
|
|
||||||
/// </summary>
|
|
||||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string version;
|
|
||||||
/// <summary>
|
|
||||||
/// Hardware level
|
|
||||||
/// </summary>
|
|
||||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string machine;
|
|
||||||
}
|
|
||||||
|
|
||||||
[DllImport("libc", SetLastError = true)]
|
[DllImport("libc", SetLastError = true)]
|
||||||
static extern int uname(out utsname name);
|
static extern int uname(out utsname name);
|
||||||
|
|
||||||
@@ -80,17 +52,17 @@ namespace DiscImageChef.Interop
|
|||||||
static extern int OSX_sysctlbyname(string name, IntPtr oldp, IntPtr oldlenp, IntPtr newp, uint newlen);
|
static extern int OSX_sysctlbyname(string name, IntPtr oldp, IntPtr oldlenp, IntPtr newp, uint newlen);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the real platform ID, not the incomplete .NET framework one
|
/// Gets the real platform ID, not the incomplete .NET framework one
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Platform ID</returns>
|
/// <returns>Platform ID</returns>
|
||||||
/// <exception cref="Exception">Unhandled exception</exception>
|
/// <exception cref="Exception">Unhandled exception</exception>
|
||||||
public static PlatformID GetRealPlatformID()
|
public static PlatformID GetRealPlatformID()
|
||||||
{
|
{
|
||||||
if((int)Environment.OSVersion.Platform < 4 || (int)Environment.OSVersion.Platform == 5) return (PlatformID)(int)Environment.OSVersion.Platform;
|
if((int)Environment.OSVersion.Platform < 4 || (int)Environment.OSVersion.Platform == 5)
|
||||||
|
return (PlatformID)(int)Environment.OSVersion.Platform;
|
||||||
|
|
||||||
int error = uname(out utsname unixname);
|
int error = uname(out utsname unixname);
|
||||||
if(error != 0)
|
if(error != 0) throw new Exception($"Unhandled exception calling uname: {Marshal.GetLastWin32Error()}");
|
||||||
throw new Exception($"Unhandled exception calling uname: {Marshal.GetLastWin32Error()}");
|
|
||||||
|
|
||||||
switch(unixname.sysname)
|
switch(unixname.sysname)
|
||||||
{
|
{
|
||||||
@@ -134,7 +106,8 @@ namespace DiscImageChef.Interop
|
|||||||
|
|
||||||
if(machine != null && (machine.StartsWith("iPad", StringComparison.Ordinal) ||
|
if(machine != null && (machine.StartsWith("iPad", StringComparison.Ordinal) ||
|
||||||
machine.StartsWith("iPod", StringComparison.Ordinal) ||
|
machine.StartsWith("iPod", StringComparison.Ordinal) ||
|
||||||
machine.StartsWith("iPhone", StringComparison.Ordinal))) return PlatformID.iOS;
|
machine.StartsWith("iPhone", StringComparison.Ordinal)))
|
||||||
|
return PlatformID.iOS;
|
||||||
|
|
||||||
return PlatformID.MacOSX;
|
return PlatformID.MacOSX;
|
||||||
}
|
}
|
||||||
@@ -174,7 +147,7 @@ namespace DiscImageChef.Interop
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks if the underlying runtime runs in 64-bit mode
|
/// Checks if the underlying runtime runs in 64-bit mode
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static bool Is64Bit()
|
public static bool Is64Bit()
|
||||||
{
|
{
|
||||||
@@ -182,7 +155,7 @@ namespace DiscImageChef.Interop
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks if the underlying runtime runs in 32-bit mode
|
/// Checks if the underlying runtime runs in 32-bit mode
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static bool Is32Bit()
|
public static bool Is32Bit()
|
||||||
{
|
{
|
||||||
@@ -190,7 +163,7 @@ namespace DiscImageChef.Interop
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a string for the current operating system REAL version (handles Darwin 1.4 and Windows 10 falsifying)
|
/// Gets a string for the current operating system REAL version (handles Darwin 1.4 and Windows 10 falsifying)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Current operating system version</returns>
|
/// <returns>Current operating system version</returns>
|
||||||
public static string GetVersion()
|
public static string GetVersion()
|
||||||
@@ -203,7 +176,8 @@ namespace DiscImageChef.Interop
|
|||||||
if(Environment.OSVersion.Version.Major != 1)
|
if(Environment.OSVersion.Version.Major != 1)
|
||||||
return $"10.{Environment.OSVersion.Version.Major - 4}.{Environment.OSVersion.Version.Minor}";
|
return $"10.{Environment.OSVersion.Version.Major - 4}.{Environment.OSVersion.Version.Minor}";
|
||||||
|
|
||||||
switch(Environment.OSVersion.Version.Minor) {
|
switch(Environment.OSVersion.Version.Minor)
|
||||||
|
{
|
||||||
case 3: return "10.0";
|
case 3: return "10.0";
|
||||||
case 4: return "10.1";
|
case 4: return "10.1";
|
||||||
}
|
}
|
||||||
@@ -223,7 +197,7 @@ namespace DiscImageChef.Interop
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// From a platform ID and version returns a human-readable version
|
/// From a platform ID and version returns a human-readable version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">Platform ID</param>
|
/// <param name="id">Platform ID</param>
|
||||||
/// <param name="version">Version number</param>
|
/// <param name="version">Version number</param>
|
||||||
@@ -301,5 +275,33 @@ namespace DiscImageChef.Interop
|
|||||||
default: return id.ToString();
|
default: return id.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// POSIX uname structure, size from OSX, big enough to handle extra fields
|
||||||
|
/// </summary>
|
||||||
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
||||||
|
struct utsname
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// System name
|
||||||
|
/// </summary>
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string sysname;
|
||||||
|
/// <summary>
|
||||||
|
/// Node name
|
||||||
|
/// </summary>
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string nodename;
|
||||||
|
/// <summary>
|
||||||
|
/// Release level
|
||||||
|
/// </summary>
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string release;
|
||||||
|
/// <summary>
|
||||||
|
/// Version level
|
||||||
|
/// </summary>
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string version;
|
||||||
|
/// <summary>
|
||||||
|
/// Hardware level
|
||||||
|
/// </summary>
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string machine;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -39,152 +39,152 @@
|
|||||||
namespace DiscImageChef.Interop
|
namespace DiscImageChef.Interop
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Contains an arbitrary list of OSes, even if .NET does not run on them
|
/// Contains an arbitrary list of OSes, even if .NET does not run on them
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public enum PlatformID
|
public enum PlatformID
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Win32s
|
/// Win32s
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Win32S = 0,
|
Win32S = 0,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Win32 (Windows 9x)
|
/// Win32 (Windows 9x)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Win32Windows = 1,
|
Win32Windows = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Windows NT
|
/// Windows NT
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Win32NT = 2,
|
Win32NT = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Windows Mobile
|
/// Windows Mobile
|
||||||
/// </summary>
|
/// </summary>
|
||||||
WinCE = 3,
|
WinCE = 3,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// UNIX (do not use, too generic)
|
/// UNIX (do not use, too generic)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Unix = 4,
|
Unix = 4,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Xbox 360
|
/// Xbox 360
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Xbox = 5,
|
Xbox = 5,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// OS X
|
/// OS X
|
||||||
/// </summary>
|
/// </summary>
|
||||||
MacOSX = 6,
|
MacOSX = 6,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// iOS is not OS X
|
/// iOS is not OS X
|
||||||
/// </summary>
|
/// </summary>
|
||||||
iOS = 7,
|
iOS = 7,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Linux
|
/// Linux
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Linux = 8,
|
Linux = 8,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sun Solaris
|
/// Sun Solaris
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Solaris = 9,
|
Solaris = 9,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// NetBSD
|
/// NetBSD
|
||||||
/// </summary>
|
/// </summary>
|
||||||
NetBSD = 10,
|
NetBSD = 10,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// OpenBSD
|
/// OpenBSD
|
||||||
/// </summary>
|
/// </summary>
|
||||||
OpenBSD = 11,
|
OpenBSD = 11,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// FreeBSD
|
/// FreeBSD
|
||||||
/// </summary>
|
/// </summary>
|
||||||
FreeBSD = 12,
|
FreeBSD = 12,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DragonFly BSD
|
/// DragonFly BSD
|
||||||
/// </summary>
|
/// </summary>
|
||||||
DragonFly = 13,
|
DragonFly = 13,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Nintendo Wii
|
/// Nintendo Wii
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Wii = 14,
|
Wii = 14,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Nintendo Wii U
|
/// Nintendo Wii U
|
||||||
/// </summary>
|
/// </summary>
|
||||||
WiiU = 15,
|
WiiU = 15,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sony PlayStation 3
|
/// Sony PlayStation 3
|
||||||
/// </summary>
|
/// </summary>
|
||||||
PlayStation3 = 16,
|
PlayStation3 = 16,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sony Playstation 4
|
/// Sony Playstation 4
|
||||||
/// </summary>
|
/// </summary>
|
||||||
PlayStation4 = 17,
|
PlayStation4 = 17,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Google Android
|
/// Google Android
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Android = 18,
|
Android = 18,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Samsung Tizen
|
/// Samsung Tizen
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Tizen = 19,
|
Tizen = 19,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Windows Phone
|
/// Windows Phone
|
||||||
/// </summary>
|
/// </summary>
|
||||||
WindowsPhone = 20,
|
WindowsPhone = 20,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// GNU/Hurd
|
/// GNU/Hurd
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Hurd = 21,
|
Hurd = 21,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Haiku
|
/// Haiku
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Haiku = 22,
|
Haiku = 22,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// HP-UX
|
/// HP-UX
|
||||||
/// </summary>
|
/// </summary>
|
||||||
HPUX = 23,
|
HPUX = 23,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// AIX
|
/// AIX
|
||||||
/// </summary>
|
/// </summary>
|
||||||
AIX = 24,
|
AIX = 24,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// OS/400
|
/// OS/400
|
||||||
/// </summary>
|
/// </summary>
|
||||||
OS400 = 25,
|
OS400 = 25,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// IRIX
|
/// IRIX
|
||||||
/// </summary>
|
/// </summary>
|
||||||
IRIX = 26,
|
IRIX = 26,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Minix
|
/// Minix
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Minix = 27,
|
Minix = 27,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// NonStop
|
/// NonStop
|
||||||
/// </summary>
|
/// </summary>
|
||||||
NonStop = 28,
|
NonStop = 28,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// QNX
|
/// QNX
|
||||||
/// </summary>
|
/// </summary>
|
||||||
QNX = 29,
|
QNX = 29,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// SINIX
|
/// SINIX
|
||||||
/// </summary>
|
/// </summary>
|
||||||
SINIX = 30,
|
SINIX = 30,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tru64 UNIX
|
/// Tru64 UNIX
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Tru64 = 31,
|
Tru64 = 31,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ultrix
|
/// Ultrix
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Ultrix = 32,
|
Ultrix = 32,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// SCO OpenServer / SCO UNIX
|
/// SCO OpenServer / SCO UNIX
|
||||||
/// </summary>
|
/// </summary>
|
||||||
OpenServer = 33,
|
OpenServer = 33,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// SCO UnixWare
|
/// SCO UnixWare
|
||||||
/// </summary>
|
/// </summary>
|
||||||
UnixWare = 34,
|
UnixWare = 34,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// IBM z/OS
|
/// IBM z/OS
|
||||||
/// </summary>
|
/// </summary>
|
||||||
zOS = 35,
|
zOS = 35,
|
||||||
Unknown = -1
|
Unknown = -1
|
||||||
|
|||||||
@@ -31,11 +31,11 @@
|
|||||||
// ****************************************************************************/
|
// ****************************************************************************/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
using DiscImageChef.Decoders.ATA;
|
using DiscImageChef.Decoders.ATA;
|
||||||
using DiscImageChef.Decoders.SCSI;
|
using DiscImageChef.Decoders.SCSI;
|
||||||
using DiscImageChef.Decoders.SCSI.MMC;
|
using DiscImageChef.Decoders.SCSI.MMC;
|
||||||
|
|
||||||
// ReSharper disable InconsistentNaming
|
// ReSharper disable InconsistentNaming
|
||||||
// ReSharper disable UnusedAutoPropertyAccessor.Global
|
// ReSharper disable UnusedAutoPropertyAccessor.Global
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,8 @@ namespace DiscImageChef.Metadata
|
|||||||
{
|
{
|
||||||
if(extents == null) return null;
|
if(extents == null) return null;
|
||||||
|
|
||||||
List<Tuple<ulong, ulong>> tuples = extents.Select(extent => new Tuple<ulong, ulong>(extent.Start, extent.End)).ToList();
|
List<Tuple<ulong, ulong>> tuples =
|
||||||
|
extents.Select(extent => new Tuple<ulong, ulong>(extent.Start, extent.End)).ToList();
|
||||||
|
|
||||||
return new ExtentsULong(tuples);
|
return new ExtentsULong(tuples);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,11 +38,11 @@ namespace DiscImageChef.Metadata
|
|||||||
[XmlRoot("DicStats", Namespace = "", IsNullable = false)]
|
[XmlRoot("DicStats", Namespace = "", IsNullable = false)]
|
||||||
public class Stats
|
public class Stats
|
||||||
{
|
{
|
||||||
|
public CommandsStats Commands;
|
||||||
[XmlArrayItem("OperatingSystem")]
|
[XmlArrayItem("OperatingSystem")]
|
||||||
public List<OsStats> OperatingSystems { get; set; }
|
public List<OsStats> OperatingSystems { get; set; }
|
||||||
[XmlArrayItem("Version")]
|
[XmlArrayItem("Version")]
|
||||||
public List<NameValueStats> Versions { get; set; }
|
public List<NameValueStats> Versions { get; set; }
|
||||||
public CommandsStats Commands;
|
|
||||||
[XmlArrayItem("Filesystem")]
|
[XmlArrayItem("Filesystem")]
|
||||||
public List<NameValueStats> Filesystems { get; set; }
|
public List<NameValueStats> Filesystems { get; set; }
|
||||||
[XmlArrayItem("Scheme")]
|
[XmlArrayItem("Scheme")]
|
||||||
@@ -74,13 +74,13 @@ namespace DiscImageChef.Metadata
|
|||||||
public long Entropy;
|
public long Entropy;
|
||||||
public long ExtractFiles;
|
public long ExtractFiles;
|
||||||
public long Formats;
|
public long Formats;
|
||||||
|
public long ListDevices;
|
||||||
|
public long ListEncodings;
|
||||||
public long Ls;
|
public long Ls;
|
||||||
public long MediaInfo;
|
public long MediaInfo;
|
||||||
public long MediaScan;
|
public long MediaScan;
|
||||||
public long PrintHex;
|
public long PrintHex;
|
||||||
public long Verify;
|
public long Verify;
|
||||||
public long ListDevices;
|
|
||||||
public long ListEncodings;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VerifiedItems
|
public class VerifiedItems
|
||||||
@@ -97,19 +97,19 @@ namespace DiscImageChef.Metadata
|
|||||||
|
|
||||||
public class ScannedSectors
|
public class ScannedSectors
|
||||||
{
|
{
|
||||||
public long Total;
|
|
||||||
public long Error;
|
|
||||||
public long Correct;
|
public long Correct;
|
||||||
|
public long Error;
|
||||||
|
public long Total;
|
||||||
public long Unverifiable;
|
public long Unverifiable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TimeStats
|
public class TimeStats
|
||||||
{
|
{
|
||||||
public long LessThan3ms;
|
|
||||||
public long LessThan10ms;
|
public long LessThan10ms;
|
||||||
public long LessThan50ms;
|
|
||||||
public long LessThan150ms;
|
public long LessThan150ms;
|
||||||
|
public long LessThan3ms;
|
||||||
public long LessThan500ms;
|
public long LessThan500ms;
|
||||||
|
public long LessThan50ms;
|
||||||
public long MoreThan500ms;
|
public long MoreThan500ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,12 +127,12 @@ namespace DiscImageChef.Metadata
|
|||||||
|
|
||||||
public class BenchmarkStats
|
public class BenchmarkStats
|
||||||
{
|
{
|
||||||
|
public double All;
|
||||||
[XmlElement("Checksum")] public List<ChecksumStats> Checksum;
|
[XmlElement("Checksum")] public List<ChecksumStats> Checksum;
|
||||||
public double Entropy;
|
public double Entropy;
|
||||||
public double All;
|
|
||||||
public double Sequential;
|
|
||||||
public long MaxMemory;
|
public long MaxMemory;
|
||||||
public long MinMemory;
|
public long MinMemory;
|
||||||
|
public double Sequential;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MediaStats
|
public class MediaStats
|
||||||
@@ -144,12 +144,11 @@ namespace DiscImageChef.Metadata
|
|||||||
|
|
||||||
public class DeviceStats
|
public class DeviceStats
|
||||||
{
|
{
|
||||||
|
[XmlIgnore] public bool ManufacturerSpecified;
|
||||||
public string Manufacturer { get; set; }
|
public string Manufacturer { get; set; }
|
||||||
public string Model { get; set; }
|
public string Model { get; set; }
|
||||||
public string Revision { get; set; }
|
public string Revision { get; set; }
|
||||||
public string Bus { get; set; }
|
public string Bus { get; set; }
|
||||||
|
|
||||||
[XmlIgnore] public bool ManufacturerSpecified;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class NameValueStats
|
public class NameValueStats
|
||||||
|
|||||||
Reference in New Issue
Block a user