diff --git a/BurnOutSharp.Models/LinearExecutable/Executable.cs b/BurnOutSharp.Models/LinearExecutable/Executable.cs
index 504b9d98..e1d62628 100644
--- a/BurnOutSharp.Models/LinearExecutable/Executable.cs
+++ b/BurnOutSharp.Models/LinearExecutable/Executable.cs
@@ -49,7 +49,10 @@ namespace BurnOutSharp.Models.LinearExecutable
///
public ModuleFormatDirectivesTableEntry[] ModuleFormatDirectivesTable { get; set; }
- // TODO: Verify Record directives table
+ ///
+ /// Verify record directive table (optional)
+ ///
+ public VerifyRecordDirectiveTableEntry[] VerifyRecordDirectiveTable { get; set; }
///
/// Per-Page checksum table
diff --git a/BurnOutSharp.Models/LinearExecutable/VerifyRecordDirectiveTableEntry.cs b/BurnOutSharp.Models/LinearExecutable/VerifyRecordDirectiveTableEntry.cs
new file mode 100644
index 00000000..f399a93c
--- /dev/null
+++ b/BurnOutSharp.Models/LinearExecutable/VerifyRecordDirectiveTableEntry.cs
@@ -0,0 +1,85 @@
+using System.Runtime.InteropServices;
+
+namespace BurnOutSharp.Models.LinearExecutable
+{
+ ///
+ /// The Verify Record Directive Table is an optional table. It maintains a record
+ /// of the pages in the EXE file that have been fixed up and written back to the
+ /// original linear EXE module, along with the module dependencies used to perform
+ /// these fixups. This table provides an efficient means for verifying the virtual
+ /// addresses required for the fixed up pages when the module is loaded.
+ ///
+ ///
+ ///
+ [StructLayout(LayoutKind.Sequential)]
+ public class VerifyRecordDirectiveTableEntry
+ {
+ ///
+ /// Number of module dependencies.
+ ///
+ ///
+ /// This field specifies how many entries there are in the verify record
+ /// directive table. This is equal to the number of modules referenced by
+ /// this module.
+ ///
+ public ushort EntryCount;
+
+ ///
+ /// Ordinal index into the Import Module Name Table.
+ ///
+ ///
+ /// This value is an ordered index in to the Import Module Name Table for
+ /// the referenced module.
+ ///
+ public ushort OrdinalIndex;
+
+ ///
+ /// Module Version.
+ ///
+ ///
+ /// This is the version of the referenced module that the fixups were
+ /// originally performed.This is used to insure the same version of the
+ /// referenced module is loaded that was fixed up in this module and
+ /// therefore the fixups are still correct. This requires the version
+ /// number in a module to be incremented anytime the entry point offsets
+ /// change.
+ ///
+ public ushort Version;
+
+ ///
+ /// Module # of Object Entries.
+ ///
+ ///
+ /// This field is used to identify the number of object verify entries
+ /// that follow for the referenced module.
+ ///
+ public ushort ObjectEntriesCount;
+
+ ///
+ /// Object # in Module.
+ ///
+ ///
+ /// This field specifies the object number in the referenced module that
+ /// is being verified.
+ ///
+ public ushort ObjectNumberInModule;
+
+ ///
+ /// Object load base address.
+ ///
+ ///
+ /// This is the address that the object was loaded at when the fixups were
+ /// performed.
+ ///
+ public ushort ObjectLoadBaseAddress;
+
+ ///
+ /// Object virtual address size.
+ ///
+ ///
+ /// This field specifies the total amount of virtual memory required for
+ /// this object.
+ ///
+ public ushort ObjectVirtualAddressSize;
+ }
+}