Completed Windows enumerations.

This commit is contained in:
2015-10-06 18:27:38 +01:00
parent 87fa088e84
commit fa64ba56c6
4 changed files with 247 additions and 23 deletions

View File

@@ -1,3 +1,10 @@
2015-10-06 Natalia Portillo <claunia@claunia.com>
* Windows/Enums.cs:
* Windows/Extern.cs:
* Windows/Structs.cs:
Completed Windows enumerations.
2015-10-06 Natalia Portillo <claunia@claunia.com> 2015-10-06 Natalia Portillo <claunia@claunia.com>
* Enums.cs: * Enums.cs:

View File

@@ -1,24 +1,243 @@
using System; using System;
using System.Runtime.InteropServices;
namespace DiscImageChef.Devices.Windows namespace DiscImageChef.Devices.Windows
{ {
static class Enums [Flags]
enum FileAttributes : uint
{ {
internal const uint FILE_SHARE_READ = 0x1; /// <summary>
internal const uint FILE_SHARE_WRITE = 0x1; /// FILE_ATTRIBUTE_ARCHIVE
/// </summary>
internal const uint OPEN_EXISTING = 0x3; Archive = 0x20,
/// <summary>
internal const uint FILE_ATTRIBUTE_NORMAL = 0x80; /// FILE_ATTRIBUTE_COMPRESSED
/// </summary>
internal const uint GENERIC_READ = 0x80000000; Compressed = 0x800,
internal const uint GENERIC_WRITE = 0x40000000; /// <summary>
/// FILE_ATTRIBUTE_DEVICE
internal const byte SCSI_IOCTL_DATA_OUT = 0; //Give data to SCSI device (e.g. for writing) /// </summary>
internal const byte SCSI_IOCTL_DATA_IN = 1; //Get data from SCSI device (e.g. for reading) Device = 0x40,
internal const byte SCSI_IOCTL_DATA_UNSPECIFIED = 2; //No data (e.g. for ejecting) /// <summary>
/// FILE_ATTRIBUTE_DIRECTORY
internal const uint IOCTL_SCSI_PASS_THROUGH_DIRECT = 0x4D014; /// </summary>
Directory = 0x10,
/// <summary>
/// FILE_ATTRIBUTE_ENCRYPTED
/// </summary>
Encrypted = 0x4000,
/// <summary>
/// FILE_ATTRIBUTE_HIDDEN
/// </summary>
Hidden = 0x02,
/// <summary>
/// FILE_ATTRIBUTE_INTEGRITY_STREAM
/// </summary>
IntegrityStream = 0x8000,
/// <summary>
/// FILE_ATTRIBUTE_NORMAL
/// </summary>
Normal = 0x80,
/// <summary>
/// FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
/// </summary>
NotContentIndexed = 0x2000,
/// <summary>
/// FILE_ATTRIBUTE_NO_SCRUB_DATA
/// </summary>
NoScrubData = 0x20000,
/// <summary>
/// FILE_ATTRIBUTE_OFFLINE
/// </summary>
Offline = 0x1000,
/// <summary>
/// FILE_ATTRIBUTE_READONLY
/// </summary>
Readonly = 0x01,
/// <summary>
/// FILE_ATTRIBUTE_REPARSE_POINT
/// </summary>
ReparsePoint = 0x400,
/// <summary>
/// FILE_ATTRIBUTE_SPARSE_FILE
/// </summary>
SparseFile = 0x200,
/// <summary>
/// FILE_ATTRIBUTE_SYSTEM
/// </summary>
System = 0x04,
/// <summary>
/// FILE_ATTRIBUTE_TEMPORARY
/// </summary>
Temporary = 0x100,
/// <summary>
/// FILE_ATTRIBUTE_VIRTUAL
/// </summary>
Virtual = 0x10000
} }
[Flags]
enum FileAccess : uint
{
/// <summary>
/// FILE_READ_DATA
/// </summary>
ReadData = 0x0001,
/// <summary>
/// FILE_LIST_DIRECTORY
/// </summary>
ListDirectory = ReadData,
/// <summary>
/// FILE_WRITE_DATA
/// </summary>
WriteData = 0x0002,
/// <summary>
/// FILE_ADD_FILE
/// </summary>
AddFile = WriteData,
/// <summary>
/// FILE_APPEND_DATA
/// </summary>
AppendData = 0x0004,
/// <summary>
/// FILE_ADD_SUBDIRECTORY
/// </summary>
AddSubdirectory = AppendData,
/// <summary>
/// FILE_CREATE_PIPE_INSTANCE
/// </summary>
CreatePipeInstance = AppendData,
/// <summary>
/// FILE_READ_EA
/// </summary>
ReadEA = 0x0008,
/// <summary>
/// FILE_WRITE_EA
/// </summary>
WriteEA = 0x0010,
/// <summary>
/// FILE_EXECUTE
/// </summary>
Execute = 0x0020,
/// <summary>
/// FILE_TRAVERSE
/// </summary>
Traverse = Execute,
/// <summary>
/// FILE_DELETE_CHILD
/// </summary>
DeleteChild = 0x0040,
/// <summary>
/// FILE_READ_ATTRIBUTES
/// </summary>
ReadAttributes = 0x0080,
/// <summary>
/// FILE_WRITE_ATTRIBUTES
/// </summary>
WriteAttributes = 0x0100,
/// <summary>
/// GENERIC_READ
/// </summary>
GenericRead = 0x80000000,
/// <summary>
/// GENERIC_WRITE
/// </summary>
GenericWrite = 0x40000000,
/// <summary>
/// GENERIC_EXECUTE
/// </summary>
GenericExecute = 0x20000000,
/// <summary>
/// GENERIC_ALL
/// </summary>
GenericAll = 0x10000000
}
[Flags]
enum FileShare : uint
{
/// <summary>
/// FILE_SHARE_NONE
/// </summary>
None = 0x00,
/// <summary>
/// FILE_SHARE_READ
/// </summary>
Read = 0x01,
/// <summary>
/// FILE_SHARE_WRITE
/// </summary>
Write = 0x02,
/// <summary>
/// FILE_SHARE_DELETE
/// </summary>
Delete = 0x03
}
[Flags]
enum FileMode : uint
{
/// <summary>
/// NEW
/// </summary>
New = 0x01,
/// <summary>
/// CREATE_ALWAYS
/// </summary>
CreateAlways = 0x02,
/// <summary>
/// OPEN_EXISTING
/// </summary>
OpenExisting = 0x03,
/// <summary>
/// OPEN_ALWAYS
/// </summary>
OpenAlways = 0x04,
/// <summary>
/// TRUNCATE_EXISTING
/// </summary>
TruncateExisting = 0x05
}
/// <summary>
/// Direction of SCSI transfer
/// </summary>
enum ScsiIoctlDirection : byte
{
/// <summary>
/// From host to device
/// SCSI_IOCTL_DATA_OUT
/// </summary>
Out = 0,
/// <summary>
/// From device to host
/// SCSI_IOCTL_DATA_IN
/// </summary>
In = 1,
/// <summary>
/// Unspecified direction, or bidirectional, or no data
/// SCSI_IOCTL_DATA_UNSPECIFIED
/// </summary>
Unspecified = 2
}
enum WindowsIoctl : uint
{
/// <summary>
/// ScsiPassThrough
/// </summary>
IOCTL_SCSI_PASS_THROUGH = 0x4D004,
/// <summary>
/// ScsiPassThroughDirect
/// </summary>
IOCTL_SCSI_PASS_THROUGH_DIRECT = 0x4D014,
/// <summary>
/// ScsiGetAddress
/// </summary>
IOCTL_SCSI_GET_ADDRESS = 0x41018
}
/// <summary>
/// AAAAA
/// </summary>
} }

