-/*++\r
+/** @file\r
\r
-Copyright (c) 2006, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
+ Load Pe32 Image protocol enables loading and unloading EFI images into memory and executing those images.\r
+ This protocol uses File Device Path to get an EFI image.\r
\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
-Module Name:\r
- LoadPe32Image.h\r
-\r
-Abstract:\r
- Load File protocol.\r
-\r
- Load file protocol exists to supports the addition of new boot devices,\r
- and to support booting from devices that do not map well to file system.\r
- Network boot is done via a LoadFile protocol.\r
-\r
- UEFI 2.0 can boot from any device that produces a LoadFile protocol.\r
-\r
---*/\r
+**/\r
\r
#ifndef __LOAD_PE32_IMAGE_H__\r
#define __LOAD_PE32_IMAGE_H__\r
\r
typedef struct _EFI_PE32_IMAGE_PROTOCOL EFI_PE32_IMAGE_PROTOCOL;\r
\r
+/**\r
+\r
+ Loads an EFI image into memory and returns a handle to the image with extended parameters.\r
+\r
+ @param This The pointer to the LoadPe32Image protocol instance\r
+ @param ParentImageHandle The caller's image handle.\r
+ @param FilePath The specific file path from which the image is loaded.\r
+ @param SourceBuffer If not NULL, a pointer to the memory location containing a copy of\r
+ the image to be loaded.\r
+ @param SourceSize The size in bytes of SourceBuffer.\r
+ @param DstBuffer The buffer to store the image.\r
+ @param NumberOfPages For input, specifies the space size of the image by caller if not NULL.\r
+ For output, specifies the actual space size needed.\r
+ @param ImageHandle The image handle for output.\r
+ @param EntryPoint The image entry point for output.\r
+ @param Attribute The bit mask of attributes to set for the load PE image.\r
+\r
+ @retval EFI_SUCCESS The image was loaded into memory.\r
+ @retval EFI_NOT_FOUND The FilePath was not found.\r
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\r
+ @retval EFI_UNSUPPORTED The image type is not supported, or the device path cannot be\r
+ parsed to locate the proper protocol for loading the file.\r
+ @retval EFI_OUT_OF_RESOURCES The image was not loaded due to insufficient memory resources.\r
+ @retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not\r
+ understood.\r
+ @retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.\r
+ @retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the\r
+ image from being loaded. NULL is returned in *ImageHandle.\r
+ @retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a\r
+ valid EFI_LOADED_IMAGE_PROTOCOL. However, the current\r
+ platform policy specifies that the image should not be started.\r
+**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *LOAD_PE_IMAGE) (\r
+(EFIAPI *LOAD_PE_IMAGE)(\r
IN EFI_PE32_IMAGE_PROTOCOL *This,\r
IN EFI_HANDLE ParentImageHandle,\r
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,\r
IN VOID *SourceBuffer OPTIONAL,\r
IN UINTN SourceSize,\r
IN EFI_PHYSICAL_ADDRESS DstBuffer OPTIONAL,\r
- OUT UINTN *NumberOfPages OPTIONAL,\r
+ IN OUT UINTN *NumberOfPages OPTIONAL,\r
OUT EFI_HANDLE *ImageHandle,\r
OUT EFI_PHYSICAL_ADDRESS *EntryPoint OPTIONAL,\r
IN UINT32 Attribute\r
);\r
\r
+/**\r
+\r
+ Unload the specified image.\r
+\r
+ @param This The pointer to the LoadPe32Image protocol instance\r
+ @param ImageHandle The specified image handle to be unloaded.\r
+\r
+ @retval EFI_INVALID_PARAMETER Image handle is NULL.\r
+ @retval EFI_UNSUPPORTED Attempted to unload an unsupported image.\r
+ @retval EFI_SUCCESS The image successfully unloaded.\r
+\r
+--*/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *UNLOAD_PE_IMAGE) (\r
+(EFIAPI *UNLOAD_PE_IMAGE)(\r
IN EFI_PE32_IMAGE_PROTOCOL *This,\r
IN EFI_HANDLE ImageHandle\r
);\r
\r
struct _EFI_PE32_IMAGE_PROTOCOL {\r
LOAD_PE_IMAGE LoadPeImage;\r
- UNLOAD_PE_IMAGE UnLoadPeImage;\r
+ UNLOAD_PE_IMAGE UnLoadPeImage;\r
};\r
\r
extern EFI_GUID gEfiLoadPeImageProtocolGuid;\r