From 625442a221a50a34f8ce7feb1b8bce4e17814795 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 27 Oct 2019 20:45:23 +0000 Subject: [PATCH] Add missing Windows device types. --- DiscImageChef.Devices/Windows/Enums.cs | 151 ++++++++++++++++--------- 1 file changed, 97 insertions(+), 54 deletions(-) diff --git a/DiscImageChef.Devices/Windows/Enums.cs b/DiscImageChef.Devices/Windows/Enums.cs index fc640ed42..6ac658fac 100644 --- a/DiscImageChef.Devices/Windows/Enums.cs +++ b/DiscImageChef.Devices/Windows/Enums.cs @@ -37,7 +37,7 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Devices.Windows { [Flags] - enum FileAttributes : uint + internal enum FileAttributes : uint { /// /// FILE_ATTRIBUTE_ARCHIVE @@ -181,76 +181,93 @@ namespace DiscImageChef.Devices.Windows } [Flags] - enum FileAccess : uint + internal enum FileAccess : uint { /// /// FILE_READ_DATA /// ReadData = 0x0001, + /// /// FILE_LIST_DIRECTORY /// ListDirectory = ReadData, + /// /// FILE_WRITE_DATA /// WriteData = 0x0002, + /// /// FILE_ADD_FILE /// AddFile = WriteData, + /// /// FILE_APPEND_DATA /// AppendData = 0x0004, + /// /// FILE_ADD_SUBDIRECTORY /// AddSubdirectory = AppendData, + /// /// FILE_CREATE_PIPE_INSTANCE /// CreatePipeInstance = AppendData, + /// /// FILE_READ_EA /// ReadEa = 0x0008, + /// /// FILE_WRITE_EA /// WriteEa = 0x0010, + /// /// FILE_EXECUTE /// Execute = 0x0020, + /// /// FILE_TRAVERSE /// Traverse = Execute, + /// /// FILE_DELETE_CHILD /// DeleteChild = 0x0040, + /// /// FILE_READ_ATTRIBUTES /// ReadAttributes = 0x0080, + /// /// FILE_WRITE_ATTRIBUTES /// WriteAttributes = 0x0100, + /// /// GENERIC_READ /// GenericRead = 0x80000000, + /// /// GENERIC_WRITE /// GenericWrite = 0x40000000, + /// /// GENERIC_EXECUTE /// GenericExecute = 0x20000000, + /// /// GENERIC_ALL /// @@ -258,20 +275,23 @@ namespace DiscImageChef.Devices.Windows } [Flags] - enum FileShare : uint + internal enum FileShare : uint { /// /// FILE_SHARE_NONE /// None = 0x00, + /// /// FILE_SHARE_READ /// Read = 0x01, + /// /// FILE_SHARE_WRITE /// Write = 0x02, + /// /// FILE_SHARE_DELETE /// @@ -279,24 +299,28 @@ namespace DiscImageChef.Devices.Windows } [Flags] - enum FileMode : uint + internal enum FileMode : uint { /// /// NEW /// New = 0x01, + /// /// CREATE_ALWAYS /// CreateAlways = 0x02, + /// /// OPEN_EXISTING /// OpenExisting = 0x03, + /// /// OPEN_ALWAYS /// OpenAlways = 0x04, + /// /// TRUNCATE_EXISTING /// @@ -306,18 +330,20 @@ namespace DiscImageChef.Devices.Windows /// /// Direction of SCSI transfer /// - enum ScsiIoctlDirection : byte + internal enum ScsiIoctlDirection : byte { /// /// From host to device /// SCSI_IOCTL_DATA_OUT /// Out = 0, + /// /// From device to host /// SCSI_IOCTL_DATA_IN /// In = 1, + /// /// Unspecified direction, or bidirectional, or no data /// SCSI_IOCTL_DATA_UNSPECIFIED @@ -325,146 +351,163 @@ namespace DiscImageChef.Devices.Windows Unspecified = 2 } - enum WindowsIoctl : uint + internal enum WindowsIoctl : uint { - IoctlAtaPassThrough = 0x4D02C, + IoctlAtaPassThrough = 0x4D02C, IoctlAtaPassThroughDirect = 0x4D030, + /// /// ScsiPassThrough /// IoctlScsiPassThrough = 0x4D004, + /// /// ScsiPassThroughDirect /// IoctlScsiPassThroughDirect = 0x4D014, + /// /// ScsiGetAddress /// IoctlScsiGetAddress = 0x41018, - IoctlStorageQueryProperty = 0x2D1400, - IoctlIdePassThrough = 0x4D028, - IoctlStorageGetDeviceNumber = 0x2D1080, + IoctlStorageQueryProperty = 0x2D1400, + IoctlIdePassThrough = 0x4D028, + IoctlStorageGetDeviceNumber = 0x2D1080, IoctlSffdiskQueryDeviceProtocol = 0x71E80, - IoctlSffdiskDeviceCommand = 0x79E84 + IoctlSffdiskDeviceCommand = 0x79E84 } [Flags] - enum AtaFlags : ushort + internal enum AtaFlags : ushort { /// /// ATA_FLAGS_DRDY_REQUIRED /// DrdyRequired = 0x01, + /// /// ATA_FLAGS_DATA_IN /// DataIn = 0x02, + /// /// ATA_FLAGS_DATA_OUT /// DataOut = 0x04, + /// /// ATA_FLAGS_48BIT_COMMAND /// ExtendedCommand = 0x08, + /// /// ATA_FLAGS_USE_DMA /// Dma = 0x10, + /// /// ATA_FLAGS_NO_MULTIPLE /// NoMultiple = 0x20 } - enum StoragePropertyId + internal enum StoragePropertyId { - Device = 0, - Adapter = 1, - Id = 2, - UniqueId = 3, - WriteCache = 4, - Miniport = 5, - AccessAlignment = 6, - SeekPenalty = 7, - Trim = 8, + Device = 0, + Adapter = 1, + Id = 2, + UniqueId = 3, + WriteCache = 4, + Miniport = 5, + AccessAlignment = 6, + SeekPenalty = 7, + Trim = 8, WriteAggregation = 9, - Telemetry = 10, - LbProvisioning = 11, - Power = 12, - Copyoffload = 13, - Resiliency = 14 + Telemetry = 10, + LbProvisioning = 11, + Power = 12, + Copyoffload = 13, + Resiliency = 14 } - enum StorageQueryType + internal enum StorageQueryType { Standard = 0, - Exists = 1, - Mask = 2, - Max = 3 + Exists = 1, + Mask = 2, + Max = 3 } [SuppressMessage("ReSharper", "InconsistentNaming")] - enum StorageBusType + internal enum StorageBusType { - Unknown = 0, - SCSI = 1, - ATAPI = 2, - ATA = 3, - FireWire = 4, - SSA = 5, - Fibre = 6, - USB = 7, - RAID = 8, - iSCSI = 9, - SAS = 0xA, - SATA = 0xB, - SecureDigital = 0xC, - MultiMediaCard = 0xD, - Virtual = 0xE, + Unknown = 0, + SCSI = 1, + ATAPI = 2, + ATA = 3, + FireWire = 4, + SSA = 5, + Fibre = 6, + USB = 7, + RAID = 8, + iSCSI = 9, + SAS = 0xA, + SATA = 0xB, + SecureDigital = 0xC, + MultiMediaCard = 0xD, + Virtual = 0xE, FileBackedVirtual = 0xF, - NVMe = 0x11 + Spaces = 16, + SCM = 18, + UFS = 19, + Max = 20, + MaxReserved = 127, + NVMe = 0x11 } [Flags] - enum DeviceGetClassFlags : uint + internal enum DeviceGetClassFlags : uint { /// /// DIGCF_DEFAULT /// Default = 0x01, + /// /// DIGCF_PRESENT /// Present = 0x02, + /// /// DIGCF_ALLCLASSES /// AllClasses = 0x04, + /// /// DIGCF_PROFILE /// Profile = 0x08, + /// /// DIGCF_DEVICEINTERFACE /// DeviceInterface = 0x10 } - enum SdCommandClass : uint + internal enum SdCommandClass : uint { Standard, AppCmd } - enum SdTransferDirection : uint + internal enum SdTransferDirection : uint { Unspecified, Read, Write } - enum SdTransferType : uint + internal enum SdTransferType : uint { Unspecified, CmdOnly, @@ -474,7 +517,7 @@ namespace DiscImageChef.Devices.Windows } [SuppressMessage("ReSharper", "InconsistentNaming")] - enum SdResponseType : uint + internal enum SdResponseType : uint { Unspecified, None, @@ -488,7 +531,7 @@ namespace DiscImageChef.Devices.Windows R6 } - enum SffdiskDcmd : uint + internal enum SffdiskDcmd : uint { GetVersion, LockChannel,