MicroUDFOSTATypes.pas
上传用户:wanyu_2000
上传日期:2021-02-21
资源大小:527k
文件大小:6k
源码类别:

DVD

开发平台:

Delphi

  1. {-----------------------------------------------------------------------------
  2.  Unit Name: MicroUDFOSTATypes
  3.  Author:    Dancemammal
  4.  Purpose:   OSTA UDF Records
  5.  History:   First release
  6. -----------------------------------------------------------------------------}
  7. Unit MicroUDFOSTATypes;
  8. interface
  9. Uses 
  10.      Windows, Messages, SysUtils, Classes, Graphics, Controls, MicroUDFClassTypes,
  11.      MicroUDFConsts;
  12. Type
  13.      Uint16 = Word;
  14.      Uint32 = LongWord;
  15.      OSTA_IdentSuffix = packed record
  16.           UDFRevision     : Word;
  17.           OSClass         : Byte;
  18.           OSIdentifier    : Byte;
  19.           reserved        : packed array [0..3] of Byte;
  20.      end;
  21.        POSTA_IdentSuffix = ^OSTA_IdentSuffix;
  22.      OSTA_ImpIdentSuffix = packed record
  23.           OSClass        : Byte;
  24.           OSIdentifier   : Byte;
  25.           reserved       : packed array [0..5] of Byte;
  26.      end;
  27.       POSTA_ImpIdentSuffix = ^OSTA_ImpIdentSuffix;
  28.      OSTA_AppIdentSuffix = packed record
  29.           ImpUse : packed array [0..7] of Byte;
  30.      end;
  31.       POSTA_AppIdentSuffix = ^OSTA_AppIdentSuffix;
  32. (* Logical Volume Integrity Descriptor (UDF 2.01 2.2.6) *)
  33. (* Implementation Use (UDF 2.01 2.2.6.4) *)
  34.      OSTA_LogicalVolumeIntegrityDescriptorImpUse = packed record
  35.           ImpIdent        : UDF_EntityIdentifier;
  36.           NumFiles        : Word;
  37.           NumDirs         : Word;
  38.           MinUDFReadRev   : Word;
  39.           MinUDFWriteRev  : Word;
  40.           MaxUDFWriteRev  : Word;
  41.      end;
  42.        POSTA_LogicalVolumeIntegrityDescriptorImpUse = ^OSTA_LogicalVolumeIntegrityDescriptorImpUse;
  43. (* Implementation Use Volume Descriptor (UDF 2.01 2.2.7) *)
  44. (* Implementation Use (UDF 2.01 2.2.7.2) *)
  45.      OSTA_ImplementationUseVolumeDescriptorImpUse = packed record
  46.           LVICharset : UDF_CharSpec;
  47.           logicalVolIdent   : packed array [0..127] of Char;
  48.           LVInfo1           : packed array [0..35] of Char;
  49.           LVInfo2           : packed array [0..35] of Char;
  50.           LVInfo3           : packed array [0..35] of Char;
  51.           ImpIdent          : UDF_EntityIdentifier;
  52.           ImpUse            : packed array [0..127] of Byte;
  53.      end;
  54.      OSTA_UDFPartitionMap2 = packed record
  55.           partitionMapType      : Byte;
  56.           partitionMapLength    : Byte;
  57.           Reserved1             : packed array [0..1] of Byte;
  58.           PartIdent             : UDF_EntityIdentifier;
  59.           VolumeSeqNumber       : Word;
  60.           PartitionNumber       : Word;
  61.      end;
  62.       POSTA_UDFPartitionMap2 = ^OSTA_UDFPartitionMap2;
  63. (* Virtual Partition Map (UDF 2.01 2.2.8) *)
  64.      OSTA_VirtualPartitionMap = packed record
  65.           partitionMapType   : Byte;
  66.           partitionMapLength : Byte;
  67.           Reserved1          : packed array [0..1] of Byte;
  68.           PartIdent          : UDF_EntityIdentifier;
  69.           VolumeSeqNumber    : Word;
  70.           PartitionNumber    : Word;
  71.           Reserved2          : packed array [0..23] of Byte;
  72.      end;
  73. (* Sparable Partition Map (UDF 2.01 2.2.9) *)
  74.   OSTA_SparablePartitionMap = packed record
  75.     PartitionMapType              : Byte;
  76.     PartitionMapLength            : Byte;
  77.     Reserved1                     : packed array [0..1] of Byte;
  78.     PartitionTypeIdentifier       : UDF_EntityIdentifier;
  79.     VolumeSequenceNumber          : Word;
  80.     PartitionNumber               : Word;
  81.     PacketLength                  : Word;
  82.     NumberOfSparingTables         : Byte;
  83.     Reserved2                     : Byte;
  84.     SizeOfEachSparingTable        : DWord;
  85.     LocationsOfSparingTables      : array [0..1] of DWord;
  86.     Pad                           : packed array [0..7] of Byte;
  87.   end;
  88.    POSTA_SparablePartitionMap = ^OSTA_SparablePartitionMap;
  89. (* Virtual Allocation Table (UDF 1.5 2.2.10) *)
  90.   OSTA_VirtualAllocationTableTail = packed record
  91.     EntityIdentifier          : UDF_EntityIdentifier;
  92.     PreviousVATICBLocation    : DWord;
  93.   end;
  94.    POSTA_VirtualAllocationTableTail = ^OSTA_VirtualAllocationTableTail;
  95. (* Virtual Allocation Table (UDF 2.01 2.2.10) *)
  96. Type
  97.      VirtualAllocationTable20 = record
  98.           lengthHeader : Uint16;
  99.           lengthImpUse : Uint16;
  100.           logicalVolIdent : array [0..127] of dstring;
  101.           previousVatICBLoc : Uint32;
  102.           numFIDSFiles : Uint32;
  103.           numFIDSDirectories : Uint32;
  104.           minReadRevision : Uint16;
  105.           minWriteRevision : Uint16;
  106.           maxWriteRevision : Uint16;
  107.           reserved : Uint16;
  108.           impUse1stByte : Byte;
  109.      end;
  110. (* Sparing Table (UDF 2.01 2.2.11) *)
  111. Type
  112.      OSTA_SparingEntry = packed record
  113.           OriginalLocation  : DWord;
  114.           MappedLocation    : DWord;
  115.       end;
  116.     POSTA_SparingEntry = ^OSTA_SparingEntry;
  117.   OSTA_SparingTable = packed record
  118.     DescriptorTag             : UDF_DescriptorTag;
  119.     SparingIdentifier         : UDF_EntityIdentifier;
  120.     ReallocationTableLength   : Word;
  121.     Reserved                  : Word;
  122.     SequenceNumber            : DWord;
  123.   end;
  124.    POSTA_SparingTable = ^OSTA_SparingTable;
  125. (* struct long_ad ICB - ADImpUse (UDF 2.01 2.2.4.3) *)
  126.      OSTA_AllocDescImpUse = packed record
  127.           FRlags : Word;
  128.           ImpUse : packed array [0..3] of Byte;
  129.      end;
  130.       POSTA_AllocDescImpUse = ^OSTA_AllocDescImpUse;
  131. (* Implementation Use Extended Attribute (UDF 2.01 3.3.4.5) *)
  132. (* FreeEASpace (UDF 2.01 3.3.4.5.1.1) *)
  133.      OSTA_FreeEaSpace = packed record
  134.           HeaderChecksum     : Word;
  135.           FreeEASpace1stByte : Byte;
  136.      end;
  137.       POSTA_FreeEaSpace = ^OSTA_FreeEaSpace;
  138. (* DVD Copyright Management Information (UDF 2.01 3.3.4.5.1.2) *)
  139.      OSTA_DVDCopyrightImpUse = packed record
  140.           HeaderChecksum   : Word;
  141.           CGMSInfo         : Byte;
  142.           DataType         : Byte;
  143.           ProtectionSystemInfo : packed array [0..3] of Byte;
  144.      end;
  145.       POSTA_DVDCopyrightImpUse = ^OSTA_DVDCopyrightImpUse;
  146. (* Application Use Extended Attribute (UDF 2.01 3.3.4.6) *)
  147. (* FreeAppEASpace (UDF 2.01 3.3.4.6.1) *)
  148.      OSTA_FreeAppEaSpace = packed record
  149.           HeaderChecksum     : Word;
  150.           FreeEASpace1stByte : Byte;
  151.      end;
  152.       POSTA_FreeAppEaSpace = ^OSTA_FreeAppEaSpace;
  153. implementation
  154. end.