Difference between revisions of "Unit CDFS"

From Ultibo.org
Jump to: navigation, search
(Created page with "Return to Unit Reference === Description === ---- ''To be documented'' === Constants === ---- ''To be documented'' === Type definitions === ---- ''To...")
 
 
(22 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
----
 
----
  
''To be documented''
+
'''Ultibo CDFS Interface unit'''
  
 
=== Constants ===
 
=== Constants ===
 
----
 
----
  
''To be documented''
+
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS specific constants''' <code> cdfs* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsIso9660 = 0;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsJoilet = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsSierra = 2;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsRockRidge = 3;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsAudio = 4;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsUDF = 5;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsAnyName = '*';</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsDotName = '.';</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsDotDotName = '..';</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsVersionName = '1';</code>
 +
| Used by version information on end of identifier (Not Used)
 +
|-
 +
| <code>cdfsSeparator1Name = '.';</code>
 +
| Dot on end of identifier when no extension exists (File only)
 +
|-
 +
| <code>cdfsSeparator2Name = ';';</code>
 +
| Used by version information on end of identifier (File only)
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsJolietMaxPath = 240;</code>
 +
| 120 (240 bytes)
 +
|-
 +
| <code>cdfsJolietMaxFile = 64;</code>
 +
| (128 bytes)
 +
|-
 +
| <code>cdfsISO9660MaxPath = 240;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsISO9660MaxFile = 30;</code>
 +
| 31 for Directories
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsISO9660StandardIdentifier = 'CD001';</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsELTORITOSystemIdentifier = 'EL TORITO SPECIFICATION';</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsFirstSector = 0;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsReservedSectors = 16;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsISO9660StartSector = 16;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsELTORITOBootSector = 17;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsISO9660StructureVersion = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsISO9660DescriptorVersion = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsELTORITODescriptorVersion = 1;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsJolietUCS2Sequence1 = #37 + #47 + #64;</code>
 +
| '%/@'
 +
|-
 +
| <code>cdfsJolietUCS2Sequence2 = #37 + #47 + #67;</code>
 +
| '%/C'
 +
|-
 +
| <code>cdfsJolietUCS2Sequence3 = #37 + #47 + #69;</code>
 +
| '%/E'
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsDotIdentifier = $00;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsDotDotIdentifier = $01;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsSeparator1Value = $2E;</code>
 +
| '.'
 +
|-
 +
| <code>cdfsSeparator2Value = $3B;</code>
 +
| ';'
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsTimeStartYear = 1900;</code>
 +
| CDFS Time starts at 1900
 +
|-
 +
| <code>cdfsTimeOffsetInterval = 15;</code>
 +
| Offset is in 15 minute intervals
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsNullFileTime:TFileTime = (dwLowDateTime:$00000000;dwHighDateTime:$00000000);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsStartCluster = 16;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsUnknownCluster = LongWord(-1);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsRootPathNumber = 1;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsPathRecordSize = 9;</code>
 +
| Minimum
 +
|-
 +
| <code>cdfsExtendedRecordSize = 250;</code>
 +
| Minimum
 +
|-
 +
| <code>cdfsDirectoryRecordSize = 34;</code>
 +
| Minimum
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsFileIdentifierSize = 1;</code>
 +
| Minimum
 +
|-
 +
| <code>cdfsPathIdentifierSize = 1;</code>
 +
| Minimum
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsHeaderRecordSize = 32;</code>
 +
| Fixed
 +
|-
 +
| <code>cdfsCatalogRecordSize = 32;</code>
 +
| Fixed
 +
|-
 +
| <code>cdfsExtensionRecordSize = 32;</code>
 +
| Fixed
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsEvenSize = 0;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsUnevenSize = 1;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsRootRecordOffset = 156;</code>
 +
|Offset of Root Directory in Descriptor
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsInstanceFirst = 0;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsInstanceLast = Byte(-1);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsTableTypeMask = $00FF0000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsTableTypeShift = 16;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsTableInstanceMask = $0000FF00;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsTableInstanceShift = 8;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsTableDescriptorMask = $000000FF;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsTableDescriptorShift = 0;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsBitmapUnknown = LongWord(-1);</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS bitmap mask''' <code> cdfsBitmapMask* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsBitmapMaskBits = 64;</code>
 +
| Int64 Bitmap Masks
 +
|-
 +
| <code>cdfsBitmapMaskNone = $0000000000000000;</code>
 +
| Int64 Used for fast counting of free blocks
 +
|-
 +
| <code>cdfsBitmapMaskAll = $FFFFFFFFFFFFFFFF;</code>
 +
| Int64 Used for fast counting of used blocks
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS volume flag''' <code> cdfsVolumeFlag* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsVolumeFlagNone = $00;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsVolumeFlagUnregistered = $01;</code>
 +
| If set this SVD contains an unregistered escape sequence
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS file flag''' <code> cdfsFileFlag* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsFileFlagNone = $00;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsFileFlagExistence = $01;</code>
 +
| If set this file is hidden
 +
|-
 +
| <code>cdfsFileFlagDirectory = $02;</code>
 +
| If set this record is a directory
 +
|-
 +
| <code>cdfsFileFlagAssociated = $04;</code>
 +
| If set this file is an associated file
 +
|-
 +
| <code>cdfsFileFlagRecord = $08;</code>
 +
| If set record information is recorded for this file
 +
|-
 +
| <code>cdfsFileFlagProtection = $10;</code>
 +
| If set permissions are recorded for this file
 +
|-
 +
| <code>cdfsFileFlagReserved1 = $20;</code>
 +
| Reserved
 +
|-
 +
| <code>cdfsFileFlagReserved2 = $40;</code>
 +
| Reserved
 +
|-
 +
| <code>cdfsFileFlagMore = $80;</code>
 +
| If set there are more directory records for this file
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS permissions''' <code> cdfsPermission* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsPermissionSystemRead = $0001;</code>
 +
| If set system cannot Read
 +
|-
 +
| <code>cdfsPermissionSystemWrite = $0002;</code>
 +
| If set system cannot Write
 +
|-
 +
| <code>cdfsPermissionSystemExecute = $0004;</code>
 +
| If set system cannot Execute
 +
|-
 +
| <code>cdfsPermissionReserved1 = $0008;</code>
 +
| Reserved
 +
|-
 +
| <code>cdfsPermissionOwnerRead = $0010;</code>
 +
| If set owner cannot Read
 +
|-
 +
| <code>cdfsPermissionOwnerWrite = $0020;</code>
 +
| If set owner cannot Write
 +
|-
 +
| <code>cdfsPermissionOwnerExecute = $0040;</code>
 +
| If set owner cannot Execute
 +
|-
 +
| <code>cdfsPermissionReserved2 = $0080;</code>
 +
| Reserved
 +
|-
 +
| <code>cdfsPermissionGroupRead = $0100;</code>
 +
| If set group cannot Read
 +
|-
 +
| <code>cdfsPermissionGroupWrite = $0200;</code>
 +
| If set group cannot Write
 +
|-
 +
| <code>cdfsPermissionGroupExecute = $0400;</code>
 +
| If set group cannot Execute
 +
|-
 +
| <code>cdfsPermissionReserved3 = $0800;</code>
 +
| Reserved
 +
|-
 +
| <code>cdfsPermissionOtherRead = $1000;</code>
 +
| If set other cannot Read
 +
|-
 +
| <code>cdfsPermissionOtherWrite = $2000;</code>
 +
| If set other cannot Write
 +
|-
 +
| <code>cdfsPermissionOtherExecute = $4000;</code>
 +
| If set other cannot Execute
 +
|-
 +
| <code>cdfsPermissionReserved4 = $8000;</code>
 +
| Reserved
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS path table''' <code> cdfsPathTable* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsPathTableTypePrimary = $00;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>cdfsPathTableTypeAlternate = $01;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsPathTableTypePrimaryM = $02;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsPathTableTypeAlternateM = $03;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS volume descriptor''' <code> cdfsVolumeDescriptor* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsVolumeDescriptorTypeBoot = $00;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>cdfsVolumeDescriptorTypePrimary = $01;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsVolumeDescriptorTypeSupplementary = $02;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsVolumeDescriptorTypePartition = $03;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsVolumeDescriptorTypeTerminator = $FF;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS header''' <code> cdfsElTorito* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsElToritoHeaderId = $01;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsElToritoBootIndicator = $88;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsElToritoNoBootIndicator = $00;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsElToritoHeaderIndicator = $90;</code>
 +
| 91 if final header
 +
|-
 +
| <code>cdfsElToritoHeaderTerminator = $91;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsElToritoExtensionIndicator = $44;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS signature''' <code> cdfsElToritoSignature* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsElToritoSignature = $AA55;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS platform Id''' <code> cdfsElToritoPlatform* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsElToritoPlatformIdx86 = $00;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>cdfsElToritoPlatformIdPPC = $01;</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsElToritoPlatformIdMac = $02;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS media type''' <code> cdfsElToritoMedia* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsElToritoMediaTypeNone = $00;</code>
 +
| No Emulation
 +
|-
 +
| <code>cdfsElToritoMediaType12M = $01;</code>
 +
| 1.2 meg diskette
 +
|-
 +
| <code>cdfsElToritoMediaType144M = $02;</code>
 +
| 1.44 meg diskette
 +
|-
 +
| <code>cdfsElToritoMediaType288M = $03;</code>
 +
| 2.88 meg diskette
 +
|-
 +
| <code>cdfsElToritoMediaTypeHDD = $04;</code>
 +
| Hard Disk (drive 80)
 +
|-
 +
| <code>cdfsElToritoMediaTypeMask = $0F;</code>
 +
| Values 5-F Reserved, invalid at this time
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsElToritoMediaFlagReserved = $10;</code>
 +
| Reserved, must be 0
 +
|-
 +
| <code>cdfsElToritoMediaFlagContinuation = $20;</code>
 +
| Continuation Entry Follows
 +
|-
 +
| <code>cdfsElToritoMediaFlagAtapi = $40;</code>
 +
| Image contains ATAPI driver
 +
|-
 +
| <code>cdfsElToritoMediaFlagScsi = $80;</code>
 +
| Image contains SCSI drivers
 +
|-
 +
| <code>cdfsElToritoMediaFlagMask = $F0;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''CDFS extension flag''' <code> cdfsElToritoExtensionFlag* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>cdfsElToritoExtensionFlagExtension = $20;</code>
 +
| Extension Record Follows
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
=== Type definitions ===
 
=== Type definitions ===
 
----
 
----
  
''To be documented''
+
 
 +
'''CDFS specific types'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TCDFSType = (ctNONE,ctISO9660,ctJOLIET,ctSIERRA,ctROCKRIDGE,ctAUDIO,ctUDF);</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''CDFS time'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSTime = ^TCDFSTime;</code>
 +
 
 +
<code>TCDFSTime = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 7 Bytes
 +
|-
 +
| <code>Years:Byte;</code>
 +
| Number of years since 1900
 +
|-
 +
| <code>Month:Byte;</code>
 +
| Month of the year from 1 to 12
 +
|-
 +
| <code>Day:Byte;</code>
 +
| Day of the month from 1 to 31
 +
|-
 +
| <code>Hour:Byte;</code>
 +
| Hour of the day from 0 to 23
 +
|-
 +
| <code>Minute:Byte;</code>
 +
| Minute of the hour from 0 to 59
 +
|-
 +
| <code>Second:Byte;</code>
 +
| Second of the minute from 0 to 59
 +
|-
 +
| <code>Offset:ShortInt;</code>
 +
| Offset from Greenwich Mean Time in number of 15 min intervals from -48 (West) to +52 (East)
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''CDFS date time''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSDateTime = ^TCDFSDateTime;</code>
 +
 
 +
<code>TCDFSDateTime = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 17 Bytes
 +
|-
 +
| <code>Year:array[0..3] of Char;</code>
 +
| Year from 1 to 9999
 +
|-
 +
| <code>Month:array[0..1] of Char;</code>
 +
| Month of the year from 1 to 12
 +
|-
 +
| <code>Day:array[0..1] of Char;</code>
 +
| Day of the month from 1 to 31
 +
|-
 +
| <code>Hour:array[0..1] of Char;</code>
 +
| Hour of the day from 0 to 23
 +
|-
 +
| <code>Minute:array[0..1] of Char;</code>
 +
| Minute of the hour from 0 to 59
 +
|-
 +
| <code>Second:array[0..1] of Char;</code>
 +
| Second of the minute from 0 to 59
 +
|-
 +
| <code>Hundredths:array[0..1] of Char;</code>
 +
| Hundredths of a second
 +
|-
 +
| <code>Offset:ShortInt;</code>
 +
| Offset from Greenwich Mean Time in number of 15 min intervals from -48 (West) to +52 (East)
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''CDFS directory record'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSDirectoryRecord = ^TCDFSDirectoryRecord;</code>
 +
 
 +
<code>TCDFSDirectoryRecord = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 34 Bytes (Minimum not including padding)
 +
|-
 +
| <code>RecordSize:Byte;</code>
 +
| Length of Directory Record (LEN-DR)
 +
|-
 +
| <code>ExtendedSize:Byte;</code>
 +
| Extended Attribute Record Length
 +
|-
 +
| <code>FirstBlock:LongWord;</code>
 +
| Location of Extent
 +
|-
 +
| <code>FirstBlockM:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DataSize:LongWord;</code>
 +
| Data Length
 +
|-
 +
| <code>DataSizeM:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CreateTime:TCDFSTime;</code>
 +
| Recording Date and Time
 +
|-
 +
| <code>FileFlags:Byte;</code>
 +
| File Flags 8 bits
 +
|-
 +
| <code>UnitSize:Byte;</code>
 +
| File Unit Size
 +
|-
 +
| <code>InterleaveSize:Byte;</code>
 +
| Interleave Gap Size
 +
|-
 +
| <code>SequenceNumber:Word;</code>
 +
| Volume Sequence Number
 +
|-
 +
| <code>SequenceNumberM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FileIdentifierSize:Byte;</code>
 +
| Length of File Identifier (LEN_FI)
 +
|-
 +
| <code>FileIdentifier:array[0..0] of Char;</code>
 +
| File Identifier d-characters,d1-characters,SEPARATOR 1,SEPARATOR 2,(00) or (01) byte
 +
|-
 +
| <code>Padding:Byte;</code>
 +
| Padding Field (00) byte (Only present if FileIdentifierSize is even (Total size would be odd))
 +
|-
 +
| <code>SystemData:array[0..0] of Byte;</code>
 +
| System Use LEN_SU bytes
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''CDFS path record'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSPathRecord = ^TCDFSPathRecord;</code>
 +
 
 +
<code>TCDFSPathRecord = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 9 Bytes (Minimum not including padding)
 +
|-
 +
| <code>PathIdentifierSize:Byte;</code>
 +
| Length of Directory Identifier (LEN_DI)
 +
|-
 +
| <code>ExtendedSize:Byte;</code>
 +
| Extended Attribute Record Length
 +
|-
 +
| <code>FirstBlock:LongWord;</code>
 +
| Location of Extent
 +
|-
 +
| <code>ParentNumber:Word;</code>
 +
| Parent Directory Number
 +
|-
 +
| <code>PathIdentifier:array[0..0] of Char;</code>
 +
| Directory Identifier d-characters, d1-characters, (00) byte
 +
|-
 +
| <code>Padding:Byte;</code>
 +
| Padding Field (00) byte (Only present if PathIdentifierSize is odd (Total size would be odd))
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''CDFS extended record''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSExtendedRecord = ^TCDFSExtendedRecord;</code>
 +
 
 +
<code>TCDFSExtendedRecord = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 250 Bytes (Minimum)
 +
|-
 +
| <code>OwnerId:Word;</code>
 +
| Owner Identification
 +
|-
 +
| <code>OwnerIdM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>GroupId:Word;</code>
 +
| Group Identification
 +
|-
 +
| <code>GroupIdM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Permissions:Word;</code>
 +
| Permissions 16 bits
 +
|-
 +
| <code>CreateTime:TCDFSDateTime;</code>
 +
| File Creation Date and Time
 +
|-
 +
| <code>ModifyTime:TCDFSDateTime;</code>
 +
| File Modification Date and Time
 +
|-
 +
| <code>ExpireTime:TCDFSDateTime;</code>
 +
| File Expiration Date and Time
 +
|-
 +
| <code>EffectiveTime:TCDFSDateTime;</code>
 +
| File Effective Date and Time
 +
|-
 +
| <code>RecordFormat:Byte;</code>
 +
| Record Format
 +
|-
 +
| <code>RecordAttributes:Byte;</code>
 +
| Record Attributes
 +
|-
 +
| <code>RecordLength:Word;</code>
 +
| Record Length
 +
|-
 +
| <code>RecordLengthM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SystemIdentifier:array[0..31] of Char;</code>
 +
| System Identifier a-characters, a1-characters
 +
|-
 +
| <code>SystemData:array[0..63] of Byte;</code>
 +
| System Use not specified
 +
|-
 +
| <code>ExtendedVersion:Byte;</code>
 +
| Extended Attribute Record Version
 +
|-
 +
| <code>EscapeSequenceSize:Byte;</code>
 +
| Length of Escape Sequences (LEN_ESC)
 +
|-
 +
| <code>Reserved1:array[0..63] of Byte;</code>
 +
| Reserved for future standardization (00) bytes
 +
|-
 +
| <code>ApplicationDataSize:Word;</code>
 +
| Length of Application Use (LEN_AU)
 +
|-
 +
| <code>ApplicationDataSizeM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ApplicationData:array[0..0] of Byte;</code>
 +
| Application Use LEN_AU bytes
 +
|-
 +
| <code>EscapeSequence:array[0..0] of Byte;</code>
 +
| Escape Sequences LEN_ESC bytes
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''CDFS volume descriptor header'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSVolumeDescriptorHeader = ^TCDFSVolumeDescriptorHeader;</code>
 +
 
 +
<code>TCDFSVolumeDescriptorHeader = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 2048 Bytes
 +
|-
 +
| <code>DescriptorType:Byte;</code>
 +
| Descriptor Type 00 = Boot, 01 = Primary etc
 +
|-
 +
| <code>StandardIdentifier:array[0..4] of Char;</code>
 +
| Standard Identifier ('CD001')
 +
|-
 +
| <code>DescriptorVersion:Byte;</code>
 +
| Descriptor Version (1)
 +
|-
 +
| <code>Reserved:array[0..2040] of Byte;</code>
 +
| Content depends on Descriptor Type
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''CDFS volume descriptor boot'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSVolumeDescriptorBoot = ^TCDFSVolumeDescriptorBoot;</code>
 +
 
 +
<code>TCDFSVolumeDescriptorBoot = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 2048 Bytes
 +
|-
 +
| <code>DescriptorType:Byte;</code>
 +
| Descriptor Type (00 = Boot)
 +
|-
 +
| <code>StandardIdentifier:array[0..4] of Char;</code>
 +
| Standard Identifier ('CD001')
 +
|-
 +
| <code>DescriptorVersion:Byte;</code>
 +
| Descriptor Version (1)
 +
|-
 +
| <code>SystemIdentifier:array[0..31] of Char;</code>
 +
| 32 a-characters (eg EL TORITO SPECIFICATION)
 +
|-
 +
| <code>BootIdentifier:array[0..31] of Char;</code>
 +
| 32 a-characters
 +
|-
 +
| <code>BootData:array[0..1976] of Byte;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''CDFS volume descriptor primary''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSVolumeDescriptorPrimary = ^TCDFSVolumeDescriptorPrimary;</code>
 +
 
 +
<code>TCDFSVolumeDescriptorPrimary = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 2048 Bytes
 +
|-
 +
| <code>DescriptorType:Byte;</code>
 +
| Descriptor Type (01 = Primary)
 +
|-
 +
| <code>StandardIdentifier:array[0..4] of Char;</code>
 +
| Standard Identifier ('CD001')
 +
|-
 +
| <code>DescriptorVersion:Byte;</code>
 +
| Descriptor Version (1)
 +
|-
 +
| <code>Reserved1:Byte;</code>
 +
| Unused Field (00) byte
 +
|-
 +
| <code>SystemIdentifier:array[0..31] of Char;</code>
 +
| System Identifier a-characters
 +
|-
 +
| <code>VolumeIdentifier:array[0..31] of Char;</code>
 +
| Volume Identifier d-characters
 +
|-
 +
| <code>Reserved2:array[0..7] of Byte;</code>
 +
| Unused Field (00) bytes
 +
|-
 +
| <code>VolumeSpaceSize:LongWord;</code>
 +
| Volume Space Size
 +
|-
 +
| <code>VolumeSpaceSizeM:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Reserved3:array[0..31] of Byte;</code>
 +
| Unused Field (00) bytes
 +
|-
 +
| <code>VolumeSetSize:Word;</code>
 +
| Volume Set Size
 +
|-
 +
| <code>VolumeSetSizeM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VolumeSequenceNumber:Word;</code>
 +
| Volume Sequence Number
 +
|-
 +
| <code>VolumeSequenceNumberM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LogicalBlockSize:Word;</code>
 +
| Logical Block Size
 +
|-
 +
| <code>LogicalBlockSizeM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PathTableSize:LongWord;</code>
 +
| Path Table Size
 +
|-
 +
| <code>PathTableSizeM:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PrimaryPathTable:LongWord;</code>
 +
| Location of Occurrence of Type L Path Table
 +
|-
 +
| <code>AlternatePathTable:LongWord;</code>
 +
| Location of Optional Occurrence of Type L Path Table
 +
|-
 +
| <code>PrimaryPathTableM:LongWord;</code>
 +
| Location of Occurrence of Type M Path Table
 +
|-
 +
| <code>AlternatePathTableM:LongWord;</code>
 +
| Location of Optional Occurrence of Type M Path Table
 +
|-
 +
| <code>RootDirectory:TCDFSDirectoryRecord;</code>
 +
| Directory Record for Root Directory 34 bytes
 +
|-
 +
| <code>VolumeSetIdentifier:array[0..127] of Char;</code>
 +
| Volume Set Identifier d-characters
 +
|-
 +
| <code>PublisherIdentifier:array[0..127] of Char;</code>
 +
| Publisher Identifier a-characters
 +
|-
 +
| <code>PreparerIdentifier:array[0..127] of Char;</code>
 +
| Data Preparer Identifier a-characters
 +
|-
 +
| <code>ApplicationIdentifier:array[0..127] of Char;</code>
 +
| Application Identifier a-characters
 +
|-
 +
| <code>CopyrightIdentifier:array[0..36] of Char;</code>
 +
| Copyright File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
 +
|-
 +
| <code>AbstractIdentifier:array[0..36] of Char;</code>
 +
| Abstract File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
 +
|-
 +
| <code>BibliographicIdentifier:array[0..36] of Char;</code>
 +
| Bibliographic File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
 +
|-
 +
| <code>CreateTime:TCDFSDateTime;</code>
 +
| Volume Creation Date and Time
 +
|-
 +
| <code>ModifyTime:TCDFSDateTime;</code>
 +
| Volume Modification Date and Time
 +
|-
 +
| <code>ExpireTime:TCDFSDateTime;</code>
 +
| Volume Expiration Date and Time
 +
|-
 +
| <code>EffectiveTime:TCDFSDateTime;</code>
 +
| Volume Effective Date and Time
 +
|-
 +
| <code>FileStructureVersion:Byte;</code>
 +
| File Structure Version
 +
|-
 +
| <code>Reserved4:Byte;</code>
 +
| Reserved for future standardization (00) byte
 +
|-
 +
| <code>ApplicationData:array[0..511] of Byte;</code>
 +
| Application Use not specified
 +
|-
 +
| <code>Reserved5:array[0..652] of Byte;</code>
 +
| Reserved for future standardization (00) bytes
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''CDFS volume descriptor supplementary''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSVolumeDescriptorSupplementary = ^TCDFSVolumeDescriptorSupplementary;</code>
 +
 
 +
<code>TCDFSVolumeDescriptorSupplementary = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 2048 Bytes
 +
|-
 +
| <code>DescriptorType:Byte;</code>
 +
| Descriptor Type (02 = Supplementary)
 +
|-
 +
| <code>StandardIdentifier:array[0..4] of Char;</code>
 +
| Standard Identifier ('CD001')
 +
|-
 +
| <code>DescriptorVersion:Byte;</code>
 +
| Descriptor Version (1)
 +
|-
 +
| <code>VolumeFlags:Byte;</code>
 +
| Volume Flags 8 bits
 +
|-
 +
| <code>SystemIdentifier:array[0..31] of Char;</code>
 +
| System Identifier a-characters
 +
|-
 +
| <code>VolumeIdentifier:array[0..31] of Char;</code>
 +
| Volume Identifier d-characters
 +
|-
 +
| <code>Reserved2:array[0..7] of Byte;</code>
 +
| Unused Field (00) bytes
 +
|-
 +
| <code>VolumeSpaceSize:LongWord;</code>
 +
| Volume Space Size
 +
|-
 +
| <code>VolumeSpaceSizeM:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EscapeSequences:array[0..31] of Byte;</code>
 +
| Escape Sequences 32 bytes
 +
|-
 +
| <code>VolumeSetSize:Word;</code>
 +
| Volume Set Size
 +
|-
 +
| <code>VolumeSetSizeM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VolumeSequenceNumber:Word;</code>
 +
| Volume Sequence Number
 +
|-
 +
| <code>VolumeSequenceNumberM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LogicalBlockSize:Word;</code>
 +
| Logical Block Size
 +
|-
 +
| <code>LogicalBlockSizeM:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PathTableSize:LongWord;</code>
 +
| Path Table Size
 +
|-
 +
| <code>PathTableSizeM:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PrimaryPathTable:LongWord;</code>
 +
| Location of Occurrence of Type L Path Table
 +
|-
 +
| <code>AlternatePathTable:LongWord;</code>
 +
| Location of Optional Occurrence of Type L Path Table
 +
|-
 +
| <code>PrimaryPathTableM:LongWord;</code>
 +
| Location of Occurrence of Type M Path Table
 +
|-
 +
| <code>AlternatePathTableM:LongWord;</code>
 +
| Location of Optional Occurrence of Type M Path Table
 +
|-
 +
| <code>RootDirectory:TCDFSDirectoryRecord;</code>
 +
| Directory Record for Root Directory 34 bytes
 +
|-
 +
| <code>VolumeSetIdentifier:array[0..127] of Char;</code>
 +
| Volume Set Identifier d-characters
 +
|-
 +
| <code>PublisherIdentifier:array[0..127] of Char;</code>
 +
| Publisher Identifier a-characters
 +
|-
 +
| <code>PreparerIdentifier:array[0..127] of Char;</code>
 +
| Data Preparer Identifier a-characters
 +
|-
 +
| <code>ApplicationIdentifier:array[0..127] of Char;</code>
 +
| Application Identifier a-characters
 +
|-
 +
| <code>CopyrightIdentifier:array[0..36] of Char;</code>
 +
| Copyright File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
 +
|-
 +
| <code>AbstractIdentifier:array[0..36] of Char;</code>
 +
| Abstract File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
 +
|-
 +
| <code>BibliographicIdentifier:array[0..36] of Char;</code>
 +
| Bibliographic File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
 +
|-
 +
| <code>CreateTime:TCDFSDateTime;</code>
 +
| Volume Creation Date and Time
 +
|-
 +
| <code>ModifyTime:TCDFSDateTime;</code>
 +
| Volume Modification Date and Time
 +
|-
 +
| <code>ExpireTime:TCDFSDateTime;</code>
 +
| Volume Expiration Date and Time
 +
|-
 +
| <code>EffectiveTime:TCDFSDateTime;</code>
 +
| Volume Effective Date and Time
 +
|-
 +
| <code>FileStructureVersion:Byte;</code>
 +
| File Structure Version
 +
|-
 +
| <code>Reserved4:Byte;</code>
 +
| Reserved for future standardization (00) byte
 +
|-
 +
| <code>ApplicationData:array[0..511] of Byte;</code>
 +
| Application Use not specified
 +
|-
 +
| <code>Reserved5:array[0..652] of Byte;</code>
 +
| Reserved for future standardization (00) bytes
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''CDFS volume descriptor partition''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSVolumeDescriptorPartition = ^TCDFSVolumeDescriptorPartition;</code>
 +
 
 +
<code>TCDFSVolumeDescriptorPartition = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 2048 Bytes
 +
|-
 +
| <code>DescriptorType:Byte;</code>
 +
| Descriptor Type (03 = Partition)
 +
|-
 +
| <code>StandardIdentifier:array[0..4] of Char;</code>
 +
| Standard Identifier ('CD001')
 +
|-
 +
| <code>DescriptorVersion:Byte;</code>
 +
| Descriptor Version (1)
 +
|-
 +
| <code>Reserved1:Byte;</code>
 +
| Unused Field (00) byte
 +
|-
 +
| <code>SystemIdentifier:array[0..31] of Char;</code>
 +
| System Identifier a-characters
 +
|-
 +
| <code>PartitionIdentifier:array[0..31] of Char;</code>
 +
| Volume Partition Identifier d-characters
 +
|-
 +
| <code>PartitionStart:LongWord;</code>
 +
| Volume Partition Location (first Logical Block)
 +
|-
 +
| <code>PartitionStartM:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PartitionSize:LongWord;</code>
 +
| Volume Partition Size (in Logical Blocks)
 +
|-
 +
| <code>PartitionSizeM:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SystemData:array[0..1959] of Byte;</code>
 +
| System Use not specified
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''CDFS volume descriptor terminator''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCDFSVolumeDescriptorTerminator = ^TCDFSVolumeDescriptorTerminator;</code>
 +
 
 +
<code>TCDFSVolumeDescriptorTerminator = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 2048 Bytes
 +
|-
 +
| <code>DescriptorType:Byte;</code>
 +
| Descriptor Type (FF = Terminator)
 +
|-
 +
| <code>StandardIdentifier:array[0..4] of Char;</code>
 +
| Standard Identifier ('CD001')
 +
|-
 +
| <code>DescriptorVersion:Byte;</code>
 +
| Descriptor Version (1)
 +
|-
 +
| <code>Reserved:array[0..2040] of Byte;</code>
 +
| Reserved (Always 00)
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''EL TORITO validation record''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PELTORITOValidationRecord = ^TELTORITOValidationRecord;</code>
 +
 
 +
<code>TELTORITOValidationRecord = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 32 Bytes
 +
|-
 +
| <code>HeaderId:Byte;</code>
 +
| Header ID, must be 01
 +
|-
 +
| <code>PlatformId:Byte;</code>
 +
| Platform ID 0 = 80x86, 1 = PowerPC, 2 = Mac
 +
|-
 +
| <code>Reserved1:Word;</code>
 +
| Reserved, must be 0
 +
|-
 +
| <code>VendorId:array[0..23] of Char;</code>
 +
| ID string. This is intended to identify the manufacturer/developer of the CD-ROM
 +
|-
 +
| <code>Checksum:Word;</code>
 +
| Checksum Word. This sum of all the words in this record should be 0
 +
|-
 +
| <code>Signature:Word;</code>
 +
| Key byte, must be 55. Key byte, must be AA. This value is included in the checksum
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''EL TORITO default record''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PELTORITODefaultRecord = ^TELTORITODefaultRecord;</code>
 +
 
 +
<code>TELTORITODefaultRecord = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 32 Bytes
 +
|-
 +
| <code>BootIndicator:Byte;</code>
 +
| Boot Indicator. 88 = Bootable, 00 = Not Bootable
 +
|-
 +
| <code>BootMedia:Byte;</code>
 +
| Boot media type. This specifies what media the boot image is intended to emulate
 +
|-
 +
| <code>LoadSegment:Word;</code>
 +
| This is the load segment for the initial boot image. If this value is 0 the system will use the traditional segment of 7C0
 +
|-
 +
| <code>SystemType:Byte;</code>
 +
| This must be a copy of byte 5 (System Type) from the Partition Table found in the boot image (PartitionId)
 +
|-
 +
| <code>Reserved1:Byte;</code>
 +
| Unused, must be 0
 +
|-
 +
| <code>LoadCount:Word;</code>
 +
| Sector Count. This is the number of virtual/emulated sectors the system will store at Load Segment during the initial boot procedure
 +
|-
 +
| <code>LoadRBA:LongWord;</code>
 +
| Load RBA. This is the start address of the virtual disk. CDs use Relative/Logical block addressing
 +
|-
 +
| <code>Reserved2:array[0..19] of Byte; {Unused, must be 0}</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''EL TORITO section header'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PELTORITOSectionHeader = ^TELTORITOSectionHeader;</code>
 +
 
 +
<code>TELTORITOSectionHeader = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 32 Bytes
 +
|-
 +
| <code>HeaderIndicator:Byte;</code>
 +
| Header Indicator, 90 - Header, more headers follow, 91 - Final Header
 +
|-
 +
| <code>PlatformId:Byte;</code>
 +
| Platform ID 0 = 80x86, 1 = PowerPC, 2 = Mac
 +
|-
 +
| <code>SectionCount:Word;</code>
 +
| Number of section entries following this header
 +
|-
 +
| <code>SectionId:array[0..27] of Char;</code>
 +
| ID string. This identifies a section
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''EL TORITO section record''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PELTORITOSectionRecord = ^TELTORITOSectionRecord;</code>
 +
 
 +
<code>TELTORITOSectionRecord = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 32 Bytes
 +
|-
 +
| <code>BootIndicator:Byte;</code>
 +
| Boot Indicator. 88 = Bootable, 00 = Not Bootable
 +
|-
 +
| <code>BootMedia:Byte;</code>
 +
| Boot media type. This specifies what media the boot image emulates
 +
|-
 +
| <code>LoadSegment:Word;</code>
 +
| Load Segment. This is the load segment for the initial boot image. If this value is 0 the system will use the traditional segment of 7C0
 +
|-
 +
| <code>SystemType:Byte;</code>
 +
| System Type. This must be a copy of byte 5 (System Type) from the Partition Table found in the boot image (PartitionId)
 +
|-
 +
| <code>Reserved1:Byte;</code>
 +
| Unused, must be 0
 +
|-
 +
| <code>LoadCount:Word;</code>
 +
| Sector Count. This is the number of virtual/emulated sectors the system will store at Load Segment during the initial boot procedure
 +
|-
 +
| <code>LoadRBA:LongWord;</code>
 +
| Load RBA. This is the start address of the virtual disk. CDs use Relative/Logical block addressing
 +
|-
 +
| <code>SelectionType:Byte;</code>
 +
| Selection criteria type. 0 - No selection criteria, 1- Language and Version Information (IBM), 2-FF - Reserved
 +
|-
 +
| <code>SelectionData:array[0..18] of Byte;</code>
 +
| Vendor unique selection criteria
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''EL TORITO section extension''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PELTORITOSectionExtension = ^TELTORITOSectionExtension;</code>
 +
 
 +
<code>TELTORITOSectionExtension = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 32 Bytes
 +
|-
 +
| <code>ExtensionIndicator:Byte;</code>
 +
| Extension Indicator. Must be 44
 +
|-
 +
| <code>ExtensionFlag:Byte;</code>
 +
| Bits 1-4 - Unused, Bit 5 (1 = Extension Record follows, 0 = This is final Extension), Bits 6-7 - Unused
 +
|-
 +
| <code>SelectionData:array[0..29] of Byte;</code>
 +
| Vendor unique selection criteria
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''EL TORITO volume descriptor boot''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PELTORITOVolumeDescriptorBoot = ^TELTORITOVolumeDescriptorBoot;</code>
 +
 
 +
<code>TELTORITOVolumeDescriptorBoot = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: 2048 Bytes
 +
|-
 +
| <code>DescriptorType:Byte;</code>
 +
| Boot Record Indicator, must be 0
 +
|-
 +
| <code>StandardIdentifier:array[0..4] of Char;</code>
 +
| ISO-9660 Identifier, must be 'CD001'
 +
|-
 +
| <code>DescriptorVersion:Byte;</code>
 +
| Version of this descriptor, must be 1
 +
|-
 +
| <code>SystemIdentifier:array[0..31] of Char;</code>
 +
| Boot System Identifier, must be 'EL TORITO SPECIFICATION' padded with 0s
 +
|-
 +
| <code>Reserved1:array[0..31] of Byte;</code>
 +
| Unused, must be 0
 +
|-
 +
| <code>CatalogStart:LongWord;</code>
 +
| Absolute pointer to first sector of Boot Catalog
 +
|-
 +
| <code>Reserved2:array[0..1972] of Byte;</code>
 +
| Unused, must be 0
 +
|-
 +
|}
 +
</div></div> 
 +
<br />
 +
 
 +
=== Class definitions ===
 +
----
 +
 
 +
 
 +
'''CDFS specific classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSRecognizer|<code>TCDFSRecognizer = class(TRecognizer)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSFormatter|<code>TCDFSFormatter = class(TDiskFormatter)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSResizer|<code>TCDFSResizer = class(TDiskResizer)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSCopier|<code>TCDFSCopier = class(TDiskCopier)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSFileSystem|<code>TCDFSFileSystem = class(TFileSystem)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSDiskTable|<code>TCDFSDiskTable = class(TDiskTable)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSDiskBlock|<code>TCDFSDiskBlock = class(TDiskBlock)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSDiskEntry|<code>TCDFSDiskEntry = class(TDiskEntry)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSDiskCatalog|<code>TCDFSDiskCatalog = class(TDiskCatalog)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSDiskPath|<code>TCDFSDiskPath = class(TListObject)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSDiskExtended|<code>TCDFSDiskExtended = class(TObject)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSDiskDescriptor|<code>TCDFSDiskDescriptor = class(TListObject)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSDiskHeader|<code>TCDFSDiskHeader = class(TListObject)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TCDFSDiskExtension|<code>TCDFSDiskExtension = class(TListObject)</code>]]
 +
