mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
* DiscImageChef/Main.cs:
* DiscImageChef/Options.cs: * DiscImageChef/DiscImageChef.csproj: * DiscImageChef/Commands/DeviceInfo.cs: Added "device-info" command. * DiscImageChef.Decoders/SCSI.cs: Correct size miscalculation. Do not print "Device claims no standard", generates too much noise. * DiscImageChef.Devices/Device/Constructor.cs: Add OS error detection and handling. On Linux move to opening O_RDONLY and O_NONBLOCK to allow opening read-only media and removable drives without media. * DiscImageChef.Devices/Device/Variables.cs: * DiscImageChef.Devices/Device/ScsiCommands.cs: Add OS error detection and handling. * DiscImageChef.Devices/DiscImageChef.Devices.csproj: * DiscImageChef.Interop/DiscImageChef.Interop.csproj: Downgraded .NET version.
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
// //$Id$
|
||||
using System;
|
||||
using Microsoft.Win32.SafeHandles;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace DiscImageChef.Devices
|
||||
{
|
||||
@@ -50,6 +51,7 @@ namespace DiscImageChef.Devices
|
||||
{
|
||||
platformID = Interop.DetectOS.GetRealPlatformID();
|
||||
Timeout = 15;
|
||||
error = false;
|
||||
|
||||
switch (platformID)
|
||||
{
|
||||
@@ -61,15 +63,27 @@ namespace DiscImageChef.Devices
|
||||
IntPtr.Zero, Windows.FileMode.OpenExisting,
|
||||
Windows.FileAttributes.Normal, IntPtr.Zero);
|
||||
|
||||
throw new NotImplementedException();
|
||||
//break;
|
||||
if (((SafeFileHandle)fd).IsInvalid)
|
||||
{
|
||||
error = true;
|
||||
lastError = Marshal.GetLastWin32Error();
|
||||
}
|
||||
|
||||
//throw new NotImplementedException();
|
||||
break;
|
||||
}
|
||||
case Interop.PlatformID.Linux:
|
||||
{
|
||||
fd = Linux.Extern.open(devicePath, Linux.FileFlags.ReadWrite);
|
||||
fd = Linux.Extern.open(devicePath, Linux.FileFlags.Readonly | Linux.FileFlags.NonBlocking);
|
||||
|
||||
throw new NotImplementedException();
|
||||
//break;
|
||||
if ((int)fd < 0)
|
||||
{
|
||||
error = true;
|
||||
lastError = Marshal.GetLastWin32Error();
|
||||
}
|
||||
|
||||
//throw new NotImplementedException();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new InvalidOperationException(String.Format("Platform {0} not yet supported.", platformID));
|
||||
|
||||
Reference in New Issue
Block a user