|
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Helper;
namespace Scsi.Multimedia
{
/// <summary>This feature identifies a drive that is able to write data to logical blocks specified by logical block addresses. There is no requirement that the addresses in sequences of writes occur in any particular order.</summary>
[Description("This feature identifies a drive that is able to write data to logical blocks specified by logical block addresses.\r\nThere is no requirement that the addresses in sequences of writes occur in any particular order.")]
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public class RandomWritableFeature : MultimediaFeature
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private static readonly ScsiCommandCode[] __SupportedOperations = Sort(new ScsiCommandCode[] { ScsiCommandCode.ReadCapacity, ScsiCommandCode.Write10, ScsiCommandCode.WriteAndVerify10, ScsiCommandCode.SynchronizeCache10 });
public override FeatureSupportKind GetSupport(ScsiCommand command)
{
return Array.BinarySearch<ScsiCommandCode>(__SupportedOperations, command.OpCode) >= 0 ? FeatureSupportKind.Mandatory : FeatureSupportKind.None;
}
public RandomWritableFeature() : base(FeatureCode.RandomWritable) { }
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private uint _LastLogicalBlockAddress;
[DisplayName("Last Logical Block Address")]
public uint LastLogicalBlockAddress { get { return Bits.BigEndian(this._LastLogicalBlockAddress); } set { this._LastLogicalBlockAddress = Bits.BigEndian(value); } }
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private uint _LogicalBlockSize;
[DisplayName("Logical Block Size")]
public uint LogicalBlockSize { get { return Bits.BigEndian(this._LogicalBlockSize); } set { this._LogicalBlockSize = Bits.BigEndian(value); } }
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private ushort _Blocking;
[DisplayName("Logical Blocks per Writable Unit")]
public ushort Blocking { get { return Bits.BigEndian(this._Blocking); } set { this._Blocking = Bits.BigEndian(value); } }
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private byte byte10;
[DisplayName("Read/Write Error Recovery Page Present")]
public bool PagePresent { get { return Bits.GetBit(this.byte10, 0); } set { this.byte10 = Bits.SetBit(this.byte10, 0, value); } }
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private byte byte15;
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.