|-
 +
|}
 +
<br /> 
  
 
=== Public variables ===
 
=== Public variables ===
 
----
 
----
  
''To be documented''
+
''None defined''
  
 
=== Function declarations ===
 
=== Function declarations ===
 
----
 
----
  
''To be documented''
 
  
 +
'''Initialization functions'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">procedure CDFSInit;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">procedure CDFSQuit;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
 +
'''CDFS helper functions'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function CDFSDataToPointer(const AData; ASize:Integer; ASwap:Boolean):Pointer;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Creates a pointer and copies data from a buffer</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Allows byte order swapping on copy
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function CDFSPointerToData(APointer:Pointer; var AData; ASize:Integer; ASwap:Boolean):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Copies data to a buffer from supplied pointer</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Allows byte order swapping on copy
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function CDFSIdentifierToString(const AIdentifier; ASize:Integer; AUnicode:Boolean):String;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Converts the supplied indentifier to a string</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Accounts for unicode and byte ordering
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function CDFSStringToIdentifier(const AString:String; var AIdentifier; ASize:Integer; AUnicode:Boolean):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Converts the supplied string to an identifier</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Accounts for unicode and byte ordering
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function CDFSIdentifierToFileName(const AIdentifier; ASize:Integer; AUnicode:Boolean):String;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Converts the supplied identifier to a filename</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Accounts for dot and dot dot special entries
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function CDFSFileNameToIdentifier(const AFileName:String; var AIdentifier; ASize:Integer; AUnicode:Boolean):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Converts the supplied filename to an identifier</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Accounts for dot and dot dot special entries
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function CDFSTimeToFileTime(const ATime:TCDFSTime):TFileTime;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Converts a CDFS Time in Local to a File Time in UTC</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function FileTimeToCDFSTime(const AFileTime:TFileTime; var ATime:TCDFSTime):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Converts a File Time in UTC to a CDFS Time in Local</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function CDFSDateTimeToFileTime(const ADateTime:TCDFSDateTime):TFileTime;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Converts a CDFS Date Time in Local to a File Time in UTC</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function FileTimeToCDFSDateTime(const AFileTime:TFileTime; var ADateTime:TCDFSDateTime):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Converts a File Time in UTC to a CDFS Date Time in Local</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
Return to [[Unit_Reference|Unit Reference]]
 
