Some notes of the format of DL files:
DL file format:
All offsets are relative to the start of the section they are in.
All fileds are uint32 (4 bytes) unless otherwise specified. All other fields are aligned on 4 bytes boundries.
Header Section
Magic
File Format Version Number
Auth Section Offset
Schema Section Offset
Auth Section
Auth Info Size
Auth Info Data
Schema Section # This section is always read entirely into memory
Schema Section Size (uint32)
Tables
Table Count (uint32)
Table Offset 0 # Relative to start of Schema Section
Table Offset 1
...
Table Offset N
# Information about parsing modules is read directly from the meta tables
Table Section
Table Section Size
Table ID (uint32)
Records Count # Number of Records in record section.
Record 0 Offset # Relative to start of Table Section.
Index SubSection Offset # Relative to start of Table Section
Head of Free List # Table Section relative first free
# recordNumber slot (with bit 0 set)
# Or 0 if there are no free records
Record Number Count # Start of range of unused record numbers
Record 0 offset # Relative to start of Table Section.
Record 1 offset
Record 2 freelist # If Bit zero is set this is Table Section
# relative offset to next free recordNumber
# 0 indicates the last free record slot.
...
Record n offset
Record
Record Size # Rounded up to nearest mulitple of 4
Record Number
Creation File Version
Record Version
Data Size
SemanticInformation
Attribute 0 Offset
Attribute 1 Offset
Attribute 2 Offset
...
Attribute m Offset
Data
Data
Attribute 0
Size
Data
Attribute 1
Value
...
Attribute m
Value Count
Value 0
Value 1
...
Value p
Record
...
Record
Index SubSection
Index SubSection Size
Index TOC # This is part of the Schema
Record Type
Attribute Type
Index Offset
Index 1
Index Size
Index Offsets
Index Offset Count
Index Data 1 Offset
Index Data 2 Offset
...
Index Data m OFFSET
Index Data
Index Data 1
Record Offset
Attribute Size
Attribute Data
Index Data 2
...
Index Data N
Index 2
...
Index n
Version Section # Maintained by AtomicFile code
4 byte version number
old Schema Section # This section is always read entirely into memory
Schema Section Size (uint32)
Releations
Relation Count (uint32)
Relation
Relation ID (uint32)
Record Section Offset
Relation Name Size
Relation Name Data
Attributes
Attribute Count (uint32)
Attribute
Releation ID (uint32)
Attribute ID (uint32)
Attribute Format (uint32)
Attribute Name Format (uint32)
Attribute Name Size
Attribute Name Data
Attribute Name ID Size
Attribute Name ID Data
ParsingModule
Parsion Module Present (bool)
Module ID (GUID)
SSID (uint32)
SubService Type (uint32)
Addin Version Major (uint32)
Addin Version Minor (uint32)
Attribute
...
Attribute
Indexes
Index Count (uint32)
Index
Relation ID (uint32)
Index ID (uint32)
Index Type (uint32)
Indexed Data Location (uint32)
Index Attribute Count (uint32)
Attribute ID (uint32)
Attribute ID (uint32)
...
Attribute ID (uint32)
Index
...
Index
Relation
...
Relation