From dac9e415d40b356f5e8c3fa9d59809c5947be170 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 1 Nov 2015 02:16:29 +0000 Subject: [PATCH] Added feature structures from MMC-1. --- DiscImageChef.Decoders/ChangeLog | 6 + .../DiscImageChef.Decoders.csproj | 1 + DiscImageChef.Decoders/SCSI/MMC/Features.cs | 1170 +++++++++++++++++ DiscImageChef.Devices/ChangeLog | 5 + DiscImageChef.Devices/Enums.cs | 394 ------ 5 files changed, 1182 insertions(+), 394 deletions(-) create mode 100644 DiscImageChef.Decoders/SCSI/MMC/Features.cs diff --git a/DiscImageChef.Decoders/ChangeLog b/DiscImageChef.Decoders/ChangeLog index 6a6a3f27..c04454bf 100644 --- a/DiscImageChef.Decoders/ChangeLog +++ b/DiscImageChef.Decoders/ChangeLog @@ -1,3 +1,9 @@ +2015-11-01 Natalia Portillo + + * SCSI/MMC/Features.cs: + * DiscImageChef.Decoders.csproj: + Added feature structures from MMC-1. + 2015-10-31 Natalia Portillo * SCSI/Modes.cs: diff --git a/DiscImageChef.Decoders/DiscImageChef.Decoders.csproj b/DiscImageChef.Decoders/DiscImageChef.Decoders.csproj index 3d6b4c34..2514e0fe 100644 --- a/DiscImageChef.Decoders/DiscImageChef.Decoders.csproj +++ b/DiscImageChef.Decoders/DiscImageChef.Decoders.csproj @@ -80,6 +80,7 @@ + diff --git a/DiscImageChef.Decoders/SCSI/MMC/Features.cs b/DiscImageChef.Decoders/SCSI/MMC/Features.cs new file mode 100644 index 00000000..a0001191 --- /dev/null +++ b/DiscImageChef.Decoders/SCSI/MMC/Features.cs @@ -0,0 +1,1170 @@ +// /*************************************************************************** +// The Disc Image Chef +// ---------------------------------------------------------------------------- +// +// Filename : Features.cs +// Version : 1.0 +// Author(s) : Natalia Portillo +// +// Component : Component +// +// Revision : $Revision$ +// Last change by : $Author$ +// Date : $Date$ +// +// --[ Description ] ---------------------------------------------------------- +// +// Description +// +// --[ License ] -------------------------------------------------------------- +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// ---------------------------------------------------------------------------- +// Copyright (C) 2011-2015 Claunia.com +// ****************************************************************************/ +// //$Id$ +using System; + + +namespace DiscImageChef.Decoders.SCSI.MMC +{ + + /// + /// MMC Feature enumeration + /// + public enum FeatureNumber : ushort + { + /// + /// Lists all profiles + /// + ProfileList = 0x0000, + /// + /// Mandatory behaviour + /// + Core = 0x0001, + /// + /// Operational changes + /// + Morphing = 0x0002, + /// + /// Removable medium + /// + Removable = 0x0003, + /// + /// Ability to control write protection status + /// + WriteProtect = 0x0004, + /// + /// Ability to read sectors with random addressing + /// + RandomRead = 0x0010, + /// + /// Reads on OSTA Multi-Read + /// + MultiRead = 0x001D, + /// + /// Able to read CD structures + /// + CDRead = 0x001E, + /// + /// Able to read DVD structures + /// + DVDRead = 0x001F, + /// + /// Ability to write sectors with random addressing + /// + RandomWrite = 0x0020, + /// + /// Ability to sequentially write + /// + IncrementalWrite = 0x0021, + /// + /// Support for media that requires erase before write + /// + SectorErasable = 0x0022, + /// + /// Supports formatting media + /// + Formattable = 0x0023, + /// + /// Ability to provide defect-free space + /// + HardwareDefectMgmt = 0x0024, + /// + /// Supports for write-once media in random order + /// + WriteOnce = 0x0025, + /// + /// Supports for media that shall be written from blocking boundaries + /// + RestrictedOverwrite = 0x0026, + /// + /// Supports high speed CD-RW + /// + CDRWCAV = 0x0027, + /// + /// Read and optionally write MRW + /// + MRW = 0x0028, + /// + /// Ability to control RECOVERED ERROR reporting + /// + EnDefectReport = 0x0029, + /// + /// Ability to recognize, read and optionally write DVD+RW + /// + DVDRWPlus = 0x002A, + /// + /// Ability to read DVD+R + /// + DVDRPlus = 0x002B, + /// + /// Ability to write CD in Track-at-Once + /// + CDTAO = 0x002D, + /// + /// Ability to write CD in Session-at-Once or RAW + /// + CDMastering = 0x002E, + /// + /// Ability to write DVD structures + /// + DVDRWrite = 0x002F, + /// + /// Ability to read DDCD + /// + DDCD = 0x0030, + /// + /// Ability to write DDCD-R + /// + DDCDR = 0x0031, + /// + /// Ability to write DDCD-RW + /// + DDCDRW = 0x0032, + /// + /// Ability to record in layer jump mode + /// + LayerJump = 0x0033, + /// + /// Ability to perform Layer Jump recording on Rigid Restricted Overwrite + /// + LJRigid = 0x0034, + /// + /// Ability to stop the long immediate operation + /// + StopLong = 0x0035, + /// + /// Ability to report CD-RW media sub-types supported for write + /// + CDRWMediaWrite = 0x0037, + /// + /// Logical block overwrite service on BD-R formatted as SRM+POW + /// + BDRPOW = 0x0038, + /// + /// Ability to read DVD+RW DL + /// + DVDRWDLPlus = 0x003A, + /// + /// Ability to read DVD+R DL + /// + DVDRDLPlus = 0x003B, + /// + /// Ability to read BD discs + /// + BDRead = 0x0040, + /// + /// Ability to write BD discs + /// + BDWrite = 0x0041, + /// + /// Timely, Safe Recording + /// + TSR = 0x0042, + /// + /// Ability to read HD DVD + /// + HDDVDRead = 0x0050, + /// + /// Ability to write HD DVD + /// + HDDVDWrite = 0x0051, + /// + /// Ability to write HD DVD-RW fragmented + /// + HDDVDRWFragment = 0x0052, + /// + /// Supports some Hybrid Discs + /// + Hybrid = 0x0080, + /// + /// Host and device directed power management + /// + PowerMgmt = 0x0100, + /// + /// Supports S.M.A.R.T. + /// + SMART = 0x0101, + /// + /// Single machanism multiple disc changer + /// + Changer = 0x0102, + /// + /// Ability to play CD audio to an analogue output + /// + CDAudioExt = 0x0103, + /// + /// Ability to accept new microcode + /// + MicrocodeUpgrade = 0x0104, + /// + /// Ability to respond to all commands within a specific time + /// + Timeout = 0x0105, + /// + /// Supports DVD CSS/CPPM + /// + CSS = 0x0106, + /// + /// Ability to read and write using host requested performance parameters + /// + RTS = 0x0107, + /// + /// Drive has a unique identifier + /// + DriveSerial = 0x0108, + /// + /// Ability to return unique Media Serial Number + /// + MediaSerial = 0x0109, + /// + /// Ability to read and/or write DCBs + /// + DCBs = 0x010A, + /// + /// Supports DVD CPRM + /// + CPRM = 0x010B, + /// + /// Firmware creation date report + /// + FirmwareInfo = 0x010C, + /// + /// Ability to decode and optionally encode AACS + /// + AACS = 0x010D, + /// + /// Ability to perform DVD CSS managed recording + /// + CSSManagedRec = 0x010E, + /// + /// Ability to decode and optionally encode VCPS + /// + VCPS = 0x0110, + /// + /// Supports SecurDisc + /// + SecurDisc = 0x0113, + /// + /// TCG Optical Security Subsystem Class + /// + OSSC = 0x0142 + } + + /// + /// MMC Profile enumeration + /// + public enum ProfileNumber : ushort + { + /// + /// Not to use + /// + Reserved = 0x0000, + /// + /// Non-removable disk profile + /// + NonRemovable = 0x0001, + /// + /// Rewritable with removable media + /// + Removable = 0x0002, + /// + /// Magneto-Optical with sector erase + /// + MOErasable = 0x0003, + /// + /// Optical write once + /// + OpticalWORM = 0x0004, + /// + /// Advance Storage - Magneto-Optical + /// + ASMO = 0x0005, + /// + /// Read-only Compact Disc + /// + CDROM = 0x0008, + /// + /// Write-once Compact Disc + /// + CDR = 0x0009, + /// + /// Re-writable Compact Disc + /// + CDRW = 0x000A, + /// + /// Read-only DVD + /// + DVDROM = 0x0010, + /// + /// Write-once sequentially recorded DVD-R + /// + DVDRSeq = 0x0011, + /// + /// DVD-RAM + /// + DVDRAM = 0x0012, + /// + /// Restricted overwrite DVD-RW + /// + DVDRWRes = 0x0013, + /// + /// Sequential recording DVD-RW + /// + DVDRWSeq = 0x0014, + /// + /// Sequential recording DVD-R DL + /// + DVDRDLSeq = 0x0015, + /// + /// Layer jump recording DVD-R DL + /// + DVDRDLJump = 0x0016, + /// + /// DVD+RW DL + /// + DVDRWDL = 0x0017, + /// + /// DVD-Download + /// + DVDDownload = 0x0018, + /// + /// DVD+RW + /// + DVDRWPlus = 0x001A, + /// + /// DVD+R + /// + DVDRPlus = 0x001B, + /// + /// DDCD-ROM + /// + DDCDROM = 0x0020, + /// + /// DDCD-R + /// + DDCDR = 0x0021, + /// + /// DDCD-RW + /// + DDCDRW = 0x0022, + /// + /// DVD+RW DL + /// + DVDRWDLPlus = 0x002A, + /// + /// DVD+R DL + /// + DVDRDLPlus = 0x002B, + /// + /// BD-ROM + /// + BDROM = 0x0040, + /// + /// BD-R SRM + /// + BDRSeq = 0x0041, + /// + /// BD-R RRM + /// + BDRRdm = 0x0042, + /// + /// BD-RE + /// + BDRE = 0x0043, + /// + /// HD DVD-ROM + /// + HDDVDROM = 0x0050, + /// + /// HD DVD-R + /// + HDDVDR = 0x0051, + /// + /// HD DVD-RAM + /// + HDDVDRAM = 0x0052, + /// + /// HD DVD-RW + /// + HDDVDRW = 0x0053, + /// + /// HD DVD-R DL + /// + HDDVDRDL = 0x0058, + /// + /// HD DVD-RW DL + /// + HDDVDRWDL = 0x005A, + /// + /// Drive does not conform to any profiles + /// + Unconforming = 0xFFFF + } + + public enum PhysicalInterfaces : uint + { + /// + /// Unspecified physical interface + /// + Unspecified = 0, + /// + /// SCSI + /// + SCSI = 1, + /// + /// ATAPI + /// + ATAPI = 2, + /// + /// IEEE-1394/1995 + /// + IEEE1394 = 3, + /// + /// IEEE-1394A + /// + IEEE1394A = 4, + /// + /// Fibre Channel + /// + FC = 5, + /// + /// IEEE-1394B + /// + IEEE1394B = 6, + /// + /// Serial ATAPI + /// + SerialATAPI = 7, + /// + /// USB + /// + USB = 8, + /// + /// Vendor unique + /// + Vendor = 0xFFFF + } + + public struct Profile + { + public ProfileNumber Number; + public bool Current; + } + + /// + /// Profile List Feature (0000h) + /// + public struct Feature_0000 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// All supported profiles + /// + public Profile[] Profiles; + } + + /// + /// Core Feature (0001h) + /// + public struct Feature_0001 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Currently in-use physical interface standard + /// + public PhysicalInterfaces PhysicalInterfaceStandard; + } + + /// + /// Morphing Feature (0002h) + /// + public struct Feature_0002 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Supports asynchronous GET EVENT/STATUS NOTIFICATION + /// + public bool Async; + } + + /// + /// Removable Medium Feature (0003h) + /// + public struct Feature_0003 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Mechanism type + /// + public byte LoadingMechanismType; + /// + /// Device can eject medium + /// + public bool Eject; + /// + /// Device starts in medium ejection/insertion allow + /// + public bool PreventJumper; + /// + /// Medium is currently locked + /// + public bool Lock; + } + + /// + /// Random Readable Feature (0010h) + /// + public struct Feature_0010 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Bytes per logical block + /// + public uint LogicalBlockSize; + /// + /// Number of logical blocks per device readable unit + /// + public ushort Blocking; + /// + /// Read/Write Error Recovery page is present + /// + public bool PP; + } + + /// + /// Multi-Read Feature (001Dh) + /// + public struct Feature_001D + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// CD Read Feature (001Eh) + /// + public struct Feature_001E + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Supports C2 Error Pointers + /// + public bool C2; + /// + /// Can read CD-Text with READ TOC/PMA/ATIP + /// + public bool CDText; + } + + /// + /// DVD Feature (001Fh) + /// + public struct Feature_001F + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// Random Writable Feature (0020h) + /// + public struct Feature_0020 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Last logical block address + /// + public uint LastLBA; + /// + /// Bytes per logical block + /// + public uint LogicalBlockSize; + /// + /// Number of logical blocks per device readable unit + /// + public ushort Blocking; + /// + /// Read/Write Error Recovery page is present + /// + public bool PP; + } + + /// + /// Incremental Streaming Writable Feature (0021h) + /// + public struct Feature_0021 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Bitmask of supported data types + /// + public ushort DataTypeSupported; + /// + /// Logical blocks per link + /// + public byte[] LinkSizes; + } + + /// + /// Sector Erasable Feature (0022h) + /// + public struct Feature_0022 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// Formattable Feature (0023h) + /// + public struct Feature_0023 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// Defect Management Feature (0024h) + /// + public struct Feature_0024 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// Write Once Feature (0025h) + /// + public struct Feature_0025 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Last logical block address + /// + public uint LastLBA; + /// + /// Number of logical blocks per device readable unit + /// + public ushort Blocking; + /// + /// Read/Write Error Recovery page is present + /// + public bool PP; + } + + /// + /// Restricted Overwrite Feature (0026h) + /// + public struct Feature_0026 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// CD Track at Once Feature (002Dh) + /// + public struct Feature_002D + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Can perform test writes + /// + public bool TestWrite; + /// + /// Supports overwriting a TAO track with another + /// + public bool CDRW; + /// + /// Can write R-W subchannels with user provided data + /// + public bool RWSubchannel; + /// + /// Bitmask of supported data types + /// + public ushort DataTypeSupported; + } + + /// + /// CD Mastering (Session at Once) Feature (002Eh) + /// + public struct Feature_002E + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Can write in Session at Once + /// + public bool SAO; + /// + /// Can write multi-session in RAW + /// + public bool RAWMS; + /// + /// Can write in RAW + /// + public bool RAW; + /// + /// Can perform test writes + /// + public bool TestWrite; + /// + /// Can overwrite previously recorded data + /// + public bool CDRW; + /// + /// Can write R-W subchannels with user provided data + /// + public bool RW; + /// + /// Maximum length of a Cue Sheet for Session at Once + /// + public uint MaxCueSheet; + } + + /// + /// DVD-R Write Feature (002Fh) + /// + public struct Feature_002F + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Buffer Under-run protection + /// + public bool BUF; + /// + /// Test write + /// + public bool TestWrite; + } + + /// + /// Power Management Feature (0100h) + /// + public struct Feature_0100 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// Embedded Changer Feature (0102h) + /// + public struct Feature_0102 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Side change capable + /// + public bool SCC; + /// + /// Supports Disc Present + /// + public bool SDP; + } + + /// + /// CD Audio External Play Feature (0103h) + /// + public struct Feature_0103 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Supports SCAN command + /// + public bool Scan; + /// + /// Separate Channel Mute + /// + public bool SCM; + /// + /// Separate Volume + /// + public bool SV; + } + + /// + /// Microcode Upgrade Feature (0104h) + /// + public struct Feature_0104 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// Time-Out Feature (0105h) + /// + public struct Feature_0105 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// DVD-CSS Feature (0106h) + /// + public struct Feature_0106 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// CSS version + /// + public byte CSSVersion; + } + + /// + /// Real Time Streaming Feature (0107h) + /// + public struct Feature_0107 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// Logical Unit serial number (0108h) + /// + public struct Feature_0108 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// LUN serial number + /// + public string Serial; + } + + /// + /// Disc Control Blocks Feature (010Ah) + /// + public struct Feature_010A + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + public uint[] DCBs; + } + + public static class Features + { + } +} + diff --git a/DiscImageChef.Devices/ChangeLog b/DiscImageChef.Devices/ChangeLog index 1616d0a5..0cbb5757 100644 --- a/DiscImageChef.Devices/ChangeLog +++ b/DiscImageChef.Devices/ChangeLog @@ -1,3 +1,8 @@ +2015-11-01 Natalia Portillo + + * Enums.cs: + Added feature structures from MMC-1. + 2015-11-01 Natalia Portillo * Enums.cs: diff --git a/DiscImageChef.Devices/Enums.cs b/DiscImageChef.Devices/Enums.cs index 5b0daed0..12f1594a 100644 --- a/DiscImageChef.Devices/Enums.cs +++ b/DiscImageChef.Devices/Enums.cs @@ -2743,399 +2743,5 @@ namespace DiscImageChef.Devices [Obsolete] PreventAll = 0x03 } - - /// - /// MMC Feature enumeration - /// - public enum ScsiMmcFeatureNumber : ushort - { - /// - /// Lists all profiles - /// - ProfileList = 0x0000, - /// - /// Mandatory behaviour - /// - Core = 0x0001, - /// - /// Operational changes - /// - Morphing = 0x0002, - /// - /// Removable medium - /// - Removable = 0x0003, - /// - /// Ability to control write protection status - /// - WriteProtect = 0x0004, - /// - /// Ability to read sectors with random addressing - /// - RandomRead = 0x0010, - /// - /// Reads on OSTA Multi-Read - /// - MultiRead = 0x001D, - /// - /// Able to read CD structures - /// - CDRead = 0x001E, - /// - /// Able to read DVD structures - /// - DVDRead = 0x001F, - /// - /// Ability to write sectors with random addressing - /// - RandomWrite = 0x0020, - /// - /// Ability to sequentially write - /// - IncrementalWrite = 0x0021, - /// - /// Support for media that requires erase before write - /// - SectorErasable = 0x0022, - /// - /// Supports formatting media - /// - Formattable = 0x0023, - /// - /// Ability to provide defect-free space - /// - HardwareDefectMgmt = 0x0024, - /// - /// Supports for write-once media in random order - /// - WriteOnce = 0x0025, - /// - /// Supports for media that shall be written from blocking boundaries - /// - RestrictedOverwrite = 0x0026, - /// - /// Supports high speed CD-RW - /// - CDRWCAV = 0x0027, - /// - /// Read and optionally write MRW - /// - MRW = 0x0028, - /// - /// Ability to control RECOVERED ERROR reporting - /// - EnDefectReport = 0x0029, - /// - /// Ability to recognize, read and optionally write DVD+RW - /// - DVDRWPlus = 0x002A, - /// - /// Ability to read DVD+R - /// - DVDRPlus = 0x002B, - /// - /// Ability to write CD in Track-at-Once - /// - CDTAO = 0x002D, - /// - /// Ability to write CD in Session-at-Once or RAW - /// - CDMastering = 0x002E, - /// - /// Ability to write DVD structures - /// - DVDRWrite = 0x002F, - /// - /// Ability to read DDCD - /// - DDCD = 0x0030, - /// - /// Ability to write DDCD-R - /// - DDCDR = 0x0031, - /// - /// Ability to write DDCD-RW - /// - DDCDRW = 0x0032, - /// - /// Ability to record in layer jump mode - /// - LayerJump = 0x0033, - /// - /// Ability to perform Layer Jump recording on Rigid Restricted Overwrite - /// - LJRigid = 0x0034, - /// - /// Ability to stop the long immediate operation - /// - StopLong = 0x0035, - /// - /// Ability to report CD-RW media sub-types supported for write - /// - CDRWMediaWrite = 0x0037, - /// - /// Logical block overwrite service on BD-R formatted as SRM+POW - /// - BDRPOW = 0x0038, - /// - /// Ability to read DVD+RW DL - /// - DVDRWDLPlus = 0x003A, - /// - /// Ability to read DVD+R DL - /// - DVDRDLPlus = 0x003B, - /// - /// Ability to read BD discs - /// - BDRead = 0x0040, - /// - /// Ability to write BD discs - /// - BDWrite = 0x0041, - /// - /// Timely, Safe Recording - /// - TSR = 0x0042, - /// - /// Ability to read HD DVD - /// - HDDVDRead = 0x0050, - /// - /// Ability to write HD DVD - /// - HDDVDWrite = 0x0051, - /// - /// Ability to write HD DVD-RW fragmented - /// - HDDVDRWFragment = 0x0052, - /// - /// Supports some Hybrid Discs - /// - Hybrid = 0x0080, - /// - /// Host and device directed power management - /// - PowerMgmt = 0x0100, - /// - /// Supports S.M.A.R.T. - /// - SMART = 0x0101, - /// - /// Single machanism multiple disc changer - /// - Changer = 0x0102, - /// - /// Ability to play CD audio to an analogue output - /// - CDAudioExt = 0x0103, - /// - /// Ability to accept new microcode - /// - MicrocodeUpgrade = 0x0104, - /// - /// Ability to respond to all commands within a specific time - /// - Timeout = 0x0105, - /// - /// Supports DVD CSS/CPPM - /// - CSS = 0x0106, - /// - /// Ability to read and write using host requested performance parameters - /// - RTS = 0x0107, - /// - /// Drive has a unique identifier - /// - DriveSerial = 0x0108, - /// - /// Ability to return unique Media Serial Number - /// - MediaSerial = 0x0109, - /// - /// Ability to read and/or write DCBs - /// - DCBs = 0x010A, - /// - /// Supports DVD CPRM - /// - CPRM = 0x010B, - /// - /// Firmware creation date report - /// - FirmwareInfo = 0x010C, - /// - /// Ability to decode and optionally encode AACS - /// - AACS = 0x010D, - /// - /// Ability to perform DVD CSS managed recording - /// - CSSManagedRec = 0x010E, - /// - /// Ability to decode and optionally encode VCPS - /// - VCPS = 0x0110, - /// - /// Supports SecurDisc - /// - SecurDisc = 0x0113, - /// - /// TCG Optical Security Subsystem Class - /// - OSSC = 0x0142 - } - - /// - /// MMC Profile enumeration - /// - public enum ScsiMmcProfileNumber : ushort - { - /// - /// Not to use - /// - Reserved = 0x0000, - /// - /// Non-removable disk profile - /// - NonRemovable = 0x0001, - /// - /// Rewritable with removable media - /// - Removable = 0x0002, - /// - /// Magneto-Optical with sector erase - /// - MOErasable = 0x0003, - /// - /// Optical write once - /// - OpticalWORM = 0x0004, - /// - /// Advance Storage - Magneto-Optical - /// - ASMO = 0x0005, - /// - /// Read-only Compact Disc - /// - CDROM = 0x0008, - /// - /// Write-once Compact Disc - /// - CDR = 0x0009, - /// - /// Re-writable Compact Disc - /// - CDRW = 0x000A, - /// - /// Read-only DVD - /// - DVDROM = 0x0010, - /// - /// Write-once sequentially recorded DVD-R - /// - DVDRSeq = 0x0011, - /// - /// DVD-RAM - /// - DVDRAM = 0x0012, - /// - /// Restricted overwrite DVD-RW - /// - DVDRWRes = 0x0013, - /// - /// Sequential recording DVD-RW - /// - DVDRWSeq = 0x0014, - /// - /// Sequential recording DVD-R DL - /// - DVDRDLSeq = 0x0015, - /// - /// Layer jump recording DVD-R DL - /// - DVDRDLJump = 0x0016, - /// - /// DVD+RW DL - /// - DVDRWDL = 0x0017, - /// - /// DVD-Download - /// - DVDDownload = 0x0018, - /// - /// DVD+RW - /// - DVDRWPlus = 0x001A, - /// - /// DVD+R - /// - DVDRPlus = 0x001B, - /// - /// DDCD-ROM - /// - DDCDROM = 0x0020, - /// - /// DDCD-R - /// - DDCDR = 0x0021, - /// - /// DDCD-RW - /// - DDCDRW = 0x0022, - /// - /// DVD+RW DL - /// - DVDRWDLPlus = 0x002A, - /// - /// DVD+R DL - /// - DVDRDLPlus = 0x002B, - /// - /// BD-ROM - /// - BDROM = 0x0040, - /// - /// BD-R SRM - /// - BDRSeq = 0x0041, - /// - /// BD-R RRM - /// - BDRRdm = 0x0042, - /// - /// BD-RE - /// - BDRE = 0x0043, - /// - /// HD DVD-ROM - /// - HDDVDROM = 0x0050, - /// - /// HD DVD-R - /// - HDDVDR = 0x0051, - /// - /// HD DVD-RAM - /// - HDDVDRAM = 0x0052, - /// - /// HD DVD-RW - /// - HDDVDRW = 0x0053, - /// - /// HD DVD-R DL - /// - HDDVDRDL = 0x0058, - /// - /// HD DVD-RW DL - /// - HDDVDRWDL = 0x005A, - /// - /// Drive does not conform to any profiles - /// - Unconforming = 0xFFFF - } }