Return to [[Unit_Reference|Unit Reference]]

Latest revision as of 05:35, 31 August 2021

Return to Unit Reference


Description


Ultibo CDFS Interface unit

Constants



[Expand]
CDFS specific constants cdfs*


[Expand]
CDFS bitmap mask cdfsBitmapMask*


[Expand]
CDFS volume flag cdfsVolumeFlag*


[Expand]
CDFS file flag cdfsFileFlag*


[Expand]
CDFS permissions cdfsPermission*


[Expand]
CDFS path table cdfsPathTable*


[Expand]
CDFS volume descriptor cdfsVolumeDescriptor*


[Expand]
CDFS header cdfsElTorito*


[Expand]
CDFS signature cdfsElToritoSignature*


[Expand]
CDFS platform Id cdfsElToritoPlatform*


[Expand]
CDFS media type cdfsElToritoMedia*


[Expand]
CDFS extension flag cdfsElToritoExtensionFlag*


Type definitions



CDFS specific types

TCDFSType = (ctNONE,ctISO9660,ctJOLIET,ctSIERRA,ctROCKRIDGE,ctAUDIO,ctUDF);

CDFS time

[Expand]

PCDFSTime = ^TCDFSTime;

TCDFSTime = packed record

CDFS date time

[Expand]

PCDFSDateTime = ^TCDFSDateTime;

