1*1370a723SSascha Wildner /** @file 2*1370a723SSascha Wildner UEFI 2.0 Loaded image protocol definition. 3*1370a723SSascha Wildner 4*1370a723SSascha Wildner Every EFI driver and application is passed an image handle when it is loaded. 5*1370a723SSascha Wildner This image handle will contain a Loaded Image Protocol. 6*1370a723SSascha Wildner 7*1370a723SSascha Wildner Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> 8*1370a723SSascha Wildner SPDX-License-Identifier: BSD-2-Clause-Patent 9*1370a723SSascha Wildner 10*1370a723SSascha Wildner **/ 11*1370a723SSascha Wildner 12*1370a723SSascha Wildner #ifndef __LOADED_IMAGE_PROTOCOL_H__ 13*1370a723SSascha Wildner #define __LOADED_IMAGE_PROTOCOL_H__ 14*1370a723SSascha Wildner 15*1370a723SSascha Wildner #define EFI_LOADED_IMAGE_PROTOCOL_GUID \ 16*1370a723SSascha Wildner { \ 17*1370a723SSascha Wildner 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B } \ 18*1370a723SSascha Wildner } 19*1370a723SSascha Wildner 20*1370a723SSascha Wildner #define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \ 21*1370a723SSascha Wildner { \ 22*1370a723SSascha Wildner 0xbc62157e, 0x3e33, 0x4fec, {0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf } \ 23*1370a723SSascha Wildner } 24*1370a723SSascha Wildner 25*1370a723SSascha Wildner /// 26*1370a723SSascha Wildner /// Protocol GUID defined in EFI1.1. 27*1370a723SSascha Wildner /// 28*1370a723SSascha Wildner #define LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL_GUID 29*1370a723SSascha Wildner 30*1370a723SSascha Wildner /// 31*1370a723SSascha Wildner /// EFI_SYSTEM_TABLE & EFI_IMAGE_UNLOAD are defined in EfiApi.h 32*1370a723SSascha Wildner /// 33*1370a723SSascha Wildner #define EFI_LOADED_IMAGE_PROTOCOL_REVISION 0x1000 34*1370a723SSascha Wildner 35*1370a723SSascha Wildner /// 36*1370a723SSascha Wildner /// Revision defined in EFI1.1. 37*1370a723SSascha Wildner /// 38*1370a723SSascha Wildner #define EFI_LOADED_IMAGE_INFORMATION_REVISION EFI_LOADED_IMAGE_PROTOCOL_REVISION 39*1370a723SSascha Wildner 40*1370a723SSascha Wildner /// 41*1370a723SSascha Wildner /// Can be used on any image handle to obtain information about the loaded image. 42*1370a723SSascha Wildner /// 43*1370a723SSascha Wildner typedef struct { 44*1370a723SSascha Wildner UINT32 Revision; ///< Defines the revision of the EFI_LOADED_IMAGE_PROTOCOL structure. 45*1370a723SSascha Wildner ///< All future revisions will be backward compatible to the current revision. 46*1370a723SSascha Wildner EFI_HANDLE ParentHandle; ///< Parent image's image handle. NULL if the image is loaded directly from 47*1370a723SSascha Wildner ///< the firmware's boot manager. 48*1370a723SSascha Wildner EFI_SYSTEM_TABLE *SystemTable; ///< the image's EFI system table pointer. 49*1370a723SSascha Wildner 50*1370a723SSascha Wildner // 51*1370a723SSascha Wildner // Source location of image 52*1370a723SSascha Wildner // 53*1370a723SSascha Wildner EFI_HANDLE DeviceHandle; ///< The device handle that the EFI Image was loaded from. 54*1370a723SSascha Wildner EFI_DEVICE_PATH_PROTOCOL *FilePath; ///< A pointer to the file path portion specific to DeviceHandle 55*1370a723SSascha Wildner ///< that the EFI Image was loaded from. 56*1370a723SSascha Wildner VOID *Reserved; ///< Reserved. DO NOT USE. 57*1370a723SSascha Wildner 58*1370a723SSascha Wildner // 59*1370a723SSascha Wildner // Images load options 60*1370a723SSascha Wildner // 61*1370a723SSascha Wildner UINT32 LoadOptionsSize;///< The size in bytes of LoadOptions. 62*1370a723SSascha Wildner VOID *LoadOptions; ///< A pointer to the image's binary load options. 63*1370a723SSascha Wildner 64*1370a723SSascha Wildner // 65*1370a723SSascha Wildner // Location of where image was loaded 66*1370a723SSascha Wildner // 67*1370a723SSascha Wildner VOID *ImageBase; ///< The base address at which the image was loaded. 68*1370a723SSascha Wildner UINT64 ImageSize; ///< The size in bytes of the loaded image. 69*1370a723SSascha Wildner EFI_MEMORY_TYPE ImageCodeType; ///< The memory type that the code sections were loaded as. 70*1370a723SSascha Wildner EFI_MEMORY_TYPE ImageDataType; ///< The memory type that the data sections were loaded as. 71*1370a723SSascha Wildner EFI_IMAGE_UNLOAD Unload; 72*1370a723SSascha Wildner } EFI_LOADED_IMAGE_PROTOCOL; 73*1370a723SSascha Wildner 74*1370a723SSascha Wildner // 75*1370a723SSascha Wildner // For backward-compatible with EFI1.1. 76*1370a723SSascha Wildner // 77*1370a723SSascha Wildner typedef EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE; 78*1370a723SSascha Wildner 79*1370a723SSascha Wildner extern EFI_GUID gEfiLoadedImageProtocolGuid; 80*1370a723SSascha Wildner extern EFI_GUID gEfiLoadedImageDevicePathProtocolGuid; 81*1370a723SSascha Wildner 82*1370a723SSascha Wildner #endif 83