| /** @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; | |
| } |