Unit CDFS

From Ultibo.org
Revision as of 05:35, 31 August 2021 by Ultibo (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Return to Unit Reference


Description


Ultibo CDFS Interface unit

Constants



CDFS specific constants cdfs*
cdfsIso9660 = 0;  
cdfsJoilet = 1;  
cdfsSierra = 2;  
cdfsRockRidge = 3;  
cdfsAudio = 4;  
cdfsUDF = 5;  
 
cdfsAnyName = '*';  
cdfsDotName = '.';  
cdfsDotDotName = '..';  
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 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 cdfsVolumeFlag*
cdfsVolumeFlagNone = $00;  
cdfsVolumeFlagUnregistered = $01; If set this SVD contains an unregistered escape sequence


CDFS file flag 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 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 cdfsPathTable*
cdfsPathTableTypePrimary = $00;  
cdfsPathTableTypeAlternate = $01;  
cdfsPathTableTypePrimaryM = $02;  
cdfsPathTableTypeAlternateM = $03;  


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


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


CDFS signature cdfsElToritoSignature*
cdfsElToritoSignature = $AA55;  


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


CDFS media type 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 cdfsElToritoExtensionFlag*
cdfsElToritoExtensionFlagExtension = $20; Extension Record Follows


Type definitions



CDFS specific types

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

CDFS time

PCDFSTime = ^TCDFSTime;

TCDFSTime = packed record

Note: 7 Bytes
Years:Byte; Number of years since 1900
Month:Byte; Month of the year from 1 to 12
Day:Byte; Day of the month from 1 to 31
Hour:Byte; Hour of the day from 0 to 23
Minute:Byte; Minute of the hour from 0 to 59
Second:Byte; Second of the minute from 0 to 59
Offset:ShortInt; Offset from Greenwich Mean Time in number of 15 min intervals from -48 (West) to +52 (East)

CDFS date time

PCDFSDateTime = ^TCDFSDateTime;

TCDFSDateTime = packed record

Note: 17 Bytes
Year:array[0..3] of Char; Year from 1 to 9999
Month:array[0..1] of Char; Month of the year from 1 to 12
Day:array[0..1] of Char; Day of the month from 1 to 31
Hour:array[0..1] of Char; Hour of the day from 0 to 23
Minute:array[0..1] of Char; Minute of the hour from 0 to 59
Second:array[0..1] of Char; Second of the minute from 0 to 59
Hundredths:array[0..1] of Char; Hundredths of a second
Offset:ShortInt; Offset from Greenwich Mean Time in number of 15 min intervals from -48 (West) to +52 (East)

CDFS directory record

PCDFSDirectoryRecord = ^TCDFSDirectoryRecord;

TCDFSDirectoryRecord = packed record

Note: 34 Bytes (Minimum not including padding)
RecordSize:Byte; Length of Directory Record (LEN-DR)
ExtendedSize:Byte; Extended Attribute Record Length
FirstBlock:LongWord; Location of Extent
FirstBlockM:LongWord;  
DataSize:LongWord; Data Length
DataSizeM:LongWord;  
CreateTime:TCDFSTime; Recording Date and Time
FileFlags:Byte; File Flags 8 bits
UnitSize:Byte; File Unit Size
InterleaveSize:Byte; Interleave Gap Size
SequenceNumber:Word; Volume Sequence Number
SequenceNumberM:Word;  
FileIdentifierSize:Byte; Length of File Identifier (LEN_FI)
FileIdentifier:array[0..0] of Char; File Identifier d-characters,d1-characters,SEPARATOR 1,SEPARATOR 2,(00) or (01) byte
Padding:Byte; Padding Field (00) byte (Only present if FileIdentifierSize is even (Total size would be odd))
SystemData:array[0..0] of Byte; System Use LEN_SU bytes

CDFS path record

PCDFSPathRecord = ^TCDFSPathRecord;

TCDFSPathRecord = packed record

Note: 9 Bytes (Minimum not including padding)
PathIdentifierSize:Byte; Length of Directory Identifier (LEN_DI)
ExtendedSize:Byte; Extended Attribute Record Length
FirstBlock:LongWord; Location of Extent
ParentNumber:Word; Parent Directory Number
PathIdentifier:array[0..0] of Char; Directory Identifier d-characters, d1-characters, (00) byte
Padding:Byte; Padding Field (00) byte (Only present if PathIdentifierSize is odd (Total size would be odd))

CDFS extended record

PCDFSExtendedRecord = ^TCDFSExtendedRecord;

TCDFSExtendedRecord = packed record

Note: 250 Bytes (Minimum)
OwnerId:Word; Owner Identification
OwnerIdM:Word;  
GroupId:Word; Group Identification
GroupIdM:Word;  
Permissions:Word; Permissions 16 bits
CreateTime:TCDFSDateTime; File Creation Date and Time
ModifyTime:TCDFSDateTime; File Modification Date and Time
ExpireTime:TCDFSDateTime; File Expiration Date and Time
EffectiveTime:TCDFSDateTime; File Effective Date and Time
RecordFormat:Byte; Record Format
RecordAttributes:Byte; Record Attributes
RecordLength:Word; Record Length
RecordLengthM:Word;  
SystemIdentifier:array[0..31] of Char; System Identifier a-characters, a1-characters
SystemData:array[0..63] of Byte; System Use not specified
ExtendedVersion:Byte; Extended Attribute Record Version
EscapeSequenceSize:Byte; Length of Escape Sequences (LEN_ESC)
Reserved1:array[0..63] of Byte; Reserved for future standardization (00) bytes
ApplicationDataSize:Word; Length of Application Use (LEN_AU)
ApplicationDataSizeM:Word;  
ApplicationData:array[0..0] of Byte; Application Use LEN_AU bytes
EscapeSequence:array[0..0] of Byte; Escape Sequences LEN_ESC bytes

CDFS volume descriptor header

PCDFSVolumeDescriptorHeader = ^TCDFSVolumeDescriptorHeader;

TCDFSVolumeDescriptorHeader = packed record

Note: 2048 Bytes
DescriptorType:Byte; Descriptor Type 00 = Boot, 01 = Primary etc
StandardIdentifier:array[0..4] of Char; Standard Identifier ('CD001')
DescriptorVersion:Byte; Descriptor Version (1)
Reserved:array[0..2040] of Byte; Content depends on Descriptor Type

CDFS volume descriptor boot

PCDFSVolumeDescriptorBoot = ^TCDFSVolumeDescriptorBoot;

TCDFSVolumeDescriptorBoot = packed record

Note: 2048 Bytes
DescriptorType:Byte; Descriptor Type (00 = Boot)
StandardIdentifier:array[0..4] of Char; Standard Identifier ('CD001')
DescriptorVersion:Byte; Descriptor Version (1)
SystemIdentifier:array[0..31] of Char; 32 a-characters (eg EL TORITO SPECIFICATION)
BootIdentifier:array[0..31] of Char; 32 a-characters
BootData:array[0..1976] of Byte;  

CDFS volume descriptor primary

PCDFSVolumeDescriptorPrimary = ^TCDFSVolumeDescriptorPrimary;

TCDFSVolumeDescriptorPrimary = packed record

Note: 2048 Bytes
DescriptorType:Byte; Descriptor Type (01 = Primary)
StandardIdentifier:array[0..4] of Char; Standard Identifier ('CD001')
DescriptorVersion:Byte; Descriptor Version (1)
Reserved1:Byte; Unused Field (00) byte
SystemIdentifier:array[0..31] of Char; System Identifier a-characters
VolumeIdentifier:array[0..31] of Char; Volume Identifier d-characters
Reserved2:array[0..7] of Byte; Unused Field (00) bytes
VolumeSpaceSize:LongWord; Volume Space Size
VolumeSpaceSizeM:LongWord;  
Reserved3:array[0..31] of Byte; Unused Field (00) bytes
VolumeSetSize:Word; Volume Set Size
VolumeSetSizeM:Word;  
VolumeSequenceNumber:Word; Volume Sequence Number
VolumeSequenceNumberM:Word;  
LogicalBlockSize:Word; Logical Block Size
LogicalBlockSizeM:Word;  
PathTableSize:LongWord; Path Table Size
PathTableSizeM:LongWord;  
PrimaryPathTable:LongWord; Location of Occurrence of Type L Path Table
AlternatePathTable:LongWord; Location of Optional Occurrence of Type L Path Table
PrimaryPathTableM:LongWord; Location of Occurrence of Type M Path Table
AlternatePathTableM:LongWord; Location of Optional Occurrence of Type M Path Table
RootDirectory:TCDFSDirectoryRecord; Directory Record for Root Directory 34 bytes
VolumeSetIdentifier:array[0..127] of Char; Volume Set Identifier d-characters
PublisherIdentifier:array[0..127] of Char; Publisher Identifier a-characters
PreparerIdentifier:array[0..127] of Char; Data Preparer Identifier a-characters
ApplicationIdentifier:array[0..127] of Char; Application Identifier a-characters
CopyrightIdentifier:array[0..36] of Char; Copyright File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
AbstractIdentifier:array[0..36] of Char; Abstract File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
BibliographicIdentifier:array[0..36] of Char; Bibliographic File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
CreateTime:TCDFSDateTime; Volume Creation Date and Time
ModifyTime:TCDFSDateTime; Volume Modification Date and Time
ExpireTime:TCDFSDateTime; Volume Expiration Date and Time
EffectiveTime:TCDFSDateTime; Volume Effective Date and Time
FileStructureVersion:Byte; File Structure Version
Reserved4:Byte; Reserved for future standardization (00) byte
ApplicationData:array[0..511] of Byte; Application Use not specified
Reserved5:array[0..652] of Byte; Reserved for future standardization (00) bytes

CDFS volume descriptor supplementary

PCDFSVolumeDescriptorSupplementary = ^TCDFSVolumeDescriptorSupplementary;

TCDFSVolumeDescriptorSupplementary = packed record

Note: 2048 Bytes
DescriptorType:Byte; Descriptor Type (02 = Supplementary)
StandardIdentifier:array[0..4] of Char; Standard Identifier ('CD001')
DescriptorVersion:Byte; Descriptor Version (1)
VolumeFlags:Byte; Volume Flags 8 bits
SystemIdentifier:array[0..31] of Char; System Identifier a-characters
VolumeIdentifier:array[0..31] of Char; Volume Identifier d-characters
Reserved2:array[0..7] of Byte; Unused Field (00) bytes
VolumeSpaceSize:LongWord; Volume Space Size
VolumeSpaceSizeM:LongWord;  
EscapeSequences:array[0..31] of Byte; Escape Sequences 32 bytes
VolumeSetSize:Word; Volume Set Size
VolumeSetSizeM:Word;  
VolumeSequenceNumber:Word; Volume Sequence Number
VolumeSequenceNumberM:Word;  
LogicalBlockSize:Word; Logical Block Size
LogicalBlockSizeM:Word;  
PathTableSize:LongWord; Path Table Size
PathTableSizeM:LongWord;  
PrimaryPathTable:LongWord; Location of Occurrence of Type L Path Table
AlternatePathTable:LongWord; Location of Optional Occurrence of Type L Path Table
PrimaryPathTableM:LongWord; Location of Occurrence of Type M Path Table
AlternatePathTableM:LongWord; Location of Optional Occurrence of Type M Path Table
RootDirectory:TCDFSDirectoryRecord; Directory Record for Root Directory 34 bytes
VolumeSetIdentifier:array[0..127] of Char; Volume Set Identifier d-characters
PublisherIdentifier:array[0..127] of Char; Publisher Identifier a-characters
PreparerIdentifier:array[0..127] of Char; Data Preparer Identifier a-characters
ApplicationIdentifier:array[0..127] of Char; Application Identifier a-characters
CopyrightIdentifier:array[0..36] of Char; Copyright File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
AbstractIdentifier:array[0..36] of Char; Abstract File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
BibliographicIdentifier:array[0..36] of Char; Bibliographic File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
CreateTime:TCDFSDateTime; Volume Creation Date and Time
ModifyTime:TCDFSDateTime; Volume Modification Date and Time
ExpireTime:TCDFSDateTime; Volume Expiration Date and Time
EffectiveTime:TCDFSDateTime; Volume Effective Date and Time
FileStructureVersion:Byte; File Structure Version
Reserved4:Byte; Reserved for future standardization (00) byte
ApplicationData:array[0..511] of Byte; Application Use not specified
Reserved5:array[0..652] of Byte; Reserved for future standardization (00) bytes

CDFS volume descriptor partition

PCDFSVolumeDescriptorPartition = ^TCDFSVolumeDescriptorPartition;

TCDFSVolumeDescriptorPartition = packed record

Note: 2048 Bytes
DescriptorType:Byte; Descriptor Type (03 = Partition)
StandardIdentifier:array[0..4] of Char; Standard Identifier ('CD001')
DescriptorVersion:Byte; Descriptor Version (1)
Reserved1:Byte; Unused Field (00) byte
SystemIdentifier:array[0..31] of Char; System Identifier a-characters
PartitionIdentifier:array[0..31] of Char; Volume Partition Identifier d-characters
PartitionStart:LongWord; Volume Partition Location (first Logical Block)
PartitionStartM:LongWord;  
PartitionSize:LongWord; Volume Partition Size (in Logical Blocks)
PartitionSizeM:LongWord;  
SystemData:array[0..1959] of Byte; System Use not specified

CDFS volume descriptor terminator

PCDFSVolumeDescriptorTerminator = ^TCDFSVolumeDescriptorTerminator;

TCDFSVolumeDescriptorTerminator = packed record

Note: 2048 Bytes
DescriptorType:Byte; Descriptor Type (FF = Terminator)
StandardIdentifier:array[0..4] of Char; Standard Identifier ('CD001')
DescriptorVersion:Byte; Descriptor Version (1)
Reserved:array[0..2040] of Byte; Reserved (Always 00)

EL TORITO validation record

PELTORITOValidationRecord = ^TELTORITOValidationRecord;

TELTORITOValidationRecord = packed record

Note: 32 Bytes
HeaderId:Byte; Header ID, must be 01
PlatformId:Byte; Platform ID 0 = 80x86, 1 = PowerPC, 2 = Mac
Reserved1:Word; Reserved, must be 0
VendorId:array[0..23] of Char; ID string. This is intended to identify the manufacturer/developer of the CD-ROM
Checksum:Word; Checksum Word. This sum of all the words in this record should be 0
Signature:Word; Key byte, must be 55. Key byte, must be AA. This value is included in the checksum

EL TORITO default record

PELTORITODefaultRecord = ^TELTORITODefaultRecord;

TELTORITODefaultRecord = packed record

Note: 32 Bytes
BootIndicator:Byte; Boot Indicator. 88 = Bootable, 00 = Not Bootable
BootMedia:Byte; Boot media type. This specifies what media the boot image is intended to emulate
LoadSegment:Word; This is the load segment for the initial boot image. If this value is 0 the system will use the traditional segment of 7C0
SystemType:Byte; This must be a copy of byte 5 (System Type) from the Partition Table found in the boot image (PartitionId)
Reserved1:Byte; Unused, must be 0
LoadCount:Word; Sector Count. This is the number of virtual/emulated sectors the system will store at Load Segment during the initial boot procedure
LoadRBA:LongWord; Load RBA. This is the start address of the virtual disk. CDs use Relative/Logical block addressing
Reserved2:array[0..19] of Byte; {Unused, must be 0}  

EL TORITO section header

PELTORITOSectionHeader = ^TELTORITOSectionHeader;

TELTORITOSectionHeader = packed record

Note: 32 Bytes
HeaderIndicator:Byte; Header Indicator, 90 - Header, more headers follow, 91 - Final Header
PlatformId:Byte; Platform ID 0 = 80x86, 1 = PowerPC, 2 = Mac
SectionCount:Word; Number of section entries following this header
SectionId:array[0..27] of Char; ID string. This identifies a section

EL TORITO section record

PELTORITOSectionRecord = ^TELTORITOSectionRecord;

TELTORITOSectionRecord = packed record

Note: 32 Bytes
BootIndicator:Byte; Boot Indicator. 88 = Bootable, 00 = Not Bootable
BootMedia:Byte; Boot media type. This specifies what media the boot image emulates
LoadSegment:Word; 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
SystemType:Byte; System Type. This must be a copy of byte 5 (System Type) from the Partition Table found in the boot image (PartitionId)
Reserved1:Byte; Unused, must be 0
LoadCount:Word; Sector Count. This is the number of virtual/emulated sectors the system will store at Load Segment during the initial boot procedure
LoadRBA:LongWord; Load RBA. This is the start address of the virtual disk. CDs use Relative/Logical block addressing
SelectionType:Byte; Selection criteria type. 0 - No selection criteria, 1- Language and Version Information (IBM), 2-FF - Reserved
SelectionData:array[0..18] of Byte; Vendor unique selection criteria

EL TORITO section extension

PELTORITOSectionExtension = ^TELTORITOSectionExtension;

TELTORITOSectionExtension = packed record

Note: 32 Bytes
ExtensionIndicator:Byte; Extension Indicator. Must be 44
ExtensionFlag:Byte; Bits 1-4 - Unused, Bit 5 (1 = Extension Record follows, 0 = This is final Extension), Bits 6-7 - Unused
SelectionData:array[0..29] of Byte; Vendor unique selection criteria

EL TORITO volume descriptor boot

PELTORITOVolumeDescriptorBoot = ^TELTORITOVolumeDescriptorBoot;

TELTORITOVolumeDescriptorBoot = packed record

Note: 2048 Bytes
DescriptorType:Byte; Boot Record Indicator, must be 0
StandardIdentifier:array[0..4] of Char; ISO-9660 Identifier, must be 'CD001'
DescriptorVersion:Byte; Version of this descriptor, must be 1
SystemIdentifier:array[0..31] of Char; Boot System Identifier, must be 'EL TORITO SPECIFICATION' padded with 0s
Reserved1:array[0..31] of Byte; Unused, must be 0
CatalogStart:LongWord; Absolute pointer to first sector of Boot Catalog
Reserved2:array[0..1972] of Byte; Unused, must be 0


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

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