/** @file Implementation of image related services in the UEFI Boot Services table for use in unit tests. Copyright (c) Microsoft Corporation SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "UnitTestUefiBootServicesTableLib.h" /** Loads an EFI image into memory and returns a handle to the image. @param BootPolicy If TRUE, indicates that the request originates from the boot manager, and that the boot manager is attempting to load FilePath as a boot selection. @param ParentImageHandle The caller's image handle. @param FilePath The specific file path from which the image is loaded. @param SourceBuffer If not NULL, a pointer to the memory location containing a copy of the image to be loaded. @param SourceSize The size in bytes of SourceBuffer. @param ImageHandle Pointer to the returned image handle that is created when the image is successfully loaded. @retval EFI_SUCCESS The image was loaded into memory. @retval EFI_NOT_FOUND The FilePath was not found. @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. @retval EFI_UNSUPPORTED The image type is not supported, or the device path cannot be parsed to locate the proper protocol for loading the file. @retval EFI_OUT_OF_RESOURCES Image was not loaded due to insufficient resources. @retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not understood. @retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error. @retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the image from being loaded. NULL is returned in *ImageHandle. @retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a valid EFI_LOADED_IMAGE_PROTOCOL. However, the current platform policy specifies that the image should not be started. **/ EFI_STATUS EFIAPI UnitTestLoadImage ( IN BOOLEAN BootPolicy, IN EFI_HANDLE ParentImageHandle, IN EFI_DEVICE_PATH_PROTOCOL *FilePath, IN VOID *SourceBuffer OPTIONAL, IN UINTN SourceSize, OUT EFI_HANDLE *ImageHandle ) { return EFI_NOT_AVAILABLE_YET; } /** Transfer control to a loaded image's entry point. @param ImageHandle Handle of image to be started. @param ExitDataSize Pointer of the size to ExitData @param ExitData Pointer to a pointer to a data buffer that includes a Null-terminated string, optionally followed by additional binary data. The string is a description that the caller may use to further indicate the reason for the image's exit. @retval EFI_INVALID_PARAMETER Invalid parameter @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate @retval EFI_SECURITY_VIOLATION The current platform policy specifies that the image should not be started. @retval EFI_SUCCESS Successfully transfer control to the image's entry point. **/ EFI_STATUS EFIAPI UnitTestStartImage ( IN EFI_HANDLE ImageHandle, OUT UINTN *ExitDataSize, OUT CHAR16 **ExitData OPTIONAL ) { return EFI_NOT_AVAILABLE_YET; } /** Terminates the currently loaded EFI image and returns control to boot services. @param ImageHandle Handle that identifies the image. This parameter is passed to the image on entry. @param Status The image's exit code. @param ExitDataSize The size, in bytes, of ExitData. Ignored if ExitStatus is EFI_SUCCESS. @param ExitData Pointer to a data buffer that includes a Null-terminated Unicode string, optionally followed by additional binary data. The string is a description that the caller may use to further indicate the reason for the image's exit. @retval EFI_INVALID_PARAMETER Image handle is NULL or it is not current image. @retval EFI_SUCCESS Successfully terminates the currently loaded EFI image. @retval EFI_ACCESS_DENIED Should never reach there. @retval EFI_OUT_OF_RESOURCES Could not allocate pool **/ EFI_STATUS EFIAPI UnitTestExit ( IN EFI_HANDLE ImageHandle, IN EFI_STATUS Status, IN UINTN ExitDataSize, IN CHAR16 *ExitData OPTIONAL ) { return EFI_NOT_AVAILABLE_YET; } /** Unloads an image. @param ImageHandle Handle that identifies the image to be unloaded. @retval EFI_SUCCESS The image has been unloaded. @retval EFI_UNSUPPORTED The image has been started, and does not support unload. @retval EFI_INVALID_PARAMPETER ImageHandle is not a valid image handle. **/ EFI_STATUS EFIAPI UnitTestUnloadImage ( IN EFI_HANDLE ImageHandle ) { return EFI_NOT_AVAILABLE_YET; } /** Terminates all boot services. @param ImageHandle Handle that identifies the exiting image. @param MapKey Key to the latest memory map. @retval EFI_SUCCESS Boot Services terminated @retval EFI_INVALID_PARAMETER MapKey is incorrect. **/ EFI_STATUS EFIAPI UnitTestExitBootServices ( IN EFI_HANDLE ImageHandle, IN UINTN MapKey ) { return EFI_NOT_AVAILABLE_YET; }