+class FSP_PATCH_TABLE(Structure):\r
+ _fields_ = [\r
+ ('Signature', ARRAY(c_char, 4)),\r
+ ('HeaderLength', c_uint16),\r
+ ('HeaderRevision', c_uint8),\r
+ ('Reserved', c_uint8),\r
+ ('PatchEntryNum', c_uint32)\r
+ ]\r
+\r
+class EFI_IMAGE_DATA_DIRECTORY(Structure):\r
+ _fields_ = [\r
+ ('VirtualAddress', c_uint32),\r
+ ('Size', c_uint32)\r
+ ]\r
+\r
+class EFI_TE_IMAGE_HEADER(Structure):\r
+ _fields_ = [\r
+ ('Signature', ARRAY(c_char, 2)),\r
+ ('Machine', c_uint16),\r
+ ('NumberOfSections', c_uint8),\r
+ ('Subsystem', c_uint8),\r
+ ('StrippedSize', c_uint16),\r
+ ('AddressOfEntryPoint', c_uint32),\r
+ ('BaseOfCode', c_uint32),\r
+ ('ImageBase', c_uint64),\r
+ ('DataDirectoryBaseReloc', EFI_IMAGE_DATA_DIRECTORY),\r
+ ('DataDirectoryDebug', EFI_IMAGE_DATA_DIRECTORY)\r
+ ]\r
+\r
+class EFI_IMAGE_DOS_HEADER(Structure):\r
+ _fields_ = [\r
+ ('e_magic', c_uint16),\r
+ ('e_cblp', c_uint16),\r
+ ('e_cp', c_uint16),\r
+ ('e_crlc', c_uint16),\r
+ ('e_cparhdr', c_uint16),\r
+ ('e_minalloc', c_uint16),\r
+ ('e_maxalloc', c_uint16),\r
+ ('e_ss', c_uint16),\r
+ ('e_sp', c_uint16),\r
+ ('e_csum', c_uint16),\r
+ ('e_ip', c_uint16),\r
+ ('e_cs', c_uint16),\r
+ ('e_lfarlc', c_uint16),\r
+ ('e_ovno', c_uint16),\r
+ ('e_res', ARRAY(c_uint16, 4)),\r
+ ('e_oemid', c_uint16),\r
+ ('e_oeminfo', c_uint16),\r
+ ('e_res2', ARRAY(c_uint16, 10)),\r
+ ('e_lfanew', c_uint16)\r
+ ]\r
+\r
+class EFI_IMAGE_FILE_HEADER(Structure):\r
+ _fields_ = [\r
+ ('Machine', c_uint16),\r
+ ('NumberOfSections', c_uint16),\r
+ ('TimeDateStamp', c_uint32),\r
+ ('PointerToSymbolTable', c_uint32),\r
+ ('NumberOfSymbols', c_uint32),\r
+ ('SizeOfOptionalHeader', c_uint16),\r
+ ('Characteristics', c_uint16)\r
+ ]\r
+\r
+class PE_RELOC_BLOCK_HEADER(Structure):\r
+ _fields_ = [\r
+ ('PageRVA', c_uint32),\r
+ ('BlockSize', c_uint32)\r
+ ]\r
+\r
+class EFI_IMAGE_OPTIONAL_HEADER32(Structure):\r
+ _fields_ = [\r
+ ('Magic', c_uint16),\r
+ ('MajorLinkerVersion', c_uint8),\r
+ ('MinorLinkerVersion', c_uint8),\r
+ ('SizeOfCode', c_uint32),\r
+ ('SizeOfInitializedData', c_uint32),\r
+ ('SizeOfUninitializedData', c_uint32),\r
+ ('AddressOfEntryPoint', c_uint32),\r
+ ('BaseOfCode', c_uint32),\r
+ ('BaseOfData', c_uint32),\r
+ ('ImageBase', c_uint32),\r
+ ('SectionAlignment', c_uint32),\r
+ ('FileAlignment', c_uint32),\r
+ ('MajorOperatingSystemVersion', c_uint16),\r
+ ('MinorOperatingSystemVersion', c_uint16),\r
+ ('MajorImageVersion', c_uint16),\r
+ ('MinorImageVersion', c_uint16),\r
+ ('MajorSubsystemVersion', c_uint16),\r
+ ('MinorSubsystemVersion', c_uint16),\r
+ ('Win32VersionValue', c_uint32),\r
+ ('SizeOfImage', c_uint32),\r
+ ('SizeOfHeaders', c_uint32),\r
+ ('CheckSum' , c_uint32),\r
+ ('Subsystem', c_uint16),\r
+ ('DllCharacteristics', c_uint16),\r
+ ('SizeOfStackReserve', c_uint32),\r
+ ('SizeOfStackCommit' , c_uint32),\r
+ ('SizeOfHeapReserve', c_uint32),\r
+ ('SizeOfHeapCommit' , c_uint32),\r
+ ('LoaderFlags' , c_uint32),\r
+ ('NumberOfRvaAndSizes', c_uint32),\r
+ ('DataDirectory', ARRAY(EFI_IMAGE_DATA_DIRECTORY, 16))\r
+ ]\r
+\r
+class EFI_IMAGE_OPTIONAL_HEADER32_PLUS(Structure):\r
+ _fields_ = [\r
+ ('Magic', c_uint16),\r
+ ('MajorLinkerVersion', c_uint8),\r
+ ('MinorLinkerVersion', c_uint8),\r
+ ('SizeOfCode', c_uint32),\r
+ ('SizeOfInitializedData', c_uint32),\r
+ ('SizeOfUninitializedData', c_uint32),\r
+ ('AddressOfEntryPoint', c_uint32),\r
+ ('BaseOfCode', c_uint32),\r
+ ('ImageBase', c_uint64),\r
+ ('SectionAlignment', c_uint32),\r
+ ('FileAlignment', c_uint32),\r
+ ('MajorOperatingSystemVersion', c_uint16),\r
+ ('MinorOperatingSystemVersion', c_uint16),\r
+ ('MajorImageVersion', c_uint16),\r
+ ('MinorImageVersion', c_uint16),\r
+ ('MajorSubsystemVersion', c_uint16),\r
+ ('MinorSubsystemVersion', c_uint16),\r
+ ('Win32VersionValue', c_uint32),\r
+ ('SizeOfImage', c_uint32),\r
+ ('SizeOfHeaders', c_uint32),\r
+ ('CheckSum' , c_uint32),\r
+ ('Subsystem', c_uint16),\r
+ ('DllCharacteristics', c_uint16),\r
+ ('SizeOfStackReserve', c_uint64),\r
+ ('SizeOfStackCommit' , c_uint64),\r
+ ('SizeOfHeapReserve', c_uint64),\r
+ ('SizeOfHeapCommit' , c_uint64),\r
+ ('LoaderFlags' , c_uint32),\r
+ ('NumberOfRvaAndSizes', c_uint32),\r
+ ('DataDirectory', ARRAY(EFI_IMAGE_DATA_DIRECTORY, 16))\r
+ ]\r