TCDFSDateTime = packed record

CDFS directory record

[Expand]

PCDFSDirectoryRecord = ^TCDFSDirectoryRecord;

TCDFSDirectoryRecord = packed record

CDFS path record

[Expand]

PCDFSPathRecord = ^TCDFSPathRecord;

TCDFSPathRecord = packed record

CDFS extended record

[Expand]

PCDFSExtendedRecord = ^TCDFSExtendedRecord;

TCDFSExtendedRecord = packed record

CDFS volume descriptor header

[Expand]

PCDFSVolumeDescriptorHeader = ^TCDFSVolumeDescriptorHeader;

TCDFSVolumeDescriptorHeader = packed record

CDFS volume descriptor boot

[Expand]

PCDFSVolumeDescriptorBoot = ^TCDFSVolumeDescriptorBoot;

TCDFSVolumeDescriptorBoot = packed record

CDFS volume descriptor primary

[Expand]

PCDFSVolumeDescriptorPrimary = ^TCDFSVolumeDescriptorPrimary;

TCDFSVolumeDescriptorPrimary = packed record

CDFS volume descriptor supplementary

[Expand]

PCDFSVolumeDescriptorSupplementary = ^TCDFSVolumeDescriptorSupplementary;

TCDFSVolumeDescriptorSupplementary = packed record

CDFS volume descriptor partition

[Expand]

PCDFSVolumeDescriptorPartition = ^TCDFSVolumeDescriptorPartition;

TCDFSVolumeDescriptorPartition = packed record

CDFS volume descriptor terminator

[Expand]

PCDFSVolumeDescriptorTerminator = ^TCDFSVolumeDescriptorTerminator;

TCDFSVolumeDescriptorTerminator = packed record

EL TORITO validation record

[Expand]

PELTORITOValidationRecord = ^TELTORITOValidationRecord;

TELTORITOValidationRecord = packed record

EL TORITO default record

[Expand]

PELTORITODefaultRecord = ^TELTORITODefaultRecord;

TELTORITODefaultRecord = packed record

EL TORITO section header

[Expand]

PELTORITOSectionHeader = ^TELTORITOSectionHeader;

TELTORITOSectionHeader = packed record

EL TORITO section record

[Expand]

PELTORITOSectionRecord = ^TELTORITOSectionRecord;

TELTORITOSectionRecord = packed record

EL TORITO section extension

[Expand]

PELTORITOSectionExtension = ^TELTORITOSectionExtension;

TELTORITOSectionExtension = packed record

EL TORITO volume descriptor boot

[Expand]

PELTORITOVolumeDescriptorBoot = ^TELTORITOVolumeDescriptorBoot;

TELTORITOVolumeDescriptorBoot = packed record


Class definitions



CDFS specific classes

TCDFSRecognizer = class(TRecognizer)
TCDFSFormatter = class(TDiskFormatter)
TCDFSResizer = class(TDiskResizer)
TCDFSCopier = class(TDiskCopier)
TCDFSFileSystem = class(TFileSystem)
TCDFSDiskTable = class(TDiskTable)
TCDFSDiskBlock = class(TDiskBlock)
TCDFSDiskEntry = class(TDiskEntry)
TCDFSDiskCatalog = class(TDiskCatalog)
TCDFSDiskPath = class(TListObject)
TCDFSDiskExtended = class(TObject)
TCDFSDiskDescriptor = class(TListObject)
TCDFSDiskHeader = class(TListObject)
TCDFSDiskExtension = class(TListObject)


Public variables


None defined

Function declarations



Initialization functions

[Expand]
procedure CDFSInit;
Description: To be documented


[Expand]
procedure CDFSQuit;
Description: To be documented


CDFS helper functions

[Expand]
function CDFSDataToPointer(const AData; ASize:Integer; ASwap:Boolean):Pointer;
Description: Creates a pointer and copies data from a buffer


[Expand]
function CDFSPointerToData(APointer:Pointer; var AData; ASize:Integer; ASwap:Boolean):Boolean;
Description: Copies data to a buffer from supplied pointer


[Expand]
function CDFSIdentifierToString(const AIdentifier; ASize:Integer; AUnicode:Boolean):String;
Description: Converts the supplied indentifier to a string


[Expand]
function CDFSStringToIdentifier(const AString:String; var AIdentifier; ASize:Integer; AUnicode:Boolean):Boolean;
Description: Converts the supplied string to an identifier


[Expand]
function CDFSIdentifierToFileName(const AIdentifier; ASize:Integer; AUnicode:Boolean):String;
Description: Converts the supplied identifier to a filename


[Expand]
function CDFSFileNameToIdentifier(const AFileName:String; var AIdentifier; ASize:Integer; AUnicode:Boolean):Boolean;
Description: Converts the supplied filename to an identifier


[Expand]
function CDFSTimeToFileTime(const ATime:TCDFSTime):TFileTime;
Description: Converts a CDFS Time in Local to a File Time in UTC


[Expand]
function FileTimeToCDFSTime(const AFileTime:TFileTime; var ATime:TCDFSTime):Boolean;
Description: Converts a File Time in UTC to a CDFS Time in Local


[Expand]
function CDFSDateTimeToFileTime(const ADateTime:TCDFSDateTime):TFileTime;
Description: Converts a CDFS Date Time in Local to a File Time in UTC


[Expand]
function FileTimeToCDFSDateTime(const AFileTime:TFileTime; var ADateTime:TCDFSDateTime):Boolean;
Description: Converts a File Time in UTC to a CDFS Date Time in Local


Return to Unit Reference