2017-05-19 20:28:49 +01:00
|
|
|
// /***************************************************************************
|
2015-10-12 06:39:31 +01:00
|
|
|
// The Disc Image Chef
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Filename : Enums.cs
|
2016-07-28 18:13:49 +01:00
|
|
|
// Author(s) : Natalia Portillo <claunia@claunia.com>
|
2015-10-12 06:39:31 +01:00
|
|
|
//
|
2016-07-28 18:13:49 +01:00
|
|
|
// Component : Direct device access.
|
2015-10-12 06:39:31 +01:00
|
|
|
//
|
|
|
|
|
// --[ Description ] ----------------------------------------------------------
|
|
|
|
|
//
|
2016-07-28 18:13:49 +01:00
|
|
|
// Contains enumerations that are common to all operating systems.
|
2015-10-12 06:39:31 +01:00
|
|
|
//
|
|
|
|
|
// --[ License ] --------------------------------------------------------------
|
|
|
|
|
//
|
2016-07-28 18:13:49 +01:00
|
|
|
// This library is free software; you can redistribute it and/or modify
|
|
|
|
|
// it under the terms of the GNU Lesser General Public License as
|
|
|
|
|
// published by the Free Software Foundation; either version 2.1 of the
|
2015-10-12 06:39:31 +01:00
|
|
|
// License, or (at your option) any later version.
|
|
|
|
|
//
|
2016-07-28 18:13:49 +01:00
|
|
|
// This library 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
|
|
|
|
|
// Lesser General Public License for more details.
|
2015-10-12 06:39:31 +01:00
|
|
|
//
|
2016-07-28 18:13:49 +01:00
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
|
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
2015-10-12 06:39:31 +01:00
|
|
|
//
|
|
|
|
|
// ----------------------------------------------------------------------------
|
2018-12-29 17:34:38 +00:00
|
|
|
// Copyright © 2011-2019 Natalia Portillo
|
2015-10-12 06:39:31 +01:00
|
|
|
// ****************************************************************************/
|
|
|
|
|
|
|
|
|
|
using System;
|
2017-12-23 20:04:36 +00:00
|
|
|
|
2017-12-22 03:13:43 +00:00
|
|
|
// ReSharper disable MemberCanBeInternal
|
|
|
|
|
// ReSharper disable InconsistentNaming
|
2015-10-05 21:20:25 +01:00
|
|
|
|
|
|
|
|
namespace DiscImageChef.Devices
|
|
|
|
|
{
|
2015-10-19 04:39:39 +01:00
|
|
|
#region ATA Commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// All known ATA commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum AtaCommands : byte
|
2015-10-05 21:20:25 +01:00
|
|
|
{
|
2015-10-19 04:39:39 +01:00
|
|
|
#region Commands defined on Western Digital WD1000 Winchester Disk Controller
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Formats a track
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FormatTrack = 0x50,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads sectors
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadOld = 0x20,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads sectors using DMA
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDmaOld = 0x28,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Calibrates the position of the heads
|
|
|
|
|
/// Includes all commands from 0x10 to 0x1F
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Restore = 0x10,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Seeks to a certain cylinder
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Seek = 0x70,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteOld = 0x30,
|
|
|
|
|
#endregion Commands defined on Western Digital WD1000 Winchester Disk Controller
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA rev. 4c
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Acknowledges media change
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
AckMediaChange = 0xDB,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends vendor-specific information that may be required in order to pass diagnostics
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PostBoot = 0xDC,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Prepares a removable drive to respond to boot
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PreBoot = 0xDD,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Checks drive power mode
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
CheckPowerMode = 0xE5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Checks drive power mode
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
CheckPowerModeAlternate = 0x98,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Locks the door of the drive
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DoorLock = 0xDE,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unlocks the door of the drive
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DoorUnLock = 0xDF,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Executes internal drive diagnostics
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ExecuteDriveDiagnostic = 0x90,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets a sector containing drive identification and capabilities
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
IdentifyDrive = 0xEC,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the drive to enter idle status
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Idle = 0xE3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the drive to enter idle status
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
IdleAlternate = 0x97,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the drive to enter idle status immediately
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
IdleImmediate = 0xE1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the drive to enter idle status immediately
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
IdleImmediateAlternate = 0x95,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Changes heads and sectors per cylinder for the drive
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
InitializeDriveParameters = 0x91,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Does nothing
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Nop = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads sectors using PIO transfer
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Read = 0x21,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads the content of the drive's buffer
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadBuffer = 0xE4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads sectors using DMA transfer
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDma = 0xC9,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads sectors using DMA transfer, retrying on error
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDmaRetry = 0xC8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads a sector including ECC bytes without checking them
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadLong = 0x23,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads a sector including ECC bytes without checking them, retrying on error
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadLongRetry = 0x22,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads multiple sectors generating interrupts at block transfers
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadMultiple = 0xC4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads sectors using PIO transfer, retrying on error
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadRetry = 0x20,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies sectors readability without transferring them
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadVerify = 0x41,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies sectors readability without transferring them, retrying on error
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadVerifyRetry = 0x40,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Moves the heads to cylinder 0
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Recalibrate = Restore,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets drive parameters
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetFeatures = 0xEF,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Enables <see cref="ReadMultiple" /> and <see cref="WriteMultiple" /> and sets the block length for these commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetMultipleMode = 0xC6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Causes the drive to stop and sleep until a hardware or software reset
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Sleep = 0xE6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Causes the drive to stop and sleep until a hardware or software reset
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SleepAlternate = 0x99,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the drive to enter Standby mode
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Standby = 0xE2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the drive to enter Standby mode
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
StandbyAlternate = 0x96,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the drive to enter Standby mode, immediately
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
StandbyImmediate = 0xE0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the drive to enter Standby mode, immediately
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
StandbyImmediateAlternate = 0x94,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors using PIO transfer
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Write = 0x31,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes data to the drive's sector buffer
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteBuffer = 0xE8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors using DMA transfer
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteDma = 0xCB,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors using DMA transfer, retrying on error
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteDmaRetry = 0xCA,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors with custom ECC
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteLong = 0x33,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors with custom ECC, retrying on error
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteLongRetry = 0x32,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes several sectors at once setting interrupts on end of block
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteMultiple = 0xC5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes the same data to several sector
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteSame = 0xE9,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors using PIO transfer, retrying on error
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteRetry = 0x30,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors verifying them immediately after write
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteVerify = 0x3C,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Vendor_8X = 0x80,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Vendor_9A = 0x9A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorC0 = 0xC0,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorC1 = 0xC1,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorC2 = 0xC2,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorC3 = 0xC3,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorF0 = 0xF0,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorF1 = 0xF1,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorF2 = 0xF2,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorF3 = 0xF3,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorF4 = 0xF4,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorF5 = 0xF5,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorF6 = 0xF6,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorF7 = 0xF7,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorF8 = 0xF8,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorF9 = 0xF9,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorFa = 0xFA,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorFb = 0xFB,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorFc = 0xFC,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorFd = 0xFD,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorFe = 0xFE,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VendorFf = 0xFF,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion Commands defined on ATA rev. 4c
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA-2 rev. 4c
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Alters the device microcode
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DownloadMicrocode = 0x92,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Ejects the removable medium on the device
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
MediaEject = 0xED,
|
|
|
|
|
#endregion Commands defined on ATA-2 rev. 4c
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA-3 rev. 7b
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets a sector containing drive identification and capabilities
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
IdentifyDriveDma = 0xEE,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disables the security lock
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SecurityDisablePassword = 0xF6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Enables usage of <see cref="SecurityEraseUnit" /> command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SecurityErasePrepare = 0xF3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Erases all user data and isables the security lock
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SecurityEraseUnit = 0xF4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the security freeze lock preventing any security command from working until hardware reset
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SecurityFreezeLock = 0xF5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the device user or master password
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SecuritySetPassword = 0xF1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unlocks device
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SecurityUnlock = 0xF2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SMART operations
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Smart = 0xB0,
|
|
|
|
|
#endregion Commands defined on ATA-3 rev. 7b
|
|
|
|
|
|
|
|
|
|
#region Commands defined on CompactFlash Specification
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Pre-erases and conditions data sectors
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
EraseSectors = 0xC0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests extended error information
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RequestSense = 0x03,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Provides a way to determine the exact number of times a sector has been erases and programmed
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
TranslateSector = 0x87,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// For CompactFlash cards that do not support security mode, this commands is equal to <see cref="Nop" />
|
|
|
|
|
/// For those that do, this command is equal to <see cref="SecurityFreezeLock" />
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WearLevel = 0xF5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes a block of sectors without erasing them previously
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteMultipleWithoutErase = 0xCD,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors without erasing them previously
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteWithoutErase = 0x38,
|
|
|
|
|
#endregion Commands defined on CompactFlash Specification
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA/ATAPI-4 rev. 18
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Resets a device
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DeviceReset = 0x08,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to flush the write cache and write it to the media
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FlushCache = 0xE7,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets media status
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GetMediaStatus = 0xDA,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets a sector containing drive identification and capabilities, for ATA devices
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
IdentifyDevice = IdentifyDrive,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets a sector containing drive identification and capabilities, for ATAPI devices
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
IdentifyPacketDevice = 0xA1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Locks the media on the device
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
MediaLock = DoorLock,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unlocks the media on the device
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
MediaUnLock = DoorUnLock,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends a command packet
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Packet = 0xA0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Queues a read of sectors
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDmaQueued = 0xC7,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns the native maximum address in factory default condition
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadNativeMaxAddress = 0xF8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Used to provide data transfer and/or status of a previous command (queue or packet)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Service = 0xA2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Redefines the maximum user-accessible address space
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetMaxAddress = 0xF9,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Queues a write of sectors
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteDmaQueued = 0xCC,
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI-4 rev. 18
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA/ATAPI-6 rev. 3b
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Determines if the device supports the Media Card Pass Through Command feature set
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
CheckMediaCardType = 0xD1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Device Configuration Overlay feature set
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DevideConfiguration = 0xB1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to flush the write cache and write it to the media (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FlushCacheExt = 0xEA,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads sectors using DMA transfer, retrying on error (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDmaExt = 0x25,
|
2017-12-23 20:04:36 +00:00
|
|
|
/// <summary>
|
|
|
|
|
/// (48-bit)
|
|
|
|
|
/// Queues a read of sectors
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDmaQueuedExt = 0x26,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads sectors using PIO transfer, retrying on error (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadExt = 0x24,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns the indicated log to the host (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadLogExt = 0x2F,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads multiple sectors generating interrupts at block transfers (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadMultipleExt = 0x29,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns the native maximum address in factory default condition (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadNativeMaxAddressExt = 0x27,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies sectors readability without transferring them, retrying on error (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadVerifyExt = 0x42,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends a SET MAX subcommand, <see cref="AtaSetMaxSubCommands" />
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetMaxCommands = 0xF9,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Redefines the maximum user-accessible address space (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetMaxAddressExt = 0x37,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors using DMA transfer, retrying on error (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteDmaExt = 0x35,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Queues a write of sectors (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteDmaQueuedExt = 0x36,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors using PIO transfer, retrying on error (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteExt = 0x34,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes data to the indicated log (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteLogExt = 0x3F,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes several sectors at once setting interrupts on end of block (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteMultipleExt = 0x39,
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI-6 rev. 3b
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA/ATAPI-7 rev. 4b
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Configurates the operating parameters for a stream
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ConfigureStream = 0x51,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads data on an alloted time using DMA
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadStreamDmaExt = 0x2A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads data on an alloted time using PIO
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadStreamExt = 0x2B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes data on an alloted time using DMA
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteStreamDmaExt = 0x3A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes data on an alloted time using PIO
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteStreamExt = 0x3B,
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI-7 rev. 4b
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA/ATAPI-8 rev. 3f
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends a Non Volatile Cache subcommand. <see cref="AtaNonVolatileCacheSubCommands" />
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
NonVolatileCacheCommand = 0xB6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Retrieves security protocol information or the results from <see cref="TrustedSend" /> commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
TrustedReceive = 0x5C,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Retrieves security protocol information or the results from <see cref="TrustedSend" /> commands, using DMA
|
|
|
|
|
/// transfers
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
TrustedReceiveDma = 0x5D,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends one or more Security Protocol commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
TrustedSend = 0x5E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends one or more Security Protocol commands, using DMA transfers
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
TrustedSendDma = 0x5F,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors using DMA transfer, retrying on error (48-bit), not returning until the operation is complete
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteDmaFuaExt = 0x3D,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Queues a write of sectors (48-bit), not returning until the operation is complete
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteDmaQueuedFuaExt = 0x3E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes several sectors at once setting interrupts on end of block (48-bit), not returning until the operation is
|
|
|
|
|
/// complete
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteMultipleFuaExt = 0xCE,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes a sector that will give an uncorrectable error on any read operation
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteUncorrectableExt = 0x45,
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI-8 rev. 3f
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA/ATAPI Command Set 2 (ACS-2) rev. 2
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Provides information for device optimization
|
|
|
|
|
/// In SSDs, this contains trimming
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DataSetManagement = 0x06,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Alters the device microcode, using DMA transfers
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DownloadMicrocodeDma = 0x93,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads the content of the drive's buffer, using DMA transfers
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadBufferDma = 0xE9,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads sectors using NCQ
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadFpDmaQueued = 0x60,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns the indicated log to the host (48-bit)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadLogDmaExt = 0x47,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests SPC-4 style error data
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RequestSenseDataExt = 0x0B,
|
2018-06-22 08:08:38 +01:00
|
|
|
SanitizeCommands = 0xB4,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Executes a Security Protocol command that does not require a transfer of data
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
TrustedNonData = 0x5B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes data to the drive's sector buffer, using DMA transfers
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteBufferDma = 0xE8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes sectors using NCQ
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteFpDmaQueued = 0x61,
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI Command Set 2 (ACS-2) rev. 2
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA/ATAPI Command Set 3 (ACS-3) rev. 5
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends <see cref="AtaNcqQueueManagementSubcommands" />
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
NcqQueueManagement = 0x63,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the device date and time
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2016-02-08 00:13:49 +00:00
|
|
|
SetDateAndTimeExt = 0x77,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion Commands defined on ATA/ATAPI Command Set 3 (ACS-3) rev. 5
|
2016-02-08 00:13:49 +00:00
|
|
|
|
|
|
|
|
#region Commands defined on ATA/ATAPI Command Set 3 (ACS-3) rev. 6
|
|
|
|
|
NativeMaxAddress = 0x78
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI Command Set 3 (ACS-3) rev. 6
|
2015-10-19 04:39:39 +01:00
|
|
|
}
|
|
|
|
|
#endregion ATA Commands
|
|
|
|
|
|
|
|
|
|
#region ATA SMART SubCommands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// All known ATA SMART sub-commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum AtaSmartSubCommands : byte
|
|
|
|
|
{
|
|
|
|
|
#region Commands defined on ATA-3 rev. 7b
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disables all SMART capabilities
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Disable = 0xD9,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Enables/disables SMART attribute autosaving
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
EnableDisableAttributeAutosave = 0xD2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Enables all SMART capabilities
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Enable = 0xD8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns the device's SMART attributes thresholds
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadAttributeThresholds = 0xD1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns the device's SMART attributes values
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadAttributeValues = 0xD0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Communicates device reliability status
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReturnStatus = 0xDA,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Saves any attribute values immediately
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SaveAttributeValues = 0xD3,
|
|
|
|
|
#endregion Commands defined on ATA-3 rev. 7b
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA/ATAPI-4 rev. 18
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Causes the device to immediately initiate a SMART data collection and saves it to the device
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ExecuteOfflineImmediate = 0xD4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns the device's SMART attributes values
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadData = ReadAttributeValues,
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI-4 rev. 18
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA/ATAPI-5 rev. 3
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns the indicated log to the host
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadLog = 0xD5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes data to the indicated log
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteLog = 0xD6
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI-5 rev. 3
|
|
|
|
|
}
|
|
|
|
|
#endregion ATA SMART SubCommands
|
|
|
|
|
|
|
|
|
|
#region ATA Device Configuration Overlay SubCommands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// All known ATA DEVICE CONFIGURATION sub-commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum AtaDeviceConfigurationSubCommands : byte
|
|
|
|
|
{
|
|
|
|
|
#region Commands defined on ATA/ATAPI-6 rev. 3b
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disables any change made by <see cref="Set" />
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Restore = 0xC0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Prevents any <see cref="AtaDeviceConfigurationSubCommands" /> from working until a power down cycle.
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FreezeLock = 0xC1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Indicates the selectable commands, modes, and feature sets the device supports
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Identify = 0xC2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Modifies the commands, modes and features sets the device will obey to
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Set = 0xC3
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI-6 rev. 3b
|
|
|
|
|
}
|
|
|
|
|
#endregion ATA Device Configuration Overlay SubCommands
|
|
|
|
|
|
|
|
|
|
#region ATA SET MAX SubCommands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// All known ATA SET MAX sub-commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum AtaSetMaxSubCommands : byte
|
|
|
|
|
{
|
|
|
|
|
#region Commands defined on ATA/ATAPI-6 rev. 3b
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Redefines the maximum user-accessible address space
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Address = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disables any other <see cref="AtaSetMaxSubCommands" /> until power cycle
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FreezeLock = 0x04,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disables any other <see cref="AtaSetMaxSubCommands" /> except <see cref="UnLock" /> and <see cref="FreezeLock" />
|
|
|
|
|
/// until power cycle
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Lock = 0x02,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the device password
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetPassword = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disables <see cref="Lock" />
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
UnLock = 0x03,
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI-6 rev. 3b
|
|
|
|
|
}
|
|
|
|
|
#endregion ATA SET MAX SubCommands
|
|
|
|
|
|
|
|
|
|
#region ATA Non Volatile Cache SubCommands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// All known ATA NV CACHE sub-commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum AtaNonVolatileCacheSubCommands : byte
|
|
|
|
|
{
|
|
|
|
|
#region Commands defined on ATA/ATAPI-8 rev. 3f
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Adds the specified LBA to the Non Volatile Cache
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
AddLbaToNvCache = 0x10,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Ensures there is enough free space in the Non Volatile Cache
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FlushNvCache = 0x14,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a list of LBAs actually stored in the Non Volatile Cache
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
QueryNvCachePinnedSet = 0x12,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a list of LBAs accessed but not in the Non Volatile Cache
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
QueryNvCacheMisses = 0x13,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Removes the specified LBA from the Non Volatile Cache Pinned Set
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RemoveLbaFromNvCache = 0x11,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disables the Non Volatile Cache Power Mode
|
|
|
|
|
/// <see cref="SetNvCachePowerMode" />
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReturnFromNvCachePowerMode = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Enables the Non Volatile Cache Power Mode, so the device tries to serve all accesses from the Non Volatile Cache
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetNvCachePowerMode = 0x00
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI-8 rev. 3f
|
|
|
|
|
}
|
|
|
|
|
#endregion ATA Non Volatile Cache SubCommands
|
|
|
|
|
|
|
|
|
|
#region ATA Sanitize SubCommands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// All known ATA SANITIZE sub-commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum AtaSanitizeSubCommands : ushort
|
|
|
|
|
{
|
|
|
|
|
#region Commands defined on ATA/ATAPI Command Set 2 (ACS-2) rev. 2
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Causes a block erase on all user data
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
BlockEraseExt = 0x0012,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Changes the internal encryption keys. Renders user data unusable
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
CryptoScrambleExt = 0x0011,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Fills user data with specified pattern
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
OverwriteExt = 0x0014,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disables all <see cref="AtaSanitizeSubCommands" /> except <see cref="Status" />
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FreezeLockExt = 0x0020,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets the status of the sanitizing
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Status = 0x0000,
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI Command Set 2 (ACS-2) rev. 2
|
|
|
|
|
|
|
|
|
|
#region Commands defined on ATA/ATAPI Command Set 3 (ACS-3) rev. 5
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disables the <see cref="FreezeLockExt" /> command
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
AntiFreezeLockExt = 0x0040
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI Command Set 3 (ACS-3) rev. 5
|
|
|
|
|
}
|
|
|
|
|
#endregion ATA Sanitize SubCommands
|
|
|
|
|
|
|
|
|
|
#region ATA NCQ Queue Management SubCommands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// All known ATA NCQ QUEUE MANAGEMENT sub-commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
public enum AtaNcqQueueManagementSubcommands : byte
|
2015-10-19 04:39:39 +01:00
|
|
|
{
|
|
|
|
|
#region Commands defined on ATA/ATAPI Command Set 3 (ACS-3) rev. 5
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Aborts pending NCQ commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AbortNcqQueue = 0x00,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Controls how NCQ Streaming commands are processed by the device
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DeadlineHandling = 0x01,
|
|
|
|
|
#endregion Commands defined on ATA/ATAPI Command Set 3 (ACS-3) rev. 5
|
|
|
|
|
}
|
|
|
|
|
#endregion ATA NCQ Queue Management SubCommands
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// All known SASI commands
|
|
|
|
|
/// Commands 0x00 to 0x1F are 6-byte
|
|
|
|
|
/// Commands 0x20 to 0x3F are 10-byte
|
|
|
|
|
/// Commands 0x40 to 0x5F are 8-byte
|
|
|
|
|
/// Commands 0xA0 to 0xBF are 12-byte
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-19 20:33:03 +00:00
|
|
|
|
2015-10-19 04:39:39 +01:00
|
|
|
#region SASI Commands
|
2016-04-19 02:11:47 +01:00
|
|
|
public enum SasiCommands : byte
|
2015-10-19 04:39:39 +01:00
|
|
|
{
|
|
|
|
|
#region SASI Class 0 commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns zero status if requested unit is on and ready.
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
TestUnitReady = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the unit to a specific known state.
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RezeroUnit = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RequestSyndrome = 0x02,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns unit sense.
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RequestSense = 0x03,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Formats the entire media.
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FormatUnit = 0x04,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
CheckTrackFormat = 0x05,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FormatTrack = 0x06,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FormatBadTrack = 0x06,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads a block from the device.
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Read = 0x08,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
|
|
|
|
/// Unknown
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteProtectSector = 0x09,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes a block to the device.
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Write = 0x0A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Moves the device reading mechanism to the specified block.
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Seek = 0x0B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Found on a vendor source code
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
InitDriveCharacteristics = 0x0C,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
VerifyRestore = 0x0D,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
AssignAlternateDiskTrack = 0x0E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes a File Mark on the device.
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteFileMark = 0x0F,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reserves the device for use by the iniator.
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
ReserveUnitOld = 0x12,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets information about a device
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Inquiry = 0x12,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Release the device from the reservation.
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
ReleaseUnitOld = 0x13,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteProtectDrive = 0x14,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes and verifies blocks to the device.
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
WriteAndVerifyOld = 0x14,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReleaseWriteProtect = 0x15,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies blocks.
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
VerifyOld = 0x15,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadNoSeek = 0x16,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets the number of blocks in device.
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
ReadCapacityOld = 0x16,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reserves the device for use by the iniator.
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReserveUnit = 0x16,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Release the device from the reservation.
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReleaseUnit = 0x17,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
SearchDataEqualOld = 0x17,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks using major than or equal comparison
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
SearchDataHighOld = 0x18,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks using minor than or equal comparison
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
SearchDataLowOld = 0x19,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads analysis data from a device
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
ReadDiagnosticOld = 0x1A,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
VerifyData = 0x1B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a device to run a diagnostic
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
WriteDiagnosticOld = 0x1B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the data after completion of a <see cref="WriteDiagnostic" />
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDiagnostic = 0x1C,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to perform diagnostics
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteDiagnostic = 0x1D,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets information about a device
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
InquiryOld = 0x1F,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion SASI Class 0 commands
|
|
|
|
|
|
|
|
|
|
#region SASI Class 1 commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
|
|
|
|
/// Unknown
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Copy = 0x20,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
|
|
|
|
/// Unknown
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Restore = 0x21,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
|
|
|
|
/// Unknown
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Backup = 0x22,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
|
|
|
|
/// Unknown
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
SetBlockLimitsOlder = 0x26,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets write or read limits from a specified block
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
SetBlockLimitsOld = 0x28,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from device
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ExtendedAddressRead = 0x28,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ExtendedAddressWrite = 0x2A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device and then verifies them
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteAndVerify = 0x2E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies blocks on the device
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Verify = 0x2F,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SearchDataEqual = 0x31,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks using major than or equal comparison
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SearchDataHigh = 0x30,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks using minor than or equal comparison
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SearchDataLow = 0x32,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion SASI Class 1 commands
|
|
|
|
|
|
|
|
|
|
#region SASI Class 2 commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Load = 0x40,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Unload = 0x41,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Rewind = 0x42,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SpaceForward = 0x43,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SpaceForwardFileMark = 0x44,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:39:42 +01:00
|
|
|
SpaceReverse = 0x45,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:39:42 +01:00
|
|
|
SpaceReverseFileMark = 0x46,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
TrackSelect = 0x47,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from device
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:39:42 +01:00
|
|
|
Read8 = 0x48,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadVerify = 0x49,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDiagnosticClass2 = 0x4A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to device
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:39:42 +01:00
|
|
|
Write8 = 0x4B,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteFileMarkClass2 = 0x4C,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteExtended = 0x4D,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteExtendedFileMark = 0x4E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown
|
|
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteErase = 0x4F,
|
2015-10-23 21:39:42 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes and verifies blocks to the device.
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-23 21:39:42 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteVerify8 = 0x54,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies blocks.
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-23 21:39:42 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Verify8 = 0x55,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks using major than or equal comparison
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-23 21:39:42 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SearchDataHigh8 = 0x57,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-23 21:39:42 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SearchDataEqual8 = 0x58,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks using minor than or equal comparison
|
|
|
|
|
/// SASI rev. 0c
|
2015-10-23 21:39:42 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:51:25 +01:00
|
|
|
SearchDataLow8 = 0x59,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion SASI Class 2 commands
|
|
|
|
|
|
|
|
|
|
#region SASI Class 3 commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Skip = 0x60,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Space = 0x61,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Return = 0x62,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Tab = 0x63,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadControl = 0x64,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Write3 = 0x65,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteControl = 0x66,
|
|
|
|
|
#endregion SASI Class 3 commands
|
|
|
|
|
|
2015-10-24 00:03:54 +01:00
|
|
|
#region SASI Class 5 commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets the number of blocks in device.
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadCapacity = 0xA5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets write or read limits from a specified block
|
|
|
|
|
/// ANSI X3T9.3 No. 185 (SASI)
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetBlockLimits = 0xA9,
|
|
|
|
|
#endregion SASI Class 5 commands
|
|
|
|
|
|
2015-10-19 04:39:39 +01:00
|
|
|
#region SASI Class 6 commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:02:38 +01:00
|
|
|
DefineFloppyDiskTrackFormat = 0xC0,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown vendor command in X68000
|
2015-10-24 00:48:32 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Specify = 0xC2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FormatDriveErrorMap = 0xC4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadErrorMap = 0xC5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDriveType = 0xC6,
|
|
|
|
|
#endregion SASI Class 6 commands
|
|
|
|
|
|
|
|
|
|
#region SASI Class 7 commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RamDiagnostic = 0xE0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
WriteEcc = 0xE1,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
ReadId = 0xE2,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SASI rev. 0a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
DriveDiagnostic = 0xE3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Found on a vendor source code
|
2015-10-24 00:03:54 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ControllerDiagnostic = 0xE4,
|
2016-01-13 05:04:45 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Found on a vendor document
|
2016-01-13 05:04:45 +00:00
|
|
|
/// </summary>
|
|
|
|
|
ReadLong = 0xE5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Found on a vendor document
|
2016-01-13 05:04:45 +00:00
|
|
|
/// </summary>
|
|
|
|
|
WriteLong = 0xE6
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion SASI Class 7 commands
|
|
|
|
|
}
|
|
|
|
|
#endregion SASI Commands
|
|
|
|
|
|
|
|
|
|
#region SCSI Commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// All known SCSI and ATAPI commands
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum ScsiCommands : byte
|
|
|
|
|
{
|
|
|
|
|
#region SCSI Primary Commands (SPC)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Commands used to obtain information about the access controls that are active
|
|
|
|
|
/// SPC-4 rev. 16
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
AccessControlIn = 0x86,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Commands used to limit or grant access to LUNs
|
|
|
|
|
/// SPC-4 rev. 16
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
AccessControlOut = 0x87,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Modifies the operating definition of the device with respect to commmands.
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ChangeDefinition = 0x40,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Compares data between two devices
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Compare = 0x39,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Copies data between two devices
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Copy = 0x18,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Copies data between two devices and verifies the copy is correct.
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
CopyAndVerify = 0x3A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Copies data between two devices
|
|
|
|
|
/// SPC-2 rev. 20
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ExtendedCopy = 0x83,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests information about the device
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
Inquiry = SasiCommands.Inquiry,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Manages device statistics
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
LogSelect = 0x4C,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets device statistics
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
LogSense = 0x4D,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Retrieves management protocol information
|
|
|
|
|
/// SPC-2 rev. 20
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ManagementProtocolIn = 0xA3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfers management protocol information
|
|
|
|
|
/// SPC-2 rev. 20
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ManagementProtocolOut = 0xA4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets device parameters
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ModeSelect = 0x15,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets device parameters
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ModeSelect10 = 0x55,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets device parameters
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ModeSense = 0x1A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets device parameters
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ModeSense10 = 0x5A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Obtains information about persistent reservations and reservation keys
|
|
|
|
|
/// SPC-1 rev. 10
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PersistentReserveIn = 0x5E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reserves a LUN or an extent within a LUN for exclusive or shared use
|
|
|
|
|
/// SPC-1 rev. 10
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PersistentReserveOut = 0x5F,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to disable or enable the removal of the medium inside it
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PreventAllowMediumRemoval = 0x1E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads attribute values from medium auxiliary memory
|
|
|
|
|
/// SPC-3 rev. 21b
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadAttribute = 0x8C,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads the device buffer
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadBuffer = 0x3C,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads the media serial number
|
|
|
|
|
/// SPC-3 rev. 21b
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadSerialNumber = 0xAB,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Receives information about a previous or current <see cref="ExtendedCopy" />
|
|
|
|
|
/// SPC-2 rev. 20
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReceiveCopyResults = 0x84,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the data after completion of a <see cref="SendDiagnostic" />
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
ReceiveDiagnostic = SasiCommands.ReadDiagnostic,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Releases a previously reserved LUN or extents
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
Release = SasiCommands.ReleaseUnit,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Releases a previously reserved LUN or extents
|
|
|
|
|
/// SPC-1 rev. 10
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Release10 = 0x57,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the LUNs that are present on the device
|
|
|
|
|
/// SPC-1 rev. 10
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReportLuns = 0xA0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device's sense
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:51:25 +01:00
|
|
|
RequestSense = SasiCommands.RequestSense,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reserves a LUN or extent
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
Reserve = SasiCommands.ReserveUnit,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reserves a LUN or extent
|
|
|
|
|
/// SPC-1 rev. 10
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Reserve10 = 0x56,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Retrieves security protocol information
|
|
|
|
|
/// SPC-4 rev. 16
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SecurityProtocolIn = 0xA2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfers security protocol information
|
|
|
|
|
/// SPC-4 rev. 16
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SecurityProtocolOut = 0xB5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to perform diagnostics
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
SendDiagnostic = SasiCommands.WriteDiagnostic,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Extended commands
|
|
|
|
|
/// SPC-4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ServiceActionIn = 0x9E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Extended commands
|
|
|
|
|
/// SPC-4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ServiceActionOut = 0x9F,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Checks if a LUN is ready to access its medium
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:51:25 +01:00
|
|
|
TestUnitReady = SasiCommands.TestUnitReady,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes attribute values to medium auxiliary memory
|
|
|
|
|
/// SPC-3 rev. 21b
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2016-01-13 03:47:25 +00:00
|
|
|
WriteAttribute = 0x8D,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes to the device's buffer
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteBuffer = 0x3B,
|
|
|
|
|
#endregion SCSI Primary Commands (SPC)
|
|
|
|
|
|
|
|
|
|
#region SCSI Block Commands (SBC)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Compares blocks with sent data, and if equal, writes those block to device, atomically
|
|
|
|
|
/// SBC-3 rev. 25
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
CompareAndWrite = 0x89,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Formats the medium into addressable logical blocks
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:51:25 +01:00
|
|
|
FormatUnit = SasiCommands.FormatUnit,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Locks blocks from eviction of device's cache
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
LockUnlockCache = 0x36,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Locks blocks from eviction of device's cache
|
|
|
|
|
/// SBC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
LockUnlockCache16 = 0x92,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to perform the following uninterrupted series of actions:
|
|
|
|
|
/// 1.- Read the specified blocks
|
|
|
|
|
/// 2.- Transfer blocks from the data out buffer
|
|
|
|
|
/// 3.- Perform an OR operation between the read blocks and the buffer
|
|
|
|
|
/// 4.- Write the buffer to the blocks
|
|
|
|
|
/// SBC-3 rev. 16
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
OrWrite = 0x8B,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfers requested blocks to devices' cache
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PreFetch = 0x34,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfers requested blocks to devices' cache
|
|
|
|
|
/// SBC-3 rev. 16
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PreFetch16 = 0x90,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from device
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:51:25 +01:00
|
|
|
Read = SasiCommands.Read,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from device
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
Read10 = SasiCommands.ExtendedAddressRead,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from device
|
|
|
|
|
/// SBC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Read16 = 0x88,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets device capacity
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadCapacity = 0x25,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets device's defect data
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDefectData = 0x37,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from device in a vendor-specific way that should include the ECC alongside the data
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadLong = 0x3E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to reassign the defective blocks to another area of the medium
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReassignBlocks = 0x07,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the target write to the medium the XOR data generated from the specified source devices
|
|
|
|
|
/// SBC-1 rev. 8c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Rebuild = 0x81,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the target write to the buffer the XOR data from its own medium and the specified source devices
|
|
|
|
|
/// SBC-1 rev. 8c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Regenerate = 0x82,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to set the LUN in a vendor specific state
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:51:25 +01:00
|
|
|
RezeroUnit = SasiCommands.RezeroUnit,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
SearchDataEqual = SasiCommands.SearchDataEqual,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks using major than or equal comparison
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
SearchDataHigh = SasiCommands.SearchDataHigh,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks using minor than or equal comparison
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
SearchDataLow = SasiCommands.SearchDataLow,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to seek to a specified blocks
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:51:25 +01:00
|
|
|
Seek = SasiCommands.Seek,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to seek to a specified blocks
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Seek10 = 0x2B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Defines the range within which subsequent linked commands may operate
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetLimits = 0x33,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to enable or disable the LUN for media access operations
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
StartStopUnit = 0x1B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Ensures that the blocks in the cache are written to the medium
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SynchronizeCache = 0x35,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Ensures that the blocks in the cache are written to the medium
|
|
|
|
|
/// SBC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SynchronizeCache16 = 0x91,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unmaps one or more LBAs
|
|
|
|
|
/// In SSDs, this is trimming
|
|
|
|
|
/// SBC-3 rev. 25
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Unmap = 0x42,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies blocks on the device
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
Verify10 = SasiCommands.Verify,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies blocks on the device
|
|
|
|
|
/// SBC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Verify16 = 0x8F,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 21:51:25 +01:00
|
|
|
Write = SasiCommands.Write,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
Write10 = SasiCommands.ExtendedAddressWrite,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device
|
|
|
|
|
/// SBC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Write16 = 0x8A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device and then verifies them
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-24 00:03:54 +01:00
|
|
|
WriteAndVerify = SasiCommands.WriteAndVerify,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device and then verifies them
|
|
|
|
|
/// SBC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteAndVerify16 = 0x8E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device with a vendor specified format that shall include the ECC alongside the data
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteLong = 0x3F,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes a single block several times
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteSame = 0x41,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes a single block several times
|
|
|
|
|
/// SBC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteSame16 = 0x93,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requets XOR data generated by an <see cref="XdWrite" /> or <see cref="Regenerate" /> command
|
|
|
|
|
/// SBC-1 rev. 8c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
XdRead = 0x52,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// XORs the data sent with data on the medium and stores it until an <see cref="XdRead" /> is issued
|
|
|
|
|
/// SBC-1 rev. 8c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
XdWrite = 0x50,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// XORs the data sent with data on the medium and stores it until an <see cref="XdRead" /> is issued
|
|
|
|
|
/// SBC-1 rev. 8c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
XdWrite16 = 0x80,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requets the target to XOR the sent data with the data on the medium and return the results
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
XdWriteRead = 0x53,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the target to XOR the data transferred with the data on the medium and writes it to the medium
|
|
|
|
|
/// SBC-1 rev. 8c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
XpWrite = 0x51,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion SCSI Block Commands (SBC)
|
|
|
|
|
|
|
|
|
|
#region SCSI Streaming Commands (SSC)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Prepares the medium for use by the LUN
|
|
|
|
|
/// SSC-1 rev. 22
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FormatMedium = 0x04,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Erases part of all of the medium from the current position
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Erase = 0x19,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Enables or disables the LUN for further operations
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
LoadUnload = 0x1B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Positions the LUN to a specified block in a specified partition
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Locate = 0x2B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Positions the LUN to a specified block in a specified partition
|
|
|
|
|
/// SSC-2 rev. 09
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Locate16 = 0x92,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the block length limits capability
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadBlockLimits = 0x05,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads the current position
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadPosition = 0x34,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from the device, in reverse order
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadReverse = 0x0F,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Retrieves data from the device buffer that has not been successfully written to the medium (or printed)
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RecoverBufferedData = 0x14,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests information regarding the supported densities for the logical unit
|
|
|
|
|
/// SSC-1 rev. 22
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReportDensitySupport = 0x44,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Seeks the medium to the beginning of partition in current partition
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Rewind = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// A variety of positioning functions
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Space = 0x11,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// A variety of positioning functions
|
|
|
|
|
/// SSC-2 rev. 09
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Space16 = 0x91,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Selects the specified track
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-23 20:58:13 +01:00
|
|
|
/// </summary>
|
|
|
|
|
TrackSelect = 0x0B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies one or more blocks from the next one
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Verify = 0x13,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes the specified number of filemarks or setmarks in the current position
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteFileMarks = 0x10,
|
|
|
|
|
#endregion SCSI Streaming Commands (SSC)
|
|
|
|
|
|
|
|
|
|
#region SCSI Streaming Commands for Printers (SSC)
|
2015-10-23 20:58:13 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Assures that the data in the buffer has been printed, or, for other devices, written to media
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-23 20:58:13 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FlushBuffer = 0x10,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Specifies forms or fronts
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Format = 0x04,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfers data to be printed
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Print = 0x0A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfers data to be printed with a slew value
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SlewAndPrint = 0x0B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Halts printing
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
StopPrint = 0x1B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Assures that the data in the buffer has been printed, or, for other devices, written to media
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2015-10-23 20:58:13 +01:00
|
|
|
SynchronizeBuffer = FlushBuffer,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion SCSI Streaming Commands for Printers (SSC)
|
|
|
|
|
|
|
|
|
|
#region SCSI Processor Commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfers data from the device
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Receive = 0x08,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends data to the device
|
|
|
|
|
/// ECMA-111 (SCSI-1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Send = 0x0A,
|
|
|
|
|
#endregion SCSI Processor Commands
|
|
|
|
|
|
|
|
|
|
#region SCSI Multimedia Commands (MMC)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Erases any part of a CD-RW
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Blank = 0xA1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Closes a track or session
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
CloseTrackSession = 0x5B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets information about the overall capabilities of the device and the current capabilities of the device
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GetConfiguration = 0x46,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the LUN to report events and statuses
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GetEventStatusNotification = 0x4A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Provides a mehotd to profile the performance of the drive
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GetPerformance = 0xAC,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device changer to load or unload a disc
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
LoadUnloadCd = 0xA6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device changer to load or unload a disc
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
LoadUnloadMedium = 0xA6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests information about the current status of the CD device, including any changer mechanism
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
MechanicalStatus = 0xBD,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the device to start or stop an audio play operation
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PauseResume = 0x4B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Begins an audio playback
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PlayAudio = 0x45,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Begins an audio playback
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PlayAudio12 = 0xA5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Begins an audio playback using MSF addressing
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PlayAudioMsf = 0x47,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Begins an audio playback from the specified index of the specified track
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PlayAudioTrackIndex = 0x48,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Begins an audio playback from the position relative of a track
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PlayTrackRelative = 0x49,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Begins an audio playback from the position relative of a track
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PlayTrackRelative12 = 0xA9,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reports the total and blank area of the device buffer
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadBufferCapacity = 0x5C,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads a block from a CD with any of the requested CD data streams
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadCd = 0xBE,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads a block from a CD with any of the requested CD data streams using MSF addressing
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadCdMsf = 0xB9,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns the recorded size of the CD
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadCdRecordedCapacity = 0x25,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets informationn about all discs: CD-ROM, CD-R and CD-RW
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDiscInformation = 0x51,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads areas from the DVD or BD media
|
|
|
|
|
/// MMC-5 rev. 2c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDiscStructure = 0xAD,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads areas from the DVD media
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDvdStructure = 0xAD,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a list of the possible format capacities for an installed random-writable media
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadFormatCapacities = 0x23,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads the data block header of the specified CD-ROM block
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadHeader = 0x44,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads the mastering information from a Master CD.
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadMasterCue = 0x59,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the Q subchannel and the current audio playback status
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadSubChannel = 0x42,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the medium TOC, PMA or ATIP from the device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadTocPmaAtip = 0x43,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets information about a track regardless of its status
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadTrackInformation = 0x52,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Repairs an incomplete ECC block at the end of an RZone
|
|
|
|
|
/// Mt. Fuji ver. 7 rev. 1.21
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RepairRZone = 0x58,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Repairs an incomplete packet at the end of a packet writing track
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RepairTrack = 0x58,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the start of the authentication process and provides data necessary for authentication and for generating
|
|
|
|
|
/// a Bus Key
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReportKey = 0xA4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reserves disc space for a track
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReserveTrack = 0x53,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Fast-forwards or fast-reverses the audio playback to the specified block. Stops if it encounters a data track
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ScanMmc = 0xBA,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends a cue sheet for session-at-once recording
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendCueSheet = 0x5D,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfer a DVD or BD structure for media writing
|
|
|
|
|
/// MMC-5 rev. 2c
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendDiscStructure = 0xAD,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfer a DVD structure for media writing
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendDvdStructure = 0xAD,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the LUN to process an event
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendEvent = 0xA2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Provides data necessary for authentication and for generating a Bus Key
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendKey = 0xA3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Restores the Optimum Power Calibration values to the drive for a specific disc
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendOpcInformation = 0x54,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the spindle speed to be used while reading/writing data to a CD
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetCdRomSpeed = 0xBB,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the LUN to perform read ahead caching operations from the specified block
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetReadAhead = 0xA7,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Indicates the LUN to try to achieve a specified performance
|
|
|
|
|
/// MMC-2 rev. 11a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetStreaming = 0xB6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Stops a scan and continues audio playback from current scanning position
|
|
|
|
|
/// MMC-1 rev. 9
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
StopPlayScan = 0x4E,
|
|
|
|
|
#endregion SCSI Multimedia Commands (MMC)
|
|
|
|
|
|
|
|
|
|
#region SCSI Scanner Commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets information about the data buffer
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GetDataBufferStatus = 0x34,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets information about previously defined windows
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GetWindow = 0x25,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Provides positioning functions
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ObjectPosition = 0x31,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Begins a scan operation
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Scan = 0x1B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Specifies one or more windows within the device's scanning range
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetWindow = 0x24,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends data to the device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Send10 = 0x2A,
|
|
|
|
|
#endregion SCSI Scanner Commands
|
|
|
|
|
|
|
|
|
|
#region SCSI Block Commands for Optical Media (SBC)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Erases the specified number of blocks
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Erase10 = 0x2C,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Erases the specified number of blocks
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Erase12 = 0xAC,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches the medium for a contiguos set of written or blank blocks
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
MediumScan = 0x38,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Read12 = 0xA8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets medium's defect data
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDefectData12 = 0xB7,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets the maxium generation address for the specified block
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadGeneration = 0x29,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads a specified generation of a specified block
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadUpdatedBlock = 0x2D,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SearchDataEqual12 = 0xB1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks using major than or equal comparison
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SearchDataHigh12 = 0xB0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Searches data on blocks using minor than or equal comparison
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SearchDataLow12 = 0xB2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Defines the range within which subsequent linked commands may operate
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetLimits12 = 0xB3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Replaces a block with data
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
UpdateBlock = 0x3D,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies blocks on the device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Verify12 = 0xAF,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Write12 = 0xAA,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device and then verifies them
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteAndVerify12 = 0xAE,
|
|
|
|
|
#endregion SCSI Block Commands for Optical Media (SBC)
|
|
|
|
|
|
|
|
|
|
#region SCSI Medium Changer Commands (SMC)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Provides a means to exchange the medium in the source element with the medium at destination element
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ExchangeMedium = 0xA6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Checks all elements for medium and any other relevant status
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
InitializeElementStatus = 0x07,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Checks all elements for medium and any other relevant status in the specified range of elements
|
|
|
|
|
/// SMC-2 rev. 7
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
InitializeElementStatusWithRange = 0x37,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Moves a medium from an element to another
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
MoveMedium = 0xA5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Moves a medium that's currently attached to another element
|
|
|
|
|
/// SPC-1 rev. 10
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
MoveMediumAttached = 0xA7,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Provides a method to change the open/closed state of the specified import/export element
|
|
|
|
|
/// SMC-3 rev. 12
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
OpenCloseImportExportElement = 0x1B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Positions the transport element in front of the destination element
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PositionToElement = 0x2B,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the status of the elements
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadElementStatus = 0xB8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the status of the attached element
|
|
|
|
|
/// SPC-1 rev. 10
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadElementStatusAttached = 0xB4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Releases a reserved LUN
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReleaseElement = 0x17,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Releases a reserved LUN
|
|
|
|
|
/// SMC-1 rev. 10a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReleaseElement10 = 0x57,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests information regarding the supported volume types for the device
|
|
|
|
|
/// SMC-3 rev. 12
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReportVolumeTypesSupported = 0x44,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets the results of <see cref="SendVolumeTag" />
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RequestVolumeElementAddress = 0xB5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reserves a LUN
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReserveElement = 0x16,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reserves a LUN
|
|
|
|
|
/// SMC-1 rev. 10a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReserveElement10 = 0x56,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfers a volume tag template to be searched or new volume tag information for one or more elements
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendVolumeTag = 0xB6,
|
|
|
|
|
#endregion SCSI Medium Changer Commands (SMC)
|
|
|
|
|
|
|
|
|
|
#region SCSI Communication Commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets data from the device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GetMessage = 0x08,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets data from the device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GetMessage10 = 0x28,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets data from the device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GetMessage12 = 0xA8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends data to the device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendMessage = 0x0A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends data to the device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendMessage10 = 0x2A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends data to the device
|
|
|
|
|
/// SCSI-2 X3T9.2/375R rev. 10l
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendMessage12 = 0xAA,
|
|
|
|
|
#endregion SCSI Communication Commands
|
|
|
|
|
|
|
|
|
|
#region SCSI Controller Commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Commands that get information about redundancy groups
|
|
|
|
|
/// SCC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RedundancyGroupIn = 0xBA,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Commands that set information about redundancy groups
|
|
|
|
|
/// SCC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
RedundancyGroupOut = 0xBB,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Commands that get information about volume sets
|
|
|
|
|
/// SCC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
VolumeSetIn = 0xBE,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Commands that set information about volume sets
|
|
|
|
|
/// SCC-2 rev. 4
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
VolumeSetOut = 0xBF,
|
|
|
|
|
#endregion SCSI Controller Commands
|
|
|
|
|
|
|
|
|
|
#region Pioneer CD-ROM SCSI-2 Command Set
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Scans for a block playing a block on each track cross
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
AudioScan = 0xCD,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the drive the status from the previous WriteCDP command.
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
ReadCdp = 0xE4,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests status from the drive
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadDriveStatus = 0xE0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads CD-DA data and/or subcode data
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadCdDa = 0xD8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads CD-DA data and/or subcode data using MSF addressing
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadCdDaMsf = 0xD9,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads CD-XA data
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadCdXa = 0xDB,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads all subcode data
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadAllSubCode = 0xDF,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the spindle speed to be used while reading/writing data to a CD
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetCdSpeed = 0xDA,
|
2018-06-22 08:08:38 +01:00
|
|
|
WriteCdp = 0xE3,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region ATA Command Pass-Through
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends a 24-bit ATA command to the device
|
|
|
|
|
/// Clashes with <see cref="Blank" />
|
|
|
|
|
/// ATA CPT rev. 8a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
AtaPassThrough = 0xA1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends a 48-bit ATA command to the device
|
|
|
|
|
/// ATA CPT rev. 8a
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
AtaPassThrough16 = 0x85,
|
|
|
|
|
#endregion ATA Command Pass-Through
|
|
|
|
|
|
|
|
|
|
#region 6-byte CDB aliases
|
|
|
|
|
ModeSelect6 = ModeSelect,
|
2018-01-21 21:56:09 +00:00
|
|
|
ModeSense6 = ModeSense,
|
|
|
|
|
Read6 = Read,
|
|
|
|
|
Seek6 = Seek,
|
|
|
|
|
Write6 = Write,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion 6-byte CDB aliases
|
|
|
|
|
|
|
|
|
|
#region SCSI Zoned Block Commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// ZBC commands with host->device information
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ZbcOut = 0x94,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// ZBC commands with device->host information
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ZbcIn = 0x95,
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region SCSI Commands with unknown meaning, mostly vendor specific
|
2018-01-21 21:56:09 +00:00
|
|
|
SetCdSpeedUnk = 0xB8,
|
|
|
|
|
WriteCdMsf = 0xA2,
|
|
|
|
|
WriteCd = 0xAA,
|
|
|
|
|
ReadDefectTag = 0xB7,
|
|
|
|
|
PlayCd = 0xBC,
|
|
|
|
|
SpareIn = 0xBC,
|
|
|
|
|
SpareOut = 0xBD,
|
|
|
|
|
WriteStream16 = 0x9A,
|
|
|
|
|
WriteAtomic = 0x9C,
|
2015-10-19 04:39:39 +01:00
|
|
|
ServiceActionBidirectional = 0x9D,
|
2018-01-21 21:56:09 +00:00
|
|
|
WriteLong2 = 0xEA,
|
|
|
|
|
UnknownCdCommand = 0xD4,
|
|
|
|
|
UnknownCdCommand2 = 0xD5,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion SCSI Commands with unknown meaning, mostly vendor specific
|
|
|
|
|
|
|
|
|
|
#region SEGA Packet Interface (all are 12-byte CDB)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Verifies that the device can be accessed
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaTestUnit = TestUnitReady,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets current CD status
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaRequestStatus = 0x10,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets CD block mode info
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaRequestMode = 0x11,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets CD block mode
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaSetMode = 0x12,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests device error info
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaRequestError = 0x13,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets disc TOC
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaGetToc = 0x14,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets specified session data
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaRequestSession = 0x15,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Stops the drive and opens the drive tray, or, on manual trays, stays busy until it is opened
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaOpenTray = 0x16,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Starts audio playback
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaPlayCd = 0x20,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Moves drive pickup to specified block
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaSeek = 0x21,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Fast-forwards or fast-reverses until Lead-In or Lead-Out arrive, or until another command is issued
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaScan = 0x22,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from the disc
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaRead = 0x30,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from the disc seeking to another position at end
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaRead2 = 0x31,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads disc subcode
|
|
|
|
|
/// Sega SPI ver. 1.30
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SegaGetSubcode = 0x40,
|
2015-10-19 04:39:39 +01:00
|
|
|
#endregion SEGA Packet Interface (all are 12-byte CDB)
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Variable sized Command Description Block
|
|
|
|
|
/// SPC-4 rev. 16
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
VariableSizedCdb = 0x7F,
|
2015-11-05 06:50:02 +00:00
|
|
|
|
|
|
|
|
#region Plextor vendor commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends extended commands (like SpeedRead) to Plextor drives
|
2015-11-05 06:50:02 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
PlextorExtend = 0xE9,
|
2015-11-05 06:50:02 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Command for Plextor PoweRec
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
PlextorPoweRec = 0xEB,
|
2016-01-11 19:24:17 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends extended commands (like PoweRec) to Plextor drives
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
PlextorExtend2 = 0xED,
|
2016-01-11 19:24:17 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Resets Plextor drives
|
2015-11-05 06:50:02 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
PlextorReset = 0xEE,
|
2015-11-05 06:50:02 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads drive statistics from Plextor drives EEPROM
|
2015-11-05 06:50:02 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
PlextorReadEeprom = 0xF1,
|
2015-11-05 06:50:02 +00:00
|
|
|
#endregion Plextor vendor commands
|
|
|
|
|
|
|
|
|
|
#region HL-DT-ST vendor commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends debugging commands to HL-DT-ST DVD drives
|
2015-11-05 06:50:02 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
HlDtStVendor = 0xE7,
|
2015-11-05 06:50:02 +00:00
|
|
|
#endregion HL-DT-ST vendor commands
|
2015-12-26 19:02:31 +00:00
|
|
|
|
|
|
|
|
#region NEC vendor commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads CD-DA data
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
NecReadCdDa = 0xD4,
|
2015-12-26 19:02:31 +00:00
|
|
|
#endregion NEC vendor commands
|
2016-01-13 05:04:45 +00:00
|
|
|
|
|
|
|
|
#region Adaptec vendor commands
|
2016-01-13 05:57:35 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Translates a SCSI LBA to a drive's CHS
|
2016-01-13 05:57:35 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AdaptecTranslate = 0x0F,
|
2016-01-13 05:57:35 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Configures Adaptec controller error threshold
|
2016-01-13 05:57:35 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AdaptecSetErrorThreshold = 0x10,
|
2016-01-13 05:57:35 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads and resets error and statistical counters
|
2016-01-13 05:57:35 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AdaptecReadCounters = 0x11,
|
2016-01-13 05:57:35 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes to controller's RAM
|
2016-01-13 05:57:35 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AdaptecWriteBuffer = 0x13,
|
2016-01-13 05:57:35 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads controller's RAM
|
2016-01-13 05:57:35 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AdaptecReadBuffer = 0x14,
|
2016-01-13 05:04:45 +00:00
|
|
|
#endregion Adaptec vendor commands
|
2016-01-13 05:57:35 +00:00
|
|
|
|
|
|
|
|
#region Archive Corp. vendor commands
|
2016-01-13 19:59:44 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets current position's block address
|
2016-01-13 19:59:44 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
ArchiveRequestBlockAddress = 0x02,
|
2016-01-13 19:59:44 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Seeks to specified block address
|
2016-01-13 19:59:44 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
ArchiveSeekBlock = 0x0C,
|
2016-01-13 05:57:35 +00:00
|
|
|
#endregion Archive Corp. vendor commands
|
2016-01-13 19:59:44 +00:00
|
|
|
|
|
|
|
|
#region Certance vendor commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Parks the load arm in preparation for transport
|
2016-01-13 19:59:44 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
CertanceParkUnpark = 0x06,
|
2016-01-13 19:59:44 +00:00
|
|
|
#endregion Certance vendor commands
|
|
|
|
|
|
|
|
|
|
#region Fujitsu vendor commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Used to check the controller's data and control path
|
2016-01-13 19:59:44 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
FujitsuLoopWriteToRead = 0xC1,
|
2016-01-13 19:59:44 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Used to display a message on the operator panel
|
2016-01-13 19:59:44 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
FujitsuDisplay = 0xCF,
|
2016-01-13 19:59:44 +00:00
|
|
|
#endregion Fujitsu vendor commands
|
2016-01-13 21:14:23 +00:00
|
|
|
|
|
|
|
|
#region M-Systems vendor commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Securely erases all flash blocks, including defective, spared and unused
|
2016-01-13 21:14:23 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
MSystemsSecurityErase = 0xFF,
|
2016-01-13 21:14:23 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Securely erases all flash blocks, including defective, spared and unused
|
2016-01-13 21:14:23 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
MSystemsSecurityEraseOld = 0xDF,
|
2016-01-13 21:14:23 +00:00
|
|
|
#endregion M-Systems vendor commands
|
2016-01-14 02:46:36 +00:00
|
|
|
|
|
|
|
|
#region Plasmon vendor commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Retrieves sector address
|
2016-01-14 02:46:36 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
PlasmonReadSectorLocation = 0xE6,
|
2016-01-14 02:46:36 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Makes a Compliant WORM block completely unreadable
|
2016-01-14 02:46:36 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
PlasmonShred = 0xEE,
|
2016-01-14 02:46:36 +00:00
|
|
|
#endregion Plasmon vendor commands
|
2017-05-23 18:45:09 +01:00
|
|
|
|
|
|
|
|
#region Kreon vendor commands
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Most Kreon commands start with this
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
KreonCommand = 0xFF,
|
2017-05-23 18:45:09 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Kreon extract Security Sectors command start with this
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
KreonSsCommand = 0xAD
|
2017-05-23 18:45:09 +01:00
|
|
|
#endregion Kreon vendor commands
|
2015-10-19 04:39:39 +01:00
|
|
|
}
|
|
|
|
|
#endregion SCSI Commands
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SCSI command transfer direction
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum ScsiDirection
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// No data transfer happens
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
None,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// From host to device
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Out,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// From device to host
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
In,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Bidirectional device/host
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Bidirectional,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unspecified
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Unspecified
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region SCSI's ATA Command Pass-Through
|
|
|
|
|
public enum AtaProtocol : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a device hard reset (pin 1)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
HardReset = 0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a device soft reset (COMRESET issue)
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SoftReset = 1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// No data is to be transfered
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
NonData = 3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a device->host transfer using PIO
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PioIn = 4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a host->device transfer using PIO
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
PioOut = 5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a DMA transfer
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Dma = 6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests to queue a DMA transfer
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DmaQueued = 7,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests device diagnostics
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DeviceDiagnostic = 8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requets device reset
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
DeviceReset = 9,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a device->host transfer using UltraDMA
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
UDmaIn = 10,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests a host->device transfer using UltraDMA
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
UDmaOut = 11,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unknown Serial ATA
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
FpDma = 12,
|
2015-10-19 04:39:39 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests the Extended ATA Status Return Descriptor
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReturnResponse = 15
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Indicates the STL which ATA register contains the length of data to
|
|
|
|
|
/// be transfered
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum AtaTransferRegister : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// There is no transfer
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
NoTransfer = 0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// FEATURE register contains the data length
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Feature = 1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SECTOR_COUNT register contains the data length
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SectorCount = 2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The STPSIU contains the data length
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Sptsiu = 3
|
2015-10-19 04:39:39 +01:00
|
|
|
}
|
|
|
|
|
#endregion SCSI's ATA Command Pass-Through
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// ZBC sub-commands, mask 0x1F
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
public enum ZbcSubCommands : byte
|
2015-10-19 04:39:39 +01:00
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns list with zones of specified types
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReportZones = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Closes a zone
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
CloseZone = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Finishes a zone
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
FinishZone = 0x02,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Opens a zone
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
OpenZone = 0x03,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Resets zone's write pointer to zone start
|
2015-10-19 04:39:39 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ResetWritePointer = 0x04
|
2015-10-05 21:20:25 +01:00
|
|
|
}
|
2015-10-24 04:13:55 +01:00
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// MODE SENSE page control, mask 0xC0
|
2015-10-24 04:13:55 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum ScsiModeSensePageControl : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Current values
|
2015-10-24 04:13:55 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Current = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Changeable values
|
2015-10-24 04:13:55 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Changeable = 0x40,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Default values
|
2015-10-24 04:13:55 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Default = 0x80,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Saved values
|
2015-10-24 04:13:55 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Saved = 0xC0
|
|
|
|
|
}
|
2015-10-24 04:46:11 +01:00
|
|
|
|
|
|
|
|
public enum ScsiPreventAllowMode : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Allows medium removal from data transport and from medium changer
|
2015-10-24 04:46:11 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Allow = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Prevents medium removal from data transport but allows it from medium changer
|
2015-10-24 04:46:11 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Prevent = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Allows medium removal from data transport but prevents it from medium changer
|
2015-10-24 04:46:11 +01:00
|
|
|
/// </summary>
|
2017-12-21 16:28:27 +00:00
|
|
|
PreventChanger = 0x02,
|
2015-10-24 04:46:11 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Prevents medium removal from both data transport and medium changer
|
2015-10-24 04:46:11 +01:00
|
|
|
/// </summary>
|
2017-12-21 16:28:27 +00:00
|
|
|
PreventAll = 0x03
|
2015-10-24 04:46:11 +01:00
|
|
|
}
|
2015-11-01 20:06:24 +00:00
|
|
|
|
|
|
|
|
public enum MmcGetConfigurationRt : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive shall return the Feature Header and all Feature Descriptors
|
2015-11-01 20:06:24 +00:00
|
|
|
/// </summary>
|
|
|
|
|
All = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive shall return the Feature Header and current Feature Descriptors
|
2015-11-01 20:06:24 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Current = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive shall return only the Feature Header with the chosen Feature Descriptor
|
2015-11-01 20:06:24 +00:00
|
|
|
/// </summary>
|
2018-06-22 08:08:38 +01:00
|
|
|
Single = 0x02,
|
2015-11-01 20:06:24 +00:00
|
|
|
Reserved = 0x03
|
|
|
|
|
}
|
2015-11-02 19:12:19 +00:00
|
|
|
|
|
|
|
|
public enum MmcDiscStructureMediaType : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disc Structures for DVD and HD DVD
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Dvd = 0x00,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disc Structures for BD
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Bd = 0x01
|
2015-11-02 19:12:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum MmcDiscStructureFormat : byte
|
|
|
|
|
{
|
|
|
|
|
// Generic Format Codes
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// AACS Volume Identifier
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AacsVolId = 0x80,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// AACS Pre-recorded Media Serial Number
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AacsMediaSerial = 0x81,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// AACS Media Identifier
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AacsMediaId = 0x82,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// AACS Lead-in Media Key Block
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Aacsmkb = 0x83,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// AACS Data Keys
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AacsDataKeys = 0x84,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// AACS LBA extents
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AacslbaExtents = 0x85,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// CPRM Media Key Block specified by AACS
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Aacsmkbcprm = 0x86,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Recognized format layers
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
RecognizedFormatLayers = 0x90,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Write protection status
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
WriteProtectionStatus = 0xC0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// READ/SEND DISC STRUCTURE capability list
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
CapabilityList = 0xFF,
|
2016-04-19 02:11:47 +01:00
|
|
|
|
2015-11-02 19:12:19 +00:00
|
|
|
// DVD Disc Structures
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD Lead-in Physical Information
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
PhysicalInformation = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD Lead-in Copyright Information
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
CopyrightInformation = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// CSS/CPPM Disc key
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
DiscKey = 0x02,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD Burst Cutting Area
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
BurstCuttingArea = 0x03,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD Lead-in Disc Manufacturing Information
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
DiscManufacturingInformation = 0x04,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD Copyright Information from specified sector
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
SectorCopyrightInformation = 0x05,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// CSS/CPPM Media Identifier
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
MediaIdentifier = 0x06,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// CSS/CPPM Media Key Block
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
MediaKeyBlock = 0x07,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DDS from DVD-RAM
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
DvdramDds = 0x08,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-RAM Medium Status
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
DvdramMediumStatus = 0x09,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-RAM Spare Area Information
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
DvdramSpareAreaInformation = 0x0A,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-RAM Recording Type Information
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
DvdramRecordingType = 0x0B,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-R/-RW RMD in last Border-out
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
LastBorderOutRmd = 0x0C,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Specified RMD from last recorded Border-out
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SpecifiedRmd = 0x0D,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-R/-RW Lead-in pre-recorded information
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
PreRecordedInfo = 0x0E,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-R/-RW Media Identifier
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
DvdrMediaIdentifier = 0x0F,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-R/-RW Physical Format Information
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
DvdrPhysicalInformation = 0x10,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// ADIP
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Adip = 0x11,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// HD DVD Lead-in Copyright Protection Information
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
HddvdCopyrightInformation = 0x12,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// AACS Lead-in Copyright Data Section
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
DvdAacs = 0x15,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// HD DVD-R Medium Status
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
HddvdrMediumStatus = 0x19,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// HD DVD-R Last recorded RMD in the latest RMZ
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
HddvdrLastRmd = 0x1A,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD+/-R DL and DVD-Download DL layer capacity
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
DvdrLayerCapacity = 0x20,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-R DL Middle Zone start address
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
MiddleZoneStart = 0x21,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-R DL Jump Interval Size
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
JumpIntervalSize = 0x22,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-R DL Start LBA of the manual layer jump
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
ManualLayerJumpStartLba = 0x23,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// DVD-R DL Remapping information of the specified Anchor Point
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
RemapAnchorPoint = 0x24,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Disc Control Block
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Dcb = 0x30,
|
2015-11-02 19:12:19 +00:00
|
|
|
|
|
|
|
|
// BD Disc Structures
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Blu-ray Disc Information
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
DiscInformation = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Blu-ray Burst Cutting Area
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
BdBurstCuttingArea = 0x03,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Blu-ray DDS
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
BdDds = 0x08,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Blu-ray Cartridge Status
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
|
|
|
|
CartridgeStatus = 0x09,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Blu-ray Spare Area Information
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
BdSpareAreaInformation = 0x0A,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Unmodified DFL
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
RawDfl = 0x12,
|
2015-11-02 19:12:19 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Physical Access Control
|
2015-11-02 19:12:19 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Pac = 0x30
|
2015-11-02 19:12:19 +00:00
|
|
|
}
|
2015-11-23 05:52:45 +00:00
|
|
|
|
|
|
|
|
public enum ScsiServiceActions : byte
|
|
|
|
|
{
|
|
|
|
|
// SERVICE ACTION IN
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests parameter data describing provisioning status for the specified LBA
|
|
|
|
|
/// SBC-3 rev. 25
|
2015-11-23 05:52:45 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
GetLbaStatus = 0x12,
|
2015-11-23 05:52:45 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets device capacity
|
|
|
|
|
/// SBC-2 rev. 4
|
2015-11-23 05:52:45 +00:00
|
|
|
/// </summary>
|
|
|
|
|
ReadCapacity16 = 0x10,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads blocks from device in a vendor-specific way that should include the ECC alongside the data
|
|
|
|
|
/// SBC-2 rev. 4
|
2015-11-23 05:52:45 +00:00
|
|
|
/// </summary>
|
|
|
|
|
ReadLong16 = 0x11,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Requests information indicating the user data segments on the ports and LUNs to access them
|
|
|
|
|
/// SBC-3 rev. 25
|
2015-11-23 05:52:45 +00:00
|
|
|
/// </summary>
|
|
|
|
|
ReportReferrals = 0x13,
|
|
|
|
|
|
|
|
|
|
// SERVICE ACTION OUT
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes blocks to the device with a vendor specified format that shall include the ECC alongside the data
|
|
|
|
|
/// SBC-2 rev. 4
|
2015-11-23 05:52:45 +00:00
|
|
|
/// </summary>
|
|
|
|
|
WriteLong16 = ReadLong16
|
|
|
|
|
}
|
2015-11-23 17:10:59 +00:00
|
|
|
|
|
|
|
|
public enum MmcDiscInformationDataTypes : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Standard Disc Information
|
2015-11-23 17:10:59 +00:00
|
|
|
/// </summary>
|
|
|
|
|
DiscInformation = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Track Resources Information
|
2015-11-23 17:10:59 +00:00
|
|
|
/// </summary>
|
|
|
|
|
TrackResources = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// POW Resources Information
|
2015-11-23 17:10:59 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
PowResources = 0x02
|
2015-11-23 17:10:59 +00:00
|
|
|
}
|
2015-12-26 19:02:31 +00:00
|
|
|
|
|
|
|
|
public enum MmcSectorTypes : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// No checking of data type is performed
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
AllTypes = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Only CD-DA sectors shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Cdda = 0x01,
|
2015-12-26 19:02:31 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Only Mode 1 sectors shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Mode1 = 0x02,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Only Mode 2 formless sectors shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Mode2 = 0x03,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Only Mode 2 Form 1 sectors shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Mode2Form1 = 0x04,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Only Mode 2 Form 2 sectors shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Mode2Form2 = 0x05
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum MmcHeaderCodes : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// No header information shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
None = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Only the four byte header shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
HeaderOnly = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Only the mode 2 form x subheader shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
SubHeaderOnly = 0x02,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Return both header and subheader
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
AllHeaders = 0x03
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum MmcErrorField : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// No error information is returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
None = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The C2 pointer bits will be included
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
C2Pointers = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The C2 pointer bits will be included as well as the block error byte with a padding byte
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
C2PointersAndBlock = 0x02
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum MmcSubchannel : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// No subchannel shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
None = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The raw P to W subchannel data shall be transferred
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Raw = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Q data shall be transferred
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Q16 = 0x02,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// De-interleaved and error-corrected R to W subchannel data shall be transferred
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
Rw = 0x04
|
2015-12-26 19:02:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum PioneerSubchannel : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// No subchannel shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
None = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Q data shall be transferred
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Q16 = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The raw P to W subchannel data shall be transferred
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
All = 0x02,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The raw P to W subchannel data shall be transferred WITHOUT user data
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Only = 0x03
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum PlextorSubchannel : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// No subchannel shall be returned
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
None = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Q data shall be transferred
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Q16 = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The packed and corrected P to W subchannel data shall be transferred
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Pack = 0x02,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The raw P to W subchannel data shall be transferred
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
All = 0x03,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The raw P to W subchannel data, plus C2 error data shall be transferred
|
2015-12-26 19:02:31 +00:00
|
|
|
/// </summary>
|
|
|
|
|
RawC2 = 0x08
|
|
|
|
|
}
|
2016-01-11 19:24:17 +00:00
|
|
|
|
|
|
|
|
public enum PlextorSubCommands : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Gets Plextor mode
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
GetMode = 0x00,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets Plextor mode
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
SetMode = 0x10,
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Plextor force single session or hide CD-R
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
SessionHide = 0x01,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Plextor VariRec
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
VariRec = 0x02,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Plextor GigaRec
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
GigaRec = 0x04,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Plextor accoustic management (disc related)
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
SilentDisc = 0x06,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Plextor accoustic management (tra related)
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
SilentTray = 0x07,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Plextor accoustic management
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Silent = 0x08,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Plextor test write DVD+
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
TestWriteDvdPlus = 0x21,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Plextor book setting
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
BitSet = 0x22,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Plextor SecuRec
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
SecuRec = 0xD5,
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Book setting for DVD+R
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
BitSetR = 0x0A,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Book setting for DVD+R DL
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
BitSetRdl = 0x0E,
|
2016-01-11 19:24:17 +00:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Plextor SpeedRead
|
2016-01-11 19:24:17 +00:00
|
|
|
/// </summary>
|
|
|
|
|
SpeedRead = 0xBB
|
|
|
|
|
}
|
2016-01-13 03:47:25 +00:00
|
|
|
|
|
|
|
|
public enum SscLogicalIdTypes : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Logical object identifier
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
ObjectId = 0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Logical file identifier
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
FileId = 1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Logical set identifier
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
SetId = 2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reserved
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Reserved = 3
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum SscPositionForms : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// 20 bytes using logical block addresses
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Short = 0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// 20 bytes using vendor-specified values
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
VendorShort = 1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Equivalent to <see cref="Long" /> on SSC-1
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
OldLong = 2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Invalid: Equivalent to LONG + BT on SSC-1
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
OldLongVendor = 3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Invalid: Equivalent to TCLP on SSC-1
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
OldTclp = 4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Invalid: Equivalent to TCLP + BT on SSC-1
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
OldTclpVendor = 5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// 32 bytes
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Long = 6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Invalid: Equivalent to TCLP + LONG + BT on SSC-1
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
OldLongTclpVendor = 7,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// From 28 bytes to allocation length
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Extended = 8
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum ScsiAttributeAction : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Return attribute values
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Values = 0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Return a list of available attributes
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
List = 1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns a list of known logical volume numbers
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
VolumeList = 2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns a list of known partition numbers
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
PartitionList = 3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns a list of elements containing volumes with MAM
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
ElementList = 4,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Returns a list of supported attribute identifiers
|
2016-01-13 03:47:25 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Supported = 5
|
|
|
|
|
}
|
2016-01-13 19:59:44 +00:00
|
|
|
|
|
|
|
|
public enum FujitsuDisplayModes : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Message is displayed until next tape operation starts
|
2016-01-13 19:59:44 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Idle = 0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Message is displayed only if a cartridge is inserted, until its removal
|
2016-01-13 19:59:44 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Cart = 1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Message is only displayed when drive is ready
|
2016-01-13 19:59:44 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Ready = 2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Cancels current display
|
2016-01-13 19:59:44 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Cancel = 3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Message is displayed only if a cartridge is inserted. When removed, only second half of the message is displayed.
|
2016-01-13 19:59:44 +00:00
|
|
|
/// </summary>
|
|
|
|
|
Half = 7
|
|
|
|
|
}
|
2016-10-12 06:16:41 +01:00
|
|
|
|
|
|
|
|
// TODO: Check obsoletes
|
|
|
|
|
public enum SscSpaceCodes : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Logical blocks
|
2016-10-12 06:16:41 +01:00
|
|
|
/// </summary>
|
|
|
|
|
LogicalBlock = 0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Filemarks
|
2016-10-12 06:16:41 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Filemark = 1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sequential filemarks
|
2016-10-12 06:16:41 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SequentialFilemark = 2,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// End-of-data
|
2016-10-12 06:16:41 +01:00
|
|
|
/// </summary>
|
|
|
|
|
EndOfData = 3,
|
|
|
|
|
Obsolete1 = 4,
|
|
|
|
|
Obsolete2 = 5
|
|
|
|
|
}
|
2016-10-22 22:58:01 +01:00
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// MMC / SecureDigital commands
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum MmcCommands : byte
|
|
|
|
|
{
|
|
|
|
|
#region Class 1 MMC Commands (Basic and read-stream)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Resets device to idle (BC)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GoIdle = 0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Resets the device to pre-idle (BC)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GoPreIdleState = 0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Initiate alternative boot operation
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
BootInitiation = 0,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Asks device in idle state to send their operation conditions in response (BCR, R3)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendOpCond = 1,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Asks device to send their CID numbers (BCR, R2)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
AllSendCid = 2,
|
2016-10-22 22:58:01 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Assigns a relative address to the device (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetRelativeAddress = 3,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Programs the DSR of the device (BC)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SetDsr = 4,
|
2016-10-22 22:58:01 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Toggles the device between sleep and standby (AC, R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SleepAwake = 5,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Switches device mode of operation (AC, R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Switch = 6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Toggles a device between the stand-by and transfer stats or between the programming and disconnect states (AC, R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SelectCard = 7,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Asks device to send its extended card-specific data (ExtCSD) (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SendExtCsd = 8,
|
2016-10-22 22:58:01 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Asks device to send its card-specific data (CSD) (AC, R2)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SendCsd = 9,
|
2016-10-22 22:58:01 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Asks device to send its card identification (CID) (AC, R2)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SendCid = 10,
|
2016-10-22 22:58:01 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads data stream from device, starting at given address, until a <see cref="StopTransmission" /> follows (ADTC,
|
|
|
|
|
/// R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-19 20:33:03 +00:00
|
|
|
[Obsolete] ReadDatUntilStop = 11,
|
2016-10-22 22:58:01 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Terminates a read/write stream/multiple block operation (AC, R1 / R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
StopTransmission = 12,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Asks device to send its status register (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendStatus = 13,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The host reads the reversed bus testing data pattern from a device (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
BusTestRead = 14,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the card to inactive state (AC)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GoInactiveState = 15,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// The host sends the bus testing data pattern to a device (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
BusTestWrite = 19,
|
2018-06-22 08:08:38 +01:00
|
|
|
SpiReadOcr = 58,
|
|
|
|
|
SpicrcOnOff = 59,
|
2016-10-22 22:58:01 +01:00
|
|
|
#endregion Class 1 MMC Commands (Basic and read-stream)
|
|
|
|
|
|
|
|
|
|
#region Class 2 MMC Commands (Block-oriented read)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the block length in bytes (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetBlocklen = 16,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads a block (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadSingleBlock = 17,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfers data blocks from card to host until interrupted (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadMultipleBlock = 18,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// 128 blocks of tuning pattern is sent for HS200 optimal sampling point detection (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
SendTuningBlockHs200 = 21,
|
2016-10-22 22:58:01 +01:00
|
|
|
#endregion Class 2 MMC Commands (Block-oriented read)
|
|
|
|
|
|
|
|
|
|
#region Class 3 MMC Commands (Stream write)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes data stream from host until a <see cref="StopTransmission" /> follows (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-19 20:33:03 +00:00
|
|
|
[Obsolete] WriteDatUntilStop = 20,
|
2016-10-22 22:58:01 +01:00
|
|
|
#endregion Class 3 MMC Commands (Stream write)
|
|
|
|
|
|
|
|
|
|
#region Class 4 MMC Commands (Block-oriented write)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Defines the number of blocks which are going to be transferred in the immediately succeeding multiple block command
|
|
|
|
|
/// (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetBlockCount = 23,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes a block (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteBlock = 24,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Continuosly writes blocks until interrupted (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteMultipleBlock = 25,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Programs the Card Information register (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
ProgramCid = 26,
|
2016-10-22 22:58:01 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Programs the programmable bits of the CSD (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
ProgramCsd = 27,
|
2016-10-22 22:58:01 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the real time clock according to information in block (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetTime = 49,
|
|
|
|
|
#endregion Class 4 MMC Commands (Block-oriented write)
|
|
|
|
|
|
|
|
|
|
#region Class 5 MMC Commands (Erase)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the address of the first erase group (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
EraseGroupStart = 35,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the address of the last erase group (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
EraseGroupEnd = 36,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Erases previously selected write blocks (AC, R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Erase = 38,
|
|
|
|
|
#endregion Class 5 MMC Commands (Erase)
|
|
|
|
|
|
|
|
|
|
#region Class 6 MMC Commands (Block-oriented write protection)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the write protection bit (AC, R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetWriteProtect = 28,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Clears the write protection bit (AC, R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ClearWriteProtect = 29,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Asks the device to send the status of the write protection bit (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendWriteProtect = 30,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends the type of write protection that is set for the different write protection groups (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SentWriteProtectType = 31,
|
|
|
|
|
#endregion Class 6 MMC Commands (Block-oriented write protection)
|
|
|
|
|
|
|
|
|
|
#region Class 7 MMC Commands (Lock)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Used to set/reset the password or lock/unlock the card (ADTC, R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
LockUnlock = 42,
|
|
|
|
|
#endregion Class 7 MMC Commands (Lock)
|
|
|
|
|
|
|
|
|
|
#region Class 8 MMC Commands (Application-specific)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Indicates the card that the next command is an application specific command (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ApplicationCommand = 55,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Transfers a data block to/from the card for general purpose / application specific commands (ADTC, R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
GenericCommand = 56,
|
|
|
|
|
#endregion Class 8 MMC Commands (Application-specific)
|
|
|
|
|
|
|
|
|
|
#region Class 9 MMC Commands (I/O mode)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Used to write and read 8 bit data field, used to access application dependent registers not defined in MMC standard
|
|
|
|
|
/// (AC, R4)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
FastIo = 39,
|
2016-10-22 22:58:01 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sets the system into interrupt mode (BCR, R5)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
GoIrqState = 40,
|
2016-10-22 22:58:01 +01:00
|
|
|
#endregion Class 9 MMC Commands (I/O mode)
|
|
|
|
|
|
|
|
|
|
#region Class 10 MMC Commands (Security Protocols)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads data blocks (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ProtocolRead = 53,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Writes data blocks (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ProtocolWrite = 54,
|
|
|
|
|
#endregion Class 10 MMC Commands (Security Protocols)
|
|
|
|
|
|
|
|
|
|
#region Class 11 MMC Commands (Command Queue)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Defines data direction, priority, task ID and block count of queued task (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
QueuedTaskParameters = 44,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Defines the block address of queued task (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
QueuedTaskAddress = 45,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Executes the task queue for reading (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ExecuteTaskRead = 46,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Executes the task queue for writing (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ExecuteTaskWrite = 47,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Manages queues and tasks (AC, R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
CmdQTaskManagement = 48,
|
|
|
|
|
#endregion Class 11 MMC Commands (Command Queue)
|
|
|
|
|
|
|
|
|
|
#region Class 1 SecureDigital Commands (Basic)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends SD interface condition (BCR, R7)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendInterfaceCondition = 8,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Switch to 1.8V bus signaling level (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
VoltageSwitch = 11,
|
|
|
|
|
#endregion Class 1 SecureDigital Commands (Basic)
|
|
|
|
|
|
|
|
|
|
#region Class 2 SecureDigital Commands (Block-oriented read)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// 64 bytes of tuning pattern is sent for SDR50 and SDR104 optinal sampling point detection (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendTuningBlock = 19,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Speed class control command (AC, R1b)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SpeedClassControl = 20,
|
|
|
|
|
#endregion Class 2 SecureDigital Commands (Block-oriented read)
|
|
|
|
|
|
|
|
|
|
#region Class 11 SecureDigital Commands (Function Extension)
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Single block read type (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadExtraSingle = 48,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Single block write type (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteExtraSingle = 49,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Multiple block read type (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ReadExtraMulti = 58,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Multiple block write type (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WriteExtraMulti = 59,
|
|
|
|
|
#endregion Class 11 SecureDigital Commands (Function Extension)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// SecureDigital application-specific commands
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
public enum SecureDigitalCommands : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Defines the data bus width to be used for data transfer (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetBusWidth = 6,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends the SD status register (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendStatus = 13,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Send the number of the written write blocks (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendNumWriteBlocks = 22,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Set the number of write blocks to be pre-erased before writing (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetWriteBlockEraseCount = 23,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Sends host capacity support information and asks the card to send its operating condition register (BCR, R3)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SendOperatingCondition = 41,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Connects/Disconnects the 50 kOhm pull-up resistor on CD/DAT3 pin of card (AC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
|
|
|
|
SetClearCardDetect = 42,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Reads the SD Configuration Register SCR (ADTC, R1)
|
2016-10-22 22:58:01 +01:00
|
|
|
/// </summary>
|
2017-12-21 02:52:12 +00:00
|
|
|
SendScr = 51
|
2016-10-22 22:58:01 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Flags]
|
|
|
|
|
public enum MmcFlags : uint
|
|
|
|
|
{
|
|
|
|
|
ResponsePresent = 1 << 0,
|
2018-01-21 21:56:09 +00:00
|
|
|
Response136 = 1 << 1,
|
|
|
|
|
ResponseCrc = 1 << 2,
|
|
|
|
|
ResponseBusy = 1 << 3,
|
|
|
|
|
ResponseOpcode = 1 << 4,
|
|
|
|
|
CommandMask = 3 << 5,
|
|
|
|
|
CommandAc = 0 << 5,
|
|
|
|
|
CommandAdtc = 1 << 5,
|
|
|
|
|
CommandBc = 2 << 5,
|
|
|
|
|
CommandBcr = 3 << 5,
|
|
|
|
|
ResponseSpiS1 = 1 << 7,
|
|
|
|
|
ResponseSpiS2 = 1 << 8,
|
|
|
|
|
ResponseSpiB4 = 1 << 9,
|
2017-12-20 17:15:26 +00:00
|
|
|
ResponseSpiBusy = 1 << 10,
|
2018-01-21 21:56:09 +00:00
|
|
|
ResponseNone = 0,
|
2018-06-22 08:08:38 +01:00
|
|
|
ResponseR1 = ResponsePresent | ResponseCrc | ResponseOpcode,
|
2018-01-21 21:56:09 +00:00
|
|
|
ResponseR1B = ResponsePresent | ResponseCrc | ResponseOpcode | ResponseBusy,
|
2018-06-22 08:08:38 +01:00
|
|
|
ResponseR2 = ResponsePresent | Response136 | ResponseCrc,
|
2018-01-21 21:56:09 +00:00
|
|
|
ResponseR3 = ResponsePresent,
|
|
|
|
|
ResponseR4 = ResponsePresent,
|
|
|
|
|
ResponseR5 = ResponsePresent | ResponseCrc | ResponseOpcode,
|
|
|
|
|
ResponseR6 = ResponsePresent | ResponseCrc | ResponseOpcode,
|
|
|
|
|
ResponseR7 = ResponsePresent | ResponseCrc | ResponseOpcode,
|
|
|
|
|
ResponseSpiR1 = ResponseSpiS1,
|
|
|
|
|
ResponseSpiR1B = ResponseSpiS1 | ResponseSpiBusy,
|
|
|
|
|
ResponseSpiR2 = ResponseSpiS1 | ResponseSpiS2,
|
|
|
|
|
ResponseSpiR3 = ResponseSpiS1 | ResponseSpiB4,
|
|
|
|
|
ResponseSpiR4 = ResponseSpiS1 | ResponseSpiB4,
|
|
|
|
|
ResponseSpiR5 = ResponseSpiS1 | ResponseSpiS2,
|
|
|
|
|
ResponseSpiR7 = ResponseSpiS1 | ResponseSpiB4
|
2016-10-22 22:58:01 +01:00
|
|
|
}
|
2017-05-23 18:45:09 +01:00
|
|
|
|
|
|
|
|
[Flags]
|
|
|
|
|
public enum KreonFeatures
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive can set the xtreme unlock state with Xbox 360 discs
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
|
|
|
|
XtremeUnlock360,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive can set the wxripper unlock state with Xbox 360 discs
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WxripperUnlock360,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive can read and decrypt the SS from Xbox 360 discs
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
DecryptSs360,
|
2017-05-23 18:45:09 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive has full challenge response capabilities with Xbox 360 discs
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ChallengeResponse360,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive can set the xtreme unlock state with Xbox discs
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
|
|
|
|
XtremeUnlock,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive can set the wxripper unlock state with Xbox discs
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
|
|
|
|
WxripperUnlock,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive can read and decrypt the SS from Xbox discs
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
2017-12-20 17:15:26 +00:00
|
|
|
DecryptSs,
|
2017-05-23 18:45:09 +01:00
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive has full challenge response capabilities with Xbox discs
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ChallengeResponse,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive supports the locked state
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
|
|
|
|
Lock,
|
|
|
|
|
/// <summary>
|
2017-12-23 20:04:36 +00:00
|
|
|
/// Drive supports skipping read errors
|
2017-05-23 18:45:09 +01:00
|
|
|
/// </summary>
|
|
|
|
|
ErrorSkipping
|
|
|
|
|
}
|
|
|
|
|
|
2018-01-21 21:56:09 +00:00
|
|
|
public enum AtaFeatures : byte
|
|
|
|
|
{
|
|
|
|
|
/// <summary>Enable 8-bit data transfers</summary>
|
|
|
|
|
Enable8Bit = 0x01,
|
|
|
|
|
/// <summary>Enable write cache</summary>
|
|
|
|
|
EnableWriteCache = 0x02,
|
|
|
|
|
/// <summary>Set transfer mode based on value in sector count register</summary>
|
|
|
|
|
SetTransferMode = 0x03,
|
|
|
|
|
/// <summary>Enable all automatic defect reassignment</summary>
|
|
|
|
|
EnableDefectReassignment = 0x04,
|
|
|
|
|
/// <summary>Enable advanced power management</summary>
|
|
|
|
|
EnableApm = 0x05,
|
|
|
|
|
/// <summary>Enable Power-Up In Standby feature set</summary>
|
|
|
|
|
EnablePowerUpInStandby = 0x06,
|
|
|
|
|
/// <summary>Power-Up In Standby feature set device spin-up</summary>
|
|
|
|
|
PowerUpInStandByFeature = 0x07,
|
|
|
|
|
/// <summary>Reserved for Address offset reserved area boot method technical report</summary>
|
|
|
|
|
AddressOffsetReserved = 0x09,
|
|
|
|
|
/// <summary>Enable CFA power mode 1</summary>
|
|
|
|
|
EnableCfaPowerMode1 = 0x0A,
|
|
|
|
|
/// <summary>Enable Write-Read-Verify feature set</summary>
|
|
|
|
|
EnableWriteReadVerify = 0x0B,
|
|
|
|
|
/// <summary>Enable use of SATA feature</summary>
|
|
|
|
|
EnableSataFeature = 0x10,
|
|
|
|
|
/// <summary>Disable Media Status Notification</summary>
|
|
|
|
|
DisableMediaStatusNotification = 0x31,
|
|
|
|
|
/// <summary>Disable retry</summary>
|
|
|
|
|
DisableRetry = 0x33,
|
|
|
|
|
/// <summary>Enable Free-fall Control</summary>
|
|
|
|
|
EnableFreeFall = 0x41,
|
|
|
|
|
/// <summary>Enable Automatic Acoustic Management feature set</summary>
|
|
|
|
|
EnableAam = 0x42,
|
|
|
|
|
/// <summary>Set Maximum Host Interface Sector Times</summary>
|
|
|
|
|
SetMaximumHostInterfaceSectorTimes = 0x43,
|
|
|
|
|
/// <summary>Vendor unique length of ECC on read long/write long commands</summary>
|
|
|
|
|
EnableReadLongVendorLength = 0x44,
|
|
|
|
|
/// <summary>Extended Power conditions</summary>
|
|
|
|
|
ExtendedPowerConditions = 0x4A,
|
|
|
|
|
/// <summary>Set cache segments to sector count register value</summary>
|
|
|
|
|
SetCacheSegments = 0x54,
|
|
|
|
|
/// <summary>Disable read look-ahead feature</summary>
|
|
|
|
|
DisableReadLookAhead = 0x55,
|
|
|
|
|
/// <summary>Enable release interrupt</summary>
|
|
|
|
|
EnableReleaseInterrupt = 0x5D,
|
|
|
|
|
/// <summary>Enable SERVICE interrupt</summary>
|
|
|
|
|
EnableServiceInterrupt = 0x5E,
|
|
|
|
|
/// <summary>Long Physical Sector Alignment Error Reporting Control</summary>
|
|
|
|
|
LongPhysicalSectorErrorControl = 0x62,
|
|
|
|
|
/// <summary>Enable/Disable the DSN feature set</summary>
|
|
|
|
|
DsnFeature = 0x63,
|
|
|
|
|
/// <summary>Disable reverting to power on defaults</summary>
|
|
|
|
|
DisableRevertToDefaults = 0x66,
|
|
|
|
|
/// <summary>Disable ECC</summary>
|
|
|
|
|
DisableEcc = 0x77,
|
|
|
|
|
/// <summary>Disable 8-bit data transfers</summary>
|
|
|
|
|
Disable8Bit = 0x81,
|
|
|
|
|
/// <summary>Disable write cache</summary>
|
|
|
|
|
DisableWriteCache = 0x82,
|
|
|
|
|
/// <summary>Disable all automatic defect reassignment</summary>
|
|
|
|
|
DisableDefectReassignment = 0x84,
|
|
|
|
|
/// <summary>Disable advanced power management</summary>
|
|
|
|
|
DisableApm = 0x85,
|
|
|
|
|
/// <summary>Disable Power-Up In Standby feature set</summary>
|
|
|
|
|
DisablePowerUpInStandby = 0x86,
|
|
|
|
|
/// <summary>Enable ECC</summary>
|
|
|
|
|
EnableEcc = 0x88,
|
|
|
|
|
/// <summary>Reserved for Address offset reserved area boot method technical report</summary>
|
|
|
|
|
AddressOffsetReserved2 = 0x89,
|
|
|
|
|
/// <summary>Disable CFA power mode 1</summary>
|
|
|
|
|
DisableCfaPowerMode1 = 0x8A,
|
|
|
|
|
/// <summary>Disable Write-Read-Verify feature set</summary>
|
|
|
|
|
DisableWriteReadVerify = 0x8B,
|
|
|
|
|
/// <summary>Disable use of SATA feature</summary>
|
|
|
|
|
DisableSataFeature = 0x90,
|
|
|
|
|
/// <summary>Enable Media Status Notification</summary>
|
|
|
|
|
EnableMediaStatusNotification = 0x95,
|
|
|
|
|
/// <summary>Enable retries</summary>
|
|
|
|
|
EnableRetries = 0x99,
|
|
|
|
|
/// <summary>Set device maximum average current</summary>
|
|
|
|
|
SetMaximumAverageCurrent = 0x9A,
|
|
|
|
|
/// <summary>Enable read look-ahead feature</summary>
|
|
|
|
|
EnableReadLookAhead = 0xAA,
|
|
|
|
|
/// <summary>Set maximum prefetch using sector count register value</summary>
|
|
|
|
|
SetMaximumPrefetch = 0xAB,
|
|
|
|
|
/// <summary>4 bytes of ECC apply on read long/write long commands</summary>
|
|
|
|
|
DisableReadLongVendorLength = 0xBB,
|
|
|
|
|
/// <summary>Disable Free-fall Control</summary>
|
|
|
|
|
DisableFreeFall = 0xC1,
|
|
|
|
|
/// <summary>Disable Automatic Acoustic Management feature set</summary>
|
|
|
|
|
DisableAam = 0xC2,
|
|
|
|
|
/// <summary>Enable/Disable the Sense Data Reporting feature set</summary>
|
|
|
|
|
SenseDataReporting = 0xC3,
|
|
|
|
|
/// <summary>Enable reverting to power on defaults</summary>
|
|
|
|
|
EnableRevertToDefaults = 0xCC,
|
|
|
|
|
/// <summary>Disable release interrupt</summary>
|
|
|
|
|
DisableReleaseInterrupt = 0xDD,
|
|
|
|
|
/// <summary>Disable SERVICE interrupt</summary>
|
|
|
|
|
DisableServiceInterrupt = 0xDE,
|
2018-06-22 08:08:38 +01:00
|
|
|
VendorSpecific = 0xE0
|
2018-01-21 21:56:09 +00:00
|
|
|
}
|
|
|
|
|
|
2017-05-23 18:45:09 +01:00
|
|
|
public enum KreonLockStates : byte
|
|
|
|
|
{
|
2018-01-21 21:56:09 +00:00
|
|
|
Locked = 0,
|
|
|
|
|
Xtreme = 1,
|
2017-05-23 18:45:09 +01:00
|
|
|
Wxripper = 2
|
|
|
|
|
}
|
2017-12-19 20:33:03 +00:00
|
|
|
}
|