View File

@@ -9,15 +9,12 @@ namespace DiscImageChef.Devices.Windows
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern SafeFileHandle CreateFile( internal static extern SafeFileHandle CreateFile(
[MarshalAs(UnmanagedType.LPTStr)] string filename, [MarshalAs(UnmanagedType.LPTStr)] string filename,
// [MarshalAs(UnmanagedType.U4)] FileAccess access, [MarshalAs(UnmanagedType.U4)] FileAccess access,
uint access, [MarshalAs(UnmanagedType.U4)] FileShare share,
//[MarshalAs(UnmanagedType.U4)] FileShare share,
uint share,
IntPtr securityAttributes, // optional SECURITY_ATTRIBUTES struct or IntPtr.Zero IntPtr securityAttributes, // optional SECURITY_ATTRIBUTES struct or IntPtr.Zero
//[MarshalAs(UnmanagedType.U4)] FileMode creationDisposition, //[MarshalAs(UnmanagedType.U4)] FileMode creationDisposition,
uint creationDisposition, uint creationDisposition,
//[MarshalAs(UnmanagedType.U4)] FileAttributes flagsAndAttributes, [MarshalAs(UnmanagedType.U4)] FileAttributes flagsAndAttributes,
uint flagsAndAttributes,
IntPtr templateFile); IntPtr templateFile);
[DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]

View File

@@ -15,7 +15,8 @@ namespace DiscImageChef.Devices.Windows
public byte Lun; public byte Lun;
public byte CdbLength; public byte CdbLength;
public byte SenseInfoLength; public byte SenseInfoLength;
public byte DataIn; [MarshalAs(UnmanagedType.U1)]
public ScsiIoctlDirection DataIn;
public uint DataTransferLength; public uint DataTransferLength;
public uint TimeOutValue; public uint TimeOutValue;
public IntPtr DataBuffer; public IntPtr DataBuffer;