mirror of
https://github.com/aaru-dps/Aaru.Server.git
synced 2025-12-16 19:24:27 +00:00
* DiscImageChef.Devices/Command.cs:
Add skeleton for send SCSI command method. * DiscImageChef.Devices/Linux/Command.cs: * DiscImageChef.Devices/Windows/Command.cs: Added per-platform send SCSI command method. * DiscImageChef.sln: * DiscImageChef.Interop/DetectOS.cs: * DiscImageChef.Interop/PlatformID.cs: * DiscImageChef.Interop/Properties/AssemblyInfo.cs: * DiscImageChef.Interop/DiscImageChef.Interop.csproj: Added code to detect OS. * DiscImageChef.Devices/DiscImageChef.Devices.csproj: Added per-platform send SCSI command method. Add skeleton for send SCSI command method. * DiscImageChef.Devices/Linux/Extern.cs: * DiscImageChef.Devices/Windows/Extern.cs: Enhanced externs. * DiscImageChef.Devices/Linux/Structs.cs: Typo.
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2015-10-12 Natalia Portillo <claunia@claunia.com>
|
||||
|
||||
* DiscImageChef.sln:
|
||||
Added code to detect OS.
|
||||
|
||||
2015-10-05 Natalia Portillo <claunia@claunia.com>
|
||||
|
||||
* DiscImageChef.sln:
|
||||
|
||||
@@ -1,3 +1,23 @@
|
||||
2015-10-12 Natalia Portillo <claunia@claunia.com>
|
||||
|
||||
* Command.cs:
|
||||
Add skeleton for send SCSI command method.
|
||||
|
||||
* Linux/Command.cs:
|
||||
* Windows/Command.cs:
|
||||
Added per-platform send SCSI command method.
|
||||
|
||||
* DiscImageChef.Devices.csproj:
|
||||
Added per-platform send SCSI command method.
|
||||
Add skeleton for send SCSI command method.
|
||||
|
||||
* Linux/Extern.cs:
|
||||
* Windows/Extern.cs:
|
||||
Enhanced externs.
|
||||
|
||||
* Linux/Structs.cs:
|
||||
Typo.
|
||||
|
||||
2015-10-07 Natalia Portillo <claunia@claunia.com>
|
||||
|
||||
* Linux/Enums.cs:
|
||||
|
||||
12
DiscImageChef.Devices/Command.cs
Normal file
12
DiscImageChef.Devices/Command.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace DiscImageChef.Devices
|
||||
{
|
||||
public class Command
|
||||
{
|
||||
public Command()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,9 @@
|
||||
<Compile Include="Windows\Extern.cs" />
|
||||
<Compile Include="Windows\Structs.cs" />
|
||||
<Compile Include="Windows\Enums.cs" />
|
||||
<Compile Include="Windows\Command.cs" />
|
||||
<Compile Include="Linux\Command.cs" />
|
||||
<Compile Include="Command.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<ItemGroup>
|
||||
@@ -57,4 +60,10 @@
|
||||
</Properties>
|
||||
</MonoDevelop>
|
||||
</ProjectExtensions>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\DiscImageChef.Interop\DiscImageChef.Interop.csproj">
|
||||
<Project>{9183F2E0-A879-4F23-9EE3-C6908F1332B2}</Project>
|
||||
<Name>DiscImageChef.Interop</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
52
DiscImageChef.Devices/Linux/Command.cs
Normal file
52
DiscImageChef.Devices/Linux/Command.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace DiscImageChef.Devices.Linux
|
||||
{
|
||||
static class Command
|
||||
{
|
||||
internal static int SendScsiCommand(int fd, byte[] cdb, ref byte[] buffer, out byte[] senseBuffer, uint timeout, ScsiIoctlDirection direction, out double duration, out bool sense)
|
||||
{
|
||||
senseBuffer = null;
|
||||
duration = 0;
|
||||
sense = false;
|
||||
|
||||
if (buffer == null)
|
||||
return -1;
|
||||
|
||||
sg_io_hdr_t io_hdr = new sg_io_hdr_t();
|
||||
|
||||
senseBuffer = new byte[32];
|
||||
|
||||
io_hdr.interface_id = 'S';
|
||||
io_hdr.cmd_len = (byte)cdb.Length;
|
||||
io_hdr.mx_sb_len = (byte)senseBuffer.Length;
|
||||
io_hdr.dxfer_direction = direction;
|
||||
io_hdr.dxfer_len = (uint)buffer.Length;
|
||||
io_hdr.dxferp = Marshal.AllocHGlobal(buffer.Length);
|
||||
io_hdr.cmdp = Marshal.AllocHGlobal(cdb.Length);
|
||||
io_hdr.sbp = Marshal.AllocHGlobal(senseBuffer.Length);
|
||||
io_hdr.timeout = timeout * 1000;
|
||||
|
||||
Marshal.Copy(buffer, 0, io_hdr.dxferp, buffer.Length);
|
||||
Marshal.Copy(cdb, 0, io_hdr.cmdp, cdb.Length);
|
||||
Marshal.Copy(senseBuffer, 0, io_hdr.sbp, senseBuffer.Length);
|
||||
|
||||
int error = Extern.ioctlSg(fd, LinuxIoctl.SG_IO, ref io_hdr);
|
||||
|
||||
if (error < 0)
|
||||
error = Marshal.GetLastWin32Error();
|
||||
|
||||
Marshal.Copy(io_hdr.dxferp, buffer, 0, buffer.Length);
|
||||
Marshal.Copy(io_hdr.cmdp, cdb, 0, cdb.Length);
|
||||
Marshal.Copy(io_hdr.sbp, senseBuffer, 0, senseBuffer.Length);
|
||||
|
||||
sense |= (io_hdr.info & SgInfo.OkMask) != SgInfo.Ok;
|
||||
|
||||
duration = (double)io_hdr.duration;
|
||||
|
||||
return error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,16 +14,16 @@ namespace DiscImageChef.Devices.Linux
|
||||
internal static extern int close(int fd);
|
||||
|
||||
[DllImport("libc", EntryPoint="ioctl", SetLastError = true)]
|
||||
internal static extern int ioctlInt(int fd, ulong request, out int value);
|
||||
internal static extern int ioctlInt(int fd, LinuxIoctl request, out int value);
|
||||
|
||||
[DllImport("libc", EntryPoint="ioctl", SetLastError = true)]
|
||||
internal static extern int ioctlSg(int fd, ulong request, ref sg_io_hdr_t value);
|
||||
internal static extern int ioctlSg(int fd, LinuxIoctl request, ref sg_io_hdr_t value);
|
||||
|
||||
[DllImport("libc", EntryPoint="ioctl", SetLastError = true)]
|
||||
internal static extern int ioctlHdTaskfile(int fd, ulong request, ref hd_drive_task_hdr value);
|
||||
internal static extern int ioctlHdTaskfile(int fd, LinuxIoctl request, ref hd_drive_task_hdr value);
|
||||
|
||||
[DllImport("libc", EntryPoint="ioctl", SetLastError = true)]
|
||||
internal static extern int ioctlHdTask(int fd, ulong request, ref byte[] value);
|
||||
internal static extern int ioctlHdTask(int fd, LinuxIoctl request, ref byte[] value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,11 +10,11 @@ namespace DiscImageChef.Devices.Linux
|
||||
/// Always 'S' for SG v3
|
||||
/// </summary>
|
||||
public int interface_id; /* [i] 'S' (required) */
|
||||
public int dxfer_direction; /* [i] */
|
||||
public ScsiIoctlDirection dxfer_direction; /* [i] */
|
||||
public byte cmd_len; /* [i] */
|
||||
public byte mx_sb_len; /* [i] */
|
||||
public ushort iovec_count; /* [i] */
|
||||
public ScsiIoctlDirection dxfer_len; /* [i] */
|
||||
public uint dxfer_len; /* [i] */
|
||||
public IntPtr dxferp; /* [i], [*io] */
|
||||
public IntPtr cmdp; /* [i], [*i] */
|
||||
public IntPtr sbp; /* [i], [*o] */
|
||||
|
||||
56
DiscImageChef.Devices/Windows/Command.cs
Normal file
56
DiscImageChef.Devices/Windows/Command.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using Microsoft.Win32.SafeHandles;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace DiscImageChef.Devices.Windows
|
||||
{
|
||||
static class Command
|
||||
{
|
||||
internal static int SendScsiCommand(SafeFileHandle fd, byte[] cdb, ref byte[] buffer, out byte[] senseBuffer, uint timeout, ScsiIoctlDirection direction, out double duration, out bool sense)
|
||||
{
|
||||
senseBuffer = null;
|
||||
duration = 0;
|
||||
sense = false;
|
||||
|
||||
if (buffer == null)
|
||||
return -1;
|
||||
|
||||
ScsiPassThroughDirectAndSenseBuffer sptd_sb = new ScsiPassThroughDirectAndSenseBuffer();
|
||||
sptd_sb.sptd = new ScsiPassThroughDirect();
|
||||
sptd_sb.SenseBuf = new byte[32];
|
||||
sptd_sb.sptd.Cdb = new byte[16];
|
||||
Array.Copy(cdb, sptd_sb.sptd.Cdb, cdb.Length);
|
||||
sptd_sb.sptd.Length = (ushort)Marshal.SizeOf(sptd_sb.sptd);
|
||||
sptd_sb.sptd.CdbLength = (byte)cdb.Length;
|
||||
sptd_sb.sptd.SenseInfoLength = (byte)sptd_sb.SenseBuf.Length;
|
||||
sptd_sb.sptd.DataIn = direction;
|
||||
sptd_sb.sptd.DataTransferLength = (uint)buffer.Length;
|
||||
sptd_sb.sptd.TimeOutValue = timeout;
|
||||
sptd_sb.sptd.DataBuffer = Marshal.AllocHGlobal(buffer.Length);
|
||||
sptd_sb.sptd.SenseInfoOffset = (uint)Marshal.SizeOf(sptd_sb.sptd);
|
||||
|
||||
uint k = 0;
|
||||
int error = 0;
|
||||
|
||||
DateTime start = DateTime.Now;
|
||||
bool hasError = Extern.DeviceIoControlScsi(fd, WindowsIoctl.IOCTL_SCSI_PASS_THROUGH_DIRECT, ref sptd_sb, (uint)Marshal.SizeOf(sptd_sb), ref sptd_sb,
|
||||
(uint)Marshal.SizeOf(sptd_sb), ref k, IntPtr.Zero);
|
||||
DateTime end = DateTime.Now;
|
||||
|
||||
if (hasError)
|
||||
error = Marshal.GetLastWin32Error();
|
||||
|
||||
Marshal.Copy(sptd_sb.sptd.DataBuffer, buffer, 0, buffer.Length);
|
||||
|
||||
sense |= sptd_sb.sptd.ScsiStatus != 0;
|
||||
|
||||
senseBuffer = new byte[32];
|
||||
Array.Copy(sptd_sb.SenseBuf, senseBuffer, 32);
|
||||
|
||||
duration = (end - start).TotalMilliseconds;
|
||||
|
||||
return error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,9 +17,9 @@ namespace DiscImageChef.Devices.Windows
|
||||
IntPtr templateFile);
|
||||
|
||||
[DllImport("Kernel32.dll", SetLastError = true, EntryPoint="ioctl", CharSet = CharSet.Auto)]
|
||||
public static extern bool DeviceIoControlScsi(
|
||||
internal static extern bool DeviceIoControlScsi(
|
||||
SafeFileHandle hDevice,
|
||||
uint IoControlCode,
|
||||
WindowsIoctl IoControlCode,
|
||||
ref ScsiPassThroughDirectAndSenseBuffer InBuffer,
|
||||
uint nInBufferSize,
|
||||
ref ScsiPassThroughDirectAndSenseBuffer OutBuffer,
|
||||
@@ -29,9 +29,9 @@ namespace DiscImageChef.Devices.Windows
|
||||
);
|
||||
|
||||
[DllImport("Kernel32.dll", SetLastError = true, EntryPoint="ioctl", CharSet = CharSet.Auto)]
|
||||
public static extern bool DeviceIoControlAta(
|
||||
internal static extern bool DeviceIoControlAta(
|
||||
SafeFileHandle hDevice,
|
||||
uint IoControlCode,
|
||||
WindowsIoctl IoControlCode,
|
||||
ref AtaPassThroughDirect InBuffer,
|
||||
uint nInBufferSize,
|
||||
ref AtaPassThroughDirect OutBuffer,
|
||||
@@ -41,7 +41,7 @@ namespace DiscImageChef.Devices.Windows
|
||||
);
|
||||
|
||||
[DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
|
||||
public static extern bool CloseHandle(SafeFileHandle hDevice);
|
||||
internal static extern bool CloseHandle(SafeFileHandle hDevice);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
8
DiscImageChef.Interop/ChangeLog
Normal file
8
DiscImageChef.Interop/ChangeLog
Normal file
@@ -0,0 +1,8 @@
|
||||
2015-10-12 Natalia Portillo <claunia@claunia.com>
|
||||
|
||||
* DetectOS.cs:
|
||||
* PlatformID.cs:
|
||||
* Properties/AssemblyInfo.cs:
|
||||
* DiscImageChef.Interop.csproj:
|
||||
Added code to detect OS.
|
||||
|
||||
188
DiscImageChef.Interop/DetectOS.cs
Normal file
188
DiscImageChef.Interop/DetectOS.cs
Normal file
@@ -0,0 +1,188 @@
|
||||
//
|
||||
// Interop.DetectOS.cs
|
||||
//
|
||||
// Author:
|
||||
// Natalia Portillo <claunia@claunia.com>
|
||||
//
|
||||
// Copyright (c) 2015 © Claunia.com
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace DiscImageChef.Interop
|
||||
{
|
||||
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)]
|
||||
static extern int uname(out utsname name);
|
||||
|
||||
[DllImport("libc", SetLastError = true, EntryPoint = "sysctlbyname", CharSet = CharSet.Ansi)]
|
||||
static extern int OSX_sysctlbyname(string name, IntPtr oldp, IntPtr oldlenp, IntPtr newp, uint newlen);
|
||||
|
||||
public static Interop.PlatformID GetRealPlatformID()
|
||||
{
|
||||
if ((int)Environment.OSVersion.Platform < 4 ||
|
||||
(int)Environment.OSVersion.Platform == 5)
|
||||
{
|
||||
return (Interop.PlatformID)((int)Environment.OSVersion.Platform);
|
||||
}
|
||||
|
||||
utsname unixname;
|
||||
int error = uname(out unixname);
|
||||
if (error != 0)
|
||||
throw new Exception(String.Format("Unhandled exception calling uname: {0}", Marshal.GetLastWin32Error()));
|
||||
|
||||
switch (unixname.sysname)
|
||||
{
|
||||
// TODO: Differentiate Linux, Android, Tizen
|
||||
case "Linux":
|
||||
{
|
||||
#if __ANDROID__
|
||||
return PlatformID.Android;
|
||||
#else
|
||||
return PlatformID.Linux;
|
||||
#endif
|
||||
}
|
||||
case "Darwin":
|
||||
{
|
||||
int osx_error;
|
||||
|
||||
IntPtr pLen = Marshal.AllocHGlobal(sizeof(int));
|
||||
osx_error = OSX_sysctlbyname("hw.machine", IntPtr.Zero, pLen, IntPtr.Zero, 0);
|
||||
if (osx_error != 0)
|
||||
{
|
||||
Marshal.FreeHGlobal(pLen);
|
||||
|
||||
throw new Exception(String.Format("Unhandled exception calling uname: {0}", Marshal.GetLastWin32Error()));
|
||||
}
|
||||
|
||||
int length = Marshal.ReadInt32(pLen);
|
||||
IntPtr pStr = Marshal.AllocHGlobal(length);
|
||||
osx_error = OSX_sysctlbyname("hw.machine", pStr, pLen, IntPtr.Zero, 0);
|
||||
if (osx_error != 0)
|
||||
{
|
||||
Marshal.FreeHGlobal(pStr);
|
||||
Marshal.FreeHGlobal(pLen);
|
||||
|
||||
throw new Exception(String.Format("Unhandled exception calling uname: {0}", Marshal.GetLastWin32Error()));
|
||||
}
|
||||
|
||||
string machine = Marshal.PtrToStringAnsi(pStr);
|
||||
|
||||
Marshal.FreeHGlobal(pStr);
|
||||
Marshal.FreeHGlobal(pLen);
|
||||
|
||||
if (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 "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 "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 "Interix":
|
||||
case "UWIN-W7":
|
||||
return PlatformID.Win32NT;
|
||||
default:
|
||||
{
|
||||
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))
|
||||
return PlatformID.Win32NT;
|
||||
|
||||
return PlatformID.Unknown;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
41
DiscImageChef.Interop/DiscImageChef.Interop.csproj
Normal file
41
DiscImageChef.Interop/DiscImageChef.Interop.csproj
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{9183F2E0-A879-4F23-9EE3-C6908F1332B2}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>DiscImageChef.Interop</RootNamespace>
|
||||
<AssemblyName>DiscImageChef.Interop</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug</OutputPath>
|
||||
<DefineConstants>DEBUG;</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<ConsolePause>false</ConsolePause>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<ConsolePause>false</ConsolePause>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="DetectOS.cs" />
|
||||
<Compile Include="PlatformID.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
177
DiscImageChef.Interop/PlatformID.cs
Normal file
177
DiscImageChef.Interop/PlatformID.cs
Normal file
@@ -0,0 +1,177 @@
|
||||
//
|
||||
// Interop.PlatformID.cs
|
||||
//
|
||||
// Author:
|
||||
// Natalia Portillo <claunia@claunia.com>
|
||||
//
|
||||
// Copyright (c) 2015 © Claunia.com
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
namespace DiscImageChef.Interop
|
||||
{
|
||||
public enum PlatformID
|
||||
{
|
||||
/// <summary>
|
||||
/// Win32s
|
||||
/// </summary>
|
||||
Win32S = 0,
|
||||
/// <summary>
|
||||
/// Win32 (Windows 9x)
|
||||
/// </summary>
|
||||
Win32Windows = 1,
|
||||
/// <summary>
|
||||
/// Windows NT
|
||||
/// </summary>
|
||||
Win32NT = 2,
|
||||
/// <summary>
|
||||
/// Windows Mobile
|
||||
/// </summary>
|
||||
WinCE = 3,
|
||||
/// <summary>
|
||||
/// UNIX (do not use, too generic)
|
||||
/// </summary>
|
||||
Unix = 4,
|
||||
/// <summary>
|
||||
/// Xbox 360
|
||||
/// </summary>
|
||||
Xbox = 5,
|
||||
/// <summary>
|
||||
/// OS X
|
||||
/// </summary>
|
||||
MacOSX = 6,
|
||||
/// <summary>
|
||||
/// iOS is not OS X
|
||||
/// </summary>
|
||||
iOS = 7,
|
||||
/// <summary>
|
||||
/// Linux
|
||||
/// </summary>
|
||||
Linux = 8,
|
||||
/// <summary>
|
||||
/// Sun Solaris
|
||||
/// </summary>
|
||||
Solaris = 9,
|
||||
/// <summary>
|
||||
/// NetBSD
|
||||
/// </summary>
|
||||
NetBSD = 10,
|
||||
/// <summary>
|
||||
/// OpenBSD
|
||||
/// </summary>
|
||||
OpenBSD = 11,
|
||||
/// <summary>
|
||||
/// FreeBSD
|
||||
/// </summary>
|
||||
FreeBSD = 12,
|
||||
/// <summary>
|
||||
/// DragonFly BSD
|
||||
/// </summary>
|
||||
DragonFly = 13,
|
||||
/// <summary>
|
||||
/// Nintendo Wii
|
||||
/// </summary>
|
||||
Wii = 14,
|
||||
/// <summary>
|
||||
/// Nintendo Wii U
|
||||
/// </summary>
|
||||
WiiU = 15,
|
||||
/// <summary>
|
||||
/// Sony PlayStation 3
|
||||
/// </summary>
|
||||
PlayStation3 = 16,
|
||||
/// <summary>
|
||||
/// Sony Playstation 4
|
||||
/// </summary>
|
||||
PlayStation4 = 17,
|
||||
/// <summary>
|
||||
/// Google Android
|
||||
/// </summary>
|
||||
Android = 18,
|
||||
/// <summary>
|
||||
/// Samsung Tizen
|
||||
/// </summary>
|
||||
Tizen = 19,
|
||||
/// <summary>
|
||||
/// Windows Phone
|
||||
/// </summary>
|
||||
WindowsPhone = 20,
|
||||
/// <summary>
|
||||
/// GNU/Hurd
|
||||
/// </summary>
|
||||
Hurd = 21,
|
||||
/// <summary>
|
||||
/// Haiku
|
||||
/// </summary>
|
||||
Haiku = 22,
|
||||
/// <summary>
|
||||
/// HP-UX
|
||||
/// </summary>
|
||||
HPUX = 23,
|
||||
/// <summary>
|
||||
/// AIX
|
||||
/// </summary>
|
||||
AIX = 24,
|
||||
/// <summary>
|
||||
/// OS/400
|
||||
/// </summary>
|
||||
OS400 = 25,
|
||||
/// <summary>
|
||||
/// IRIX
|
||||
/// </summary>
|
||||
IRIX = 26,
|
||||
/// <summary>
|
||||
/// Minix
|
||||
/// </summary>
|
||||
Minix = 27,
|
||||
/// <summary>
|
||||
/// NonStop
|
||||
/// </summary>
|
||||
NonStop = 28,
|
||||
/// <summary>
|
||||
/// QNX
|
||||
/// </summary>
|
||||
QNX = 29,
|
||||
/// <summary>
|
||||
/// SINIX
|
||||
/// </summary>
|
||||
SINIX = 30,
|
||||
/// <summary>
|
||||
/// Tru64 UNIX
|
||||
/// </summary>
|
||||
Tru64 = 31,
|
||||
/// <summary>
|
||||
/// Ultrix
|
||||
/// </summary>
|
||||
Ultrix = 32,
|
||||
/// <summary>
|
||||
/// SCO OpenServer / SCO UNIX
|
||||
/// </summary>
|
||||
OpenServer = 33,
|
||||
/// <summary>
|
||||
/// SCO UnixWare
|
||||
/// </summary>
|
||||
UnixWare = 34,
|
||||
/// <summary>
|
||||
/// IBM z/OS
|
||||
/// </summary>
|
||||
zOS = 35,
|
||||
Unknown = -1
|
||||
}
|
||||
}
|
||||
27
DiscImageChef.Interop/Properties/AssemblyInfo.cs
Normal file
27
DiscImageChef.Interop/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
// Information about this assembly is defined by the following attributes.
|
||||
// Change them to the values specific to your project.
|
||||
|
||||
[assembly: AssemblyTitle("DiscImageChef.Interop")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Claunia.com")]
|
||||
[assembly: AssemblyProduct("")]
|
||||
[assembly: AssemblyCopyright("© Claunia.com")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
|
||||
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
|
||||
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
|
||||
|
||||
[assembly: AssemblyVersion("1.0.*")]
|
||||
|
||||
// The following attributes are used to specify the signing key for the assembly,
|
||||
// if desired. See the Mono documentation for more information about signing.
|
||||
|
||||
//[assembly: AssemblyDelaySign(false)]
|
||||
//[assembly: AssemblyKeyFile("")]
|
||||
|
||||
@@ -23,6 +23,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Decoders", "D
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Devices", "DiscImageChef.Devices\DiscImageChef.Devices.csproj", "{57BB2341-AB62-48FD-91B8-46F5A2F9ED51}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Interop", "DiscImageChef.Interop\DiscImageChef.Interop.csproj", "{9183F2E0-A879-4F23-9EE3-C6908F1332B2}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x86 = Debug|x86
|
||||
@@ -51,6 +53,10 @@ Global
|
||||
{7A4B05BE-73C9-4F34-87FE-E80CCF1F732D}.Release|x86.Build.0 = Release|x86
|
||||
{8996EF59-09B9-4920-A3DE-2F8EA2EBBCFF}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{8996EF59-09B9-4920-A3DE-2F8EA2EBBCFF}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9183F2E0-A879-4F23-9EE3-C6908F1332B2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9183F2E0-A879-4F23-9EE3-C6908F1332B2}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9183F2E0-A879-4F23-9EE3-C6908F1332B2}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9183F2E0-A879-4F23-9EE3-C6908F1332B2}.Release|x86.Build.0 = Release|Any CPU
|
||||
{CC48B324-A532-4A45-87A6-6F91F7141E8D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{CC48B324-A532-4A45-87A6-6F91F7141E8D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{CC48B324-A532-4A45-87A6-6F91F7141E8D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
|
||||
Reference in New Issue
Block a user