Difference between revisions of "Unit CDFS"

From Ultibo.org
Jump to: navigation, search
Line 10: Line 10:
 
----
 
----
  
''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;
 +
|-
 +
|colspan="2"|<code>cdfsNames:array[0..5] of String = (</code>
 +
|-
 +
| <code>'CD001',</code>
 +
| &nbsp;
 +
|-
 +
| <code>'CD001',</code>
 +
| &nbsp;
 +
|-
 +
| <code>'CDROM',</code>
 +
| &nbsp;
 +
|-
 +
| <code>'',</code>
 +
| &nbsp;
 +
|-
 +
| <code>'CDAUDIO',</code>
 +
| &nbsp;
 +
|-
 +
| <code>'');</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>cdfsAnyName = '*';</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsDotName = '.';</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsDotDotName = '..';</code>
 +
| &nbsp;
 +
|-
 +
| <code>cdfsBlankName = '';</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 constants''' <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 constants''' <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 constants''' <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 constants''' <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 constants''' <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 constants''' <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 constants''' <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 constants''' <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 constants''' <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 constants''' <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; {No Emulation}</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <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 constants''' <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 ===

Revision as of 01:19, 9 December 2016

Return to Unit Reference


Description


To be documented

Constants



CDFS specific constants cdfs*
cdfsIso9660 = 0;  
cdfsJoilet = 1;  
cdfsSierra = 2;  
cdfsRockRidge = 3;  
cdfsAudio = 4;  
cdfsUDF = 5;  
 
cdfsNames:array[0..5] of String = (
'CD001',  
'CD001',  
'CDROM',  
,  
'CDAUDIO',  
);  
 
cdfsAnyName = '*';  
cdfsDotName = '.';  
cdfsDotDotName = '..';  
cdfsBlankName = ;  
cdfsVersionName = '1'; Used by version information on end of identifier (Not Used)
cdfsSeparator1Name = '.'; Dot on end of identifier when no extension exists (File only)
cdfsSeparator2Name = ';'; Used by version information on end of identifier (File only)
 
cdfsJolietMaxPath = 240; 120 (240 bytes)
cdfsJolietMaxFile = 64; (128 bytes)
cdfsISO9660MaxPath = 240;  
cdfsISO9660MaxFile = 30; 31 for Directories
 
cdfsISO9660StandardIdentifier = 'CD001';  
cdfsELTORITOSystemIdentifier = 'EL TORITO SPECIFICATION';  
 
cdfsFirstSector = 0;  
cdfsReservedSectors = 16;  
cdfsISO9660StartSector = 16;  
cdfsELTORITOBootSector = 17;  
 
cdfsISO9660StructureVersion = 1;  
cdfsISO9660DescriptorVersion = 1;  
cdfsELTORITODescriptorVersion = 1;  
 
cdfsJolietUCS2Sequence1 = #37 + #47 + #64; '%/@'
cdfsJolietUCS2Sequence2 = #37 + #47 + #67; '%/C'
cdfsJolietUCS2Sequence3 = #37 + #47 + #69; '%/E'
 
cdfsDotIdentifier = $00;  
cdfsDotDotIdentifier = $01;  
 
cdfsSeparator1Value = $2E; '.'
cdfsSeparator2Value = $3B; ';'
 
cdfsTimeStartYear = 1900; CDFS Time starts at 1900
cdfsTimeOffsetInterval = 15; Offset is in 15 minute intervals
 
cdfsNullFileTime:TFileTime = (dwLowDateTime:$00000000;dwHighDateTime:$00000000);  
 
cdfsStartCluster = 16;  
cdfsUnknownCluster = LongWord(-1);  
 
cdfsRootPathNumber = 1;  
 
cdfsPathRecordSize = 9; Minimum
cdfsExtendedRecordSize = 250; Minimum
cdfsDirectoryRecordSize = 34; Minimum
 
cdfsFileIdentifierSize = 1; Minimum
cdfsPathIdentifierSize = 1; Minimum
 
cdfsHeaderRecordSize = 32; Fixed
cdfsCatalogRecordSize = 32; Fixed
cdfsExtensionRecordSize = 32; Fixed
 
cdfsEvenSize = 0;  
cdfsUnevenSize = 1;  
 
cdfsRootRecordOffset = 156; Offset of Root Directory in Descriptor
 
cdfsInstanceFirst = 0;  
cdfsInstanceLast = Byte(-1);  
 
cdfsTableTypeMask = $00FF0000;  
cdfsTableTypeShift = 16;  
cdfsTableInstanceMask = $0000FF00;  
cdfsTableInstanceShift = 8;  
cdfsTableDescriptorMask = $000000FF;  
cdfsTableDescriptorShift = 0;  
 
cdfsBitmapUnknown = LongWord(-1);  


CDFS bitmap mask constants cdfsBitmapMask*
cdfsBitmapMaskBits = 64; Int64 Bitmap Masks
cdfsBitmapMaskNone = $0000000000000000; Int64 Used for fast counting of free blocks
cdfsBitmapMaskAll = $FFFFFFFFFFFFFFFF; Int64 Used for fast counting of used blocks


CDFS volume flag constants cdfsVolumeFlag*
cdfsVolumeFlagNone = $00;  
cdfsVolumeFlagUnregistered = $01; If set this SVD contains an unregistered escape sequence


CDFS file flag constants cdfsFileFlag*
cdfsFileFlagNone = $00;  
cdfsFileFlagExistence = $01; If set this file is hidden
cdfsFileFlagDirectory = $02; If set this record is a directory
cdfsFileFlagAssociated = $04; If set this file is an associated file
cdfsFileFlagRecord = $08; If set record information is recorded for this file
cdfsFileFlagProtection = $10; If set permissions are recorded for this file
cdfsFileFlagReserved1 = $20; Reserved
cdfsFileFlagReserved2 = $40; Reserved
cdfsFileFlagMore = $80; If set there are more directory records for this file


CDFS permissions constants cdfsPermission*
cdfsPermissionSystemRead = $0001; If set system cannot Read
cdfsPermissionSystemWrite = $0002; If set system cannot Write
cdfsPermissionSystemExecute = $0004; If set system cannot Execute
cdfsPermissionReserved1 = $0008; Reserved
cdfsPermissionOwnerRead = $0010; If set owner cannot Read
cdfsPermissionOwnerWrite = $0020; If set owner cannot Write
cdfsPermissionOwnerExecute = $0040; If set owner cannot Execute
cdfsPermissionReserved2 = $0080; Reserved
cdfsPermissionGroupRead = $0100; If set group cannot Read
cdfsPermissionGroupWrite = $0200; If set group cannot Write
cdfsPermissionGroupExecute = $0400; If set group cannot Execute
cdfsPermissionReserved3 = $0800; Reserved
cdfsPermissionOtherRead = $1000; If set other cannot Read
cdfsPermissionOtherWrite = $2000; If set other cannot Write
cdfsPermissionOtherExecute = $4000; If set other cannot Execute
cdfsPermissionReserved4 = $8000; Reserved


CDFS path table constants cdfsPathTable*
cdfsPathTableTypePrimary = $00;  
cdfsPathTableTypeAlternate = $01;  
cdfsPathTableTypePrimaryM = $02;  
cdfsPathTableTypeAlternateM = $03;  


CDFS volume descriptor constants cdfsVolumeDescriptor*
cdfsVolumeDescriptorTypeBoot = $00;  
cdfsVolumeDescriptorTypePrimary = $01;  
cdfsVolumeDescriptorTypeSupplementary = $02;  
cdfsVolumeDescriptorTypePartition = $03;  
cdfsVolumeDescriptorTypeTerminator = $FF;  


CDFS header constants cdfsElTorito*
cdfsElToritoHeaderId = $01;  
cdfsElToritoBootIndicator = $88;  
cdfsElToritoNoBootIndicator = $00;  
cdfsElToritoHeaderIndicator = $90; 91 if final header
cdfsElToritoHeaderTerminator = $91;  
cdfsElToritoExtensionIndicator = $44;  


CDFS signature constants cdfsElToritoSignature*
cdfsElToritoSignature = $AA55;  


CDFS platform Id constants cdfsElToritoPlatform*
cdfsElToritoPlatformIdx86 = $00;  
cdfsElToritoPlatformIdPPC = $01;  
cdfsElToritoPlatformIdMac = $02;  


CDFS media type constants cdfsElToritoMedia*
cdfsElToritoMediaTypeNone = $00; {No Emulation}  
cdfsElToritoMediaType12M = $01; 1.2 meg diskette
cdfsElToritoMediaType144M = $02; 1.44 meg diskette
cdfsElToritoMediaType288M = $03; 2.88 meg diskette
cdfsElToritoMediaTypeHDD = $04; Hard Disk (drive 80)
cdfsElToritoMediaTypeMask = $0F; Values 5-F Reserved, invalid at this time
 
cdfsElToritoMediaFlagReserved = $10; Reserved, must be 0
cdfsElToritoMediaFlagContinuation = $20; Continuation Entry Follows
cdfsElToritoMediaFlagAtapi = $40; Image contains ATAPI driver
cdfsElToritoMediaFlagScsi = $80; Image contains SCSI drivers
cdfsElToritoMediaFlagMask = $F0;  


CDFS extension flag constants cdfsElToritoExtensionFlag*
cdfsElToritoExtensionFlagExtension = $20; Extension Record Follows


Type definitions


To be documented

Public variables


To be documented

Function declarations



Initialization functions

procedure CDFSInit;
Description: To be documented
Note None documented


procedure CDFSQuit;
Description: To be documented
Note None documented


CDFS helper functions

function CDFSDataToPointer(const AData; ASize:Integer; ASwap:Boolean):Pointer;
Description: Creates a pointer and copies data from a buffer
Note Allows byte order swapping on copy


function CDFSPointerToData(APointer:Pointer; var AData; ASize:Integer; ASwap:Boolean):Boolean;
Description: Copies data to a buffer from supplied pointer
Note Allows byte order swapping on copy


function CDFSIdentifierToString(const AIdentifier; ASize:Integer; AUnicode:Boolean):String;
Description: Converts the supplied indentifier to a string
Note Accounts for unicode and byte ordering


function CDFSStringToIdentifier(const AString:String; var AIdentifier; ASize:Integer; AUnicode:Boolean):Boolean;
Description: Converts the supplied string to an identifier
Note Accounts for unicode and byte ordering


function CDFSIdentifierToFileName(const AIdentifier; ASize:Integer; AUnicode:Boolean):String;
Description: Converts the supplied identifier to a filename
Note Accounts for dot and dot dot special entries


function CDFSFileNameToIdentifier(const AFileName:String; var AIdentifier; ASize:Integer; AUnicode:Boolean):Boolean;
Description: Converts the supplied filename to an identifier
Note Accounts for dot and dot dot special entries


function CDFSTimeToFileTime(const ATime:TCDFSTime):TFileTime;
Description: Converts a CDFS Time in Local to a File Time in UTC
Note None documented


function FileTimeToCDFSTime(const AFileTime:TFileTime; var ATime:TCDFSTime):Boolean;
Description: Converts a File Time in UTC to a CDFS Time in Local
Note None documented


function CDFSDateTimeToFileTime(const ADateTime:TCDFSDateTime):TFileTime;
Description: Converts a CDFS Date Time in Local to a File Time in UTC
Note None documented


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


Return to Unit Reference