12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using Utilities;
- namespace DiskAccessLibrary.LogicalDiskManager
- {
- [Flags]
- public enum TOCRegionFlags : ushort
- {
- NotExist = 0x01,
- New = 0x02,
- Delete = 0x04,
- Disabled = 0x08
- }
- public class TOCRegion
- {
- public const int Length = 34;
- public string Name;
- public TOCRegionFlags RegionFlags;
- public ulong StartLBA;
- public ulong SizeLBA;
- public ushort Unknown;
- public ushort CopyNumber;
-
- public TOCRegion(byte[] buffer, int offset)
- {
- Name = ByteReader.ReadAnsiString(buffer, offset + 0x00, 8).Trim('\0');
- RegionFlags = (TOCRegionFlags)BigEndianConverter.ToUInt16(buffer, offset + 0x08);
- StartLBA = BigEndianConverter.ToUInt64(buffer, offset + 0x0A);
- SizeLBA = BigEndianConverter.ToUInt64(buffer, offset + 0x12);
- Unknown = BigEndianConverter.ToUInt16(buffer, offset + 0x1A);
- CopyNumber = BigEndianConverter.ToUInt16(buffer, offset + 0x1C);
- }
- public void WriteBytes(byte[] buffer, int offset)
- {
- ByteWriter.WriteAnsiString(buffer, offset + 0x00, Name, 8);
- BigEndianWriter.WriteUInt16(buffer, offset + 0x08, (ushort)RegionFlags);
- BigEndianWriter.WriteUInt64(buffer, offset + 0x0A, StartLBA);
- BigEndianWriter.WriteUInt64(buffer, offset + 0x12, SizeLBA);
- BigEndianWriter.WriteUInt16(buffer, offset + 0x1A, Unknown);
- BigEndianWriter.WriteUInt16(buffer, offset + 0x1C, CopyNumber);
- }
- }
- }
|