+\r
+#define LOADED_IMAGE_PRIVATE_DATA_SIGNATURE SIGNATURE_32('l','d','r','i')\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ /// Image handle\r
+ EFI_HANDLE Handle; \r
+ /// Image type\r
+ UINTN Type; \r
+ /// If entrypoint has been called\r
+ BOOLEAN Started; \r
+ /// The image's entry point\r
+ EFI_IMAGE_ENTRY_POINT EntryPoint; \r
+ /// loaded image protocol\r
+ EFI_LOADED_IMAGE_PROTOCOL Info; \r
+ /// Location in memory\r
+ EFI_PHYSICAL_ADDRESS ImageBasePage; \r
+ /// Number of pages\r
+ UINTN NumberOfPages; \r
+ /// Original fixup data\r
+ CHAR8 *FixupData; \r
+ /// Tpl of started image\r
+ EFI_TPL Tpl; \r
+ /// Status returned by started image\r
+ EFI_STATUS Status; \r
+ /// Size of ExitData from started image\r
+ UINTN ExitDataSize; \r
+ /// Pointer to exit data from started image\r
+ VOID *ExitData; \r
+ /// Pointer to pool allocation for context save/retore\r
+ VOID *JumpBuffer; \r
+ /// Pointer to buffer for context save/retore\r
+ BASE_LIBRARY_JUMP_BUFFER *JumpContext; \r
+ /// Machine type from PE image\r
+ UINT16 Machine; \r
+ /// EBC Protocol pointer\r
+ EFI_EBC_PROTOCOL *Ebc; \r
+ /// Runtime image list\r
+ EFI_RUNTIME_IMAGE_ENTRY *RuntimeData; \r
+ /// Pointer to Loaded Image Device Path Protocl\r
+ EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath; \r
+ /// PeCoffLoader ImageContext\r
+ PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; \r
+ /// Status returned by LoadImage() service.\r
+ EFI_STATUS LoadImageStatus;\r
+} LOADED_IMAGE_PRIVATE_DATA;\r
+\r
+#define LOADED_IMAGE_PRIVATE_DATA_FROM_THIS(a) \\r
+ CR(a, LOADED_IMAGE_PRIVATE_DATA, Info, LOADED_IMAGE_PRIVATE_DATA_SIGNATURE)\r
+\r