| /** @file | |
| An internal header file for the Unit Test instance of the UEFI Boot Services Table Library. | |
| This file includes common header files, defines internal structure and functions used by | |
| the library implementation. | |
| Copyright (c) Microsoft Corporation | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef UEFI_BOOT_SERVICES_TABLE_LIB_UNIT_TEST_H_ | |
| #define UEFI_BOOT_SERVICES_TABLE_LIB_UNIT_TEST_H_ | |
| #include <Uefi.h> | |
| #include <Pi/PiMultiPhase.h> | |
| #include <Library/BaseLib.h> | |
| #include <Library/BaseMemoryLib.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/MemoryAllocationLib.h> | |
| #include <Library/UnitTestLib.h> | |
| #include <Library/UefiBootServicesTableLib.h> | |
| /** | |
| Raise the task priority level to the new level. | |
| High level is implemented by disabling processor interrupts. | |
| @param NewTpl New task priority level | |
| @return The previous task priority level | |
| **/ | |
| EFI_TPL | |
| EFIAPI | |
| UnitTestRaiseTpl ( | |
| IN EFI_TPL NewTpl | |
| ); | |
| /** | |
| Lowers the task priority to the previous value. If the new | |
| priority unmasks events at a higher priority, they are dispatched. | |
| @param NewTpl New, lower, task priority | |
| **/ | |
| VOID | |
| EFIAPI | |
| UnitTestRestoreTpl ( | |
| IN EFI_TPL NewTpl | |
| ); | |
| /** | |
| Allocates pages from the memory map. | |
| @param Type The type of allocation to perform | |
| @param MemoryType The type of memory to turn the allocated pages | |
| into | |
| @param NumberOfPages The number of pages to allocate | |
| @param Memory A pointer to receive the base allocated memory | |
| address | |
| @return Status. On success, Memory is filled in with the base address allocated | |
| @retval EFI_INVALID_PARAMETER Parameters violate checking rules defined in | |
| spec. | |
| @retval EFI_NOT_FOUND Could not allocate pages match the requirement. | |
| @retval EFI_OUT_OF_RESOURCES No enough pages to allocate. | |
| @retval EFI_SUCCESS Pages successfully allocated. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestAllocatePages ( | |
| IN EFI_ALLOCATE_TYPE Type, | |
| IN EFI_MEMORY_TYPE MemoryType, | |
| IN UINTN NumberOfPages, | |
| IN OUT EFI_PHYSICAL_ADDRESS *Memory | |
| ); | |
| /** | |
| Frees previous allocated pages. | |
| @param Memory Base address of memory being freed | |
| @param NumberOfPages The number of pages to free | |
| @retval EFI_NOT_FOUND Could not find the entry that covers the range | |
| @retval EFI_INVALID_PARAMETER Address not aligned | |
| @return EFI_SUCCESS -Pages successfully freed. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestFreePages ( | |
| IN EFI_PHYSICAL_ADDRESS Memory, | |
| IN UINTN NumberOfPages | |
| ); | |
| /** | |
| This function returns a copy of the current memory map. The map is an array of | |
| memory descriptors, each of which describes a contiguous block of memory. | |
| @param MemoryMapSize A pointer to the size, in bytes, of the | |
| MemoryMap buffer. On input, this is the size of | |
| the buffer allocated by the caller. On output, | |
| it is the size of the buffer returned by the | |
| firmware if the buffer was large enough, or the | |
| size of the buffer needed to contain the map if | |
| the buffer was too small. | |
| @param MemoryMap A pointer to the buffer in which firmware places | |
| the current memory map. | |
| @param MapKey A pointer to the location in which firmware | |
| returns the key for the current memory map. | |
| @param DescriptorSize A pointer to the location in which firmware | |
| returns the size, in bytes, of an individual | |
| EFI_MEMORY_DESCRIPTOR. | |
| @param DescriptorVersion A pointer to the location in which firmware | |
| returns the version number associated with the | |
| EFI_MEMORY_DESCRIPTOR. | |
| @retval EFI_SUCCESS The memory map was returned in the MemoryMap | |
| buffer. | |
| @retval EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small. The current | |
| buffer size needed to hold the memory map is | |
| returned in MemoryMapSize. | |
| @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestGetMemoryMap ( | |
| IN OUT UINTN *MemoryMapSize, | |
| IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap, | |
| OUT UINTN *MapKey, | |
| OUT UINTN *DescriptorSize, | |
| OUT UINT32 *DescriptorVersion | |
| ); | |
| /** | |
| Allocate pool of a particular type. | |
| @param PoolType Type of pool to allocate | |
| @param Size The amount of pool to allocate | |
| @param Buffer The address to return a pointer to the allocated | |
| pool | |
| @retval EFI_INVALID_PARAMETER PoolType not valid or Buffer is NULL | |
| @retval EFI_OUT_OF_RESOURCES Size exceeds max pool size or allocation failed. | |
| @retval EFI_SUCCESS Pool successfully allocated. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestAllocatePool ( | |
| IN EFI_MEMORY_TYPE PoolType, | |
| IN UINTN Size, | |
| OUT VOID **Buffer | |
| ); | |
| /** | |
| Frees pool. | |
| @param Buffer The allocated pool entry to free | |
| @retval EFI_INVALID_PARAMETER Buffer is not a valid value. | |
| @retval EFI_SUCCESS Pool successfully freed. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestFreePool ( | |
| IN VOID *Buffer | |
| ); | |
| /** | |
| Frees pool. | |
| @param Buffer The allocated pool entry to free | |
| @param PoolType Pointer to pool type | |
| @retval EFI_INVALID_PARAMETER Buffer is not a valid value. | |
| @retval EFI_SUCCESS Pool successfully freed. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestInternalFreePool ( | |
| IN VOID *Buffer, | |
| OUT EFI_MEMORY_TYPE *PoolType OPTIONAL | |
| ); | |
| /** | |
| Creates an event. | |
| @param Type The type of event to create and its mode and | |
| attributes | |
| @param NotifyTpl The task priority level of event notifications | |
| @param NotifyFunction Pointer to the events notification function | |
| @param NotifyContext Pointer to the notification functions context; | |
| corresponds to parameter "Context" in the | |
| notification function | |
| @param Event Pointer to the newly created event if the call | |
| succeeds; undefined otherwise | |
| @retval EFI_SUCCESS The event structure was created | |
| @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value | |
| @retval EFI_OUT_OF_RESOURCES The event could not be allocated | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestCreateEvent ( | |
| IN UINT32 Type, | |
| IN EFI_TPL NotifyTpl, | |
| IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL | |
| IN VOID *NotifyContext, OPTIONAL | |
| OUT EFI_EVENT *Event | |
| ); | |
| /** | |
| Sets the type of timer and the trigger time for a timer event. | |
| @param UserEvent The timer event that is to be signaled at the | |
| specified time | |
| @param Type The type of time that is specified in | |
| TriggerTime | |
| @param TriggerTime The number of 100ns units until the timer | |
| expires | |
| @retval EFI_SUCCESS The event has been set to be signaled at the | |
| requested time | |
| @retval EFI_INVALID_PARAMETER Event or Type is not valid | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestSetTimer ( | |
| IN EFI_EVENT UserEvent, | |
| IN EFI_TIMER_DELAY Type, | |
| IN UINT64 TriggerTime | |
| ); | |
| /** | |
| Stops execution until an event is signaled. | |
| @param NumberOfEvents The number of events in the UserEvents array | |
| @param UserEvents An array of EFI_EVENT | |
| @param UserIndex Pointer to the index of the event which | |
| satisfied the wait condition | |
| @retval EFI_SUCCESS The event indicated by Index was signaled. | |
| @retval EFI_INVALID_PARAMETER The event indicated by Index has a notification | |
| function or Event was not a valid type | |
| @retval EFI_UNSUPPORTED The current TPL is not TPL_APPLICATION | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestWaitForEvent ( | |
| IN UINTN NumberOfEvents, | |
| IN EFI_EVENT *UserEvents, | |
| OUT UINTN *UserIndex | |
| ); | |
| /** | |
| Signals the event. Queues the event to be notified if needed. | |
| @param UserEvent The event to signal . | |
| @retval EFI_INVALID_PARAMETER Parameters are not valid. | |
| @retval EFI_SUCCESS The event was signaled. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestSignalEvent ( | |
| IN EFI_EVENT UserEvent | |
| ); | |
| /** | |
| Closes an event and frees the event structure. | |
| @param UserEvent Event to close | |
| @retval EFI_INVALID_PARAMETER Parameters are not valid. | |
| @retval EFI_SUCCESS The event has been closed | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestCloseEvent ( | |
| IN EFI_EVENT UserEvent | |
| ); | |
| /** | |
| Check the status of an event. | |
| @param UserEvent The event to check | |
| @retval EFI_SUCCESS The event is in the signaled state | |
| @retval EFI_NOT_READY The event is not in the signaled state | |
| @retval EFI_INVALID_PARAMETER Event is of type EVT_NOTIFY_SIGNAL | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestCheckEvent ( | |
| IN EFI_EVENT UserEvent | |
| ); | |
| /** | |
| Wrapper function to UnitTestInstallProtocolInterfaceNotify. This is the public API which | |
| Calls the private one which contains a BOOLEAN parameter for notifications | |
| @param UserHandle The handle to install the protocol handler on, | |
| or NULL if a new handle is to be allocated | |
| @param Protocol The protocol to add to the handle | |
| @param InterfaceType Indicates whether Interface is supplied in | |
| native form. | |
| @param Interface The interface for the protocol being added | |
| @return Status code | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestInstallProtocolInterface ( | |
| IN OUT EFI_HANDLE *UserHandle, | |
| IN EFI_GUID *Protocol, | |
| IN EFI_INTERFACE_TYPE InterfaceType, | |
| IN VOID *Interface | |
| ); | |
| /** | |
| Reinstall a protocol interface on a device handle. The OldInterface for Protocol is replaced by the NewInterface. | |
| @param UserHandle Handle on which the interface is to be | |
| reinstalled | |
| @param Protocol The numeric ID of the interface | |
| @param OldInterface A pointer to the old interface | |
| @param NewInterface A pointer to the new interface | |
| @retval EFI_SUCCESS The protocol interface was installed | |
| @retval EFI_NOT_FOUND The OldInterface on the handle was not found | |
| @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestReinstallProtocolInterface ( | |
| IN EFI_HANDLE UserHandle, | |
| IN EFI_GUID *Protocol, | |
| IN VOID *OldInterface, | |
| IN VOID *NewInterface | |
| ); | |
| /** | |
| Uninstalls all instances of a protocol:interfacer from a handle. | |
| If the last protocol interface is remove from the handle, the | |
| handle is freed. | |
| @param UserHandle The handle to remove the protocol handler from | |
| @param Protocol The protocol, of protocol:interface, to remove | |
| @param Interface The interface, of protocol:interface, to remove | |
| @retval EFI_INVALID_PARAMETER Protocol is NULL. | |
| @retval EFI_SUCCESS Protocol interface successfully uninstalled. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestUninstallProtocolInterface ( | |
| IN EFI_HANDLE UserHandle, | |
| IN EFI_GUID *Protocol, | |
| IN VOID *Interface | |
| ); | |
| /** | |
| Queries a handle to determine if it supports a specified protocol. | |
| @param UserHandle The handle being queried. | |
| @param Protocol The published unique identifier of the protocol. | |
| @param Interface Supplies the address where a pointer to the | |
| corresponding Protocol Interface is returned. | |
| @return The requested protocol interface for the handle | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestHandleProtocol ( | |
| IN EFI_HANDLE UserHandle, | |
| IN EFI_GUID *Protocol, | |
| OUT VOID **Interface | |
| ); | |
| /** | |
| Add a new protocol notification record for the request protocol. | |
| @param Protocol The requested protocol to add the notify | |
| registration | |
| @param Event The event to signal | |
| @param Registration Returns the registration record | |
| @retval EFI_INVALID_PARAMETER Invalid parameter | |
| @retval EFI_SUCCESS Successfully returned the registration record | |
| that has been added | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestRegisterProtocolNotify ( | |
| IN EFI_GUID *Protocol, | |
| IN EFI_EVENT Event, | |
| OUT VOID **Registration | |
| ); | |
| /** | |
| Locates the requested handle(s) and returns them in Buffer. | |
| @param SearchType The type of search to perform to locate the | |
| handles | |
| @param Protocol The protocol to search for | |
| @param SearchKey Dependant on SearchType | |
| @param BufferSize On input the size of Buffer. On output the | |
| size of data returned. | |
| @param Buffer The buffer to return the results in | |
| @retval EFI_BUFFER_TOO_SMALL Buffer too small, required buffer size is | |
| returned in BufferSize. | |
| @retval EFI_INVALID_PARAMETER Invalid parameter | |
| @retval EFI_SUCCESS Successfully found the requested handle(s) and | |
| returns them in Buffer. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestLocateHandle ( | |
| IN EFI_LOCATE_SEARCH_TYPE SearchType, | |
| IN EFI_GUID *Protocol OPTIONAL, | |
| IN VOID *SearchKey OPTIONAL, | |
| IN OUT UINTN *BufferSize, | |
| OUT EFI_HANDLE *Buffer | |
| ); | |
| /** | |
| Locates the handle to a device on the device path that best matches the specified protocol. | |
| @param Protocol The protocol to search for. | |
| @param DevicePath On input, a pointer to a pointer to the device | |
| path. On output, the device path pointer is | |
| modified to point to the remaining part of the | |
| devicepath. | |
| @param Device A pointer to the returned device handle. | |
| @retval EFI_SUCCESS The resulting handle was returned. | |
| @retval EFI_NOT_FOUND No handles matched the search. | |
| @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestLocateDevicePath ( | |
| IN EFI_GUID *Protocol, | |
| IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath, | |
| OUT EFI_HANDLE *Device | |
| ); | |
| /** | |
| Boot Service called to add, modify, or remove a system configuration table from | |
| the EFI System Table. | |
| @param Guid Pointer to the GUID for the entry to add, update, or | |
| remove | |
| @param Table Pointer to the configuration table for the entry to add, | |
| update, or remove, may be NULL. | |
| @return EFI_SUCCESS Guid, Table pair added, updated, or removed. | |
| @return EFI_INVALID_PARAMETER Input GUID not valid. | |
| @return EFI_NOT_FOUND Attempted to delete non-existant entry | |
| @return EFI_OUT_OF_RESOURCES Not enough memory available | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestInstallConfigurationTable ( | |
| IN EFI_GUID *Guid, | |
| IN VOID *Table | |
| ); | |
| /** | |
| 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 | |
| ); | |
| /** | |
| 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 | |
| ); | |
| /** | |
| 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 | |
| ); | |
| /** | |
| 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 | |
| ); | |
| /** | |
| 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 | |
| ); | |
| /** | |
| Returns a monotonically increasing count for the platform. | |
| @param[out] Count The pointer to returned value. | |
| @retval EFI_SUCCESS The next monotonic count was returned. | |
| @retval EFI_INVALID_PARAMETER Count is NULL. | |
| @retval EFI_DEVICE_ERROR The device is not functioning properly. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestGetNextMonotonicCount ( | |
| OUT UINT64 *Count | |
| ); | |
| /** | |
| Introduces a fine-grained stall. | |
| @param Microseconds The number of microseconds to stall execution. | |
| @retval EFI_SUCCESS Execution was stalled for at least the requested | |
| amount of microseconds. | |
| @retval EFI_NOT_AVAILABLE_YET gMetronome is not available yet | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestStall ( | |
| IN UINTN Microseconds | |
| ); | |
| /** | |
| Sets the system's watchdog timer. | |
| @param Timeout The number of seconds to set the watchdog timer to. | |
| A value of zero disables the timer. | |
| @param WatchdogCode The numeric code to log on a watchdog timer timeout | |
| event. The firmware reserves codes 0x0000 to 0xFFFF. | |
| Loaders and operating systems may use other timeout | |
| codes. | |
| @param DataSize The size, in bytes, of WatchdogData. | |
| @param WatchdogData A data buffer that includes a Null-terminated Unicode | |
| string, optionally followed by additional binary data. | |
| The string is a description that the call may use to | |
| further indicate the reason to be logged with a | |
| watchdog event. | |
| @return EFI_SUCCESS Timeout has been set | |
| @return EFI_NOT_AVAILABLE_YET WatchdogTimer is not available yet | |
| @return EFI_UNSUPPORTED System does not have a timer (currently not used) | |
| @return EFI_DEVICE_ERROR Could not complete due to hardware error | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestSetWatchdogTimer ( | |
| IN UINTN Timeout, | |
| IN UINT64 WatchdogCode, | |
| IN UINTN DataSize, | |
| IN CHAR16 *WatchdogData OPTIONAL | |
| ); | |
| /** | |
| Connects one or more drivers to a controller. | |
| @param ControllerHandle The handle of the controller to which driver(s) are to be connected. | |
| @param DriverImageHandle A pointer to an ordered list handles that support the | |
| EFI_DRIVER_BINDING_PROTOCOL. | |
| @param RemainingDevicePath A pointer to the device path that specifies a child of the | |
| controller specified by ControllerHandle. | |
| @param Recursive If TRUE, then ConnectController() is called recursively | |
| until the entire tree of controllers below the controller specified | |
| by ControllerHandle have been created. If FALSE, then | |
| the tree of controllers is only expanded one level. | |
| @retval EFI_SUCCESS 1) One or more drivers were connected to ControllerHandle. | |
| 2) No drivers were connected to ControllerHandle, but | |
| RemainingDevicePath is not NULL, and it is an End Device | |
| Path Node. | |
| @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. | |
| @retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances | |
| present in the system. | |
| 2) No drivers were connected to ControllerHandle. | |
| @retval EFI_SECURITY_VIOLATION | |
| The user has no permission to start UEFI device drivers on the device path | |
| associated with the ControllerHandle or specified by the RemainingDevicePath. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestConnectController ( | |
| IN EFI_HANDLE ControllerHandle, | |
| IN EFI_HANDLE *DriverImageHandle OPTIONAL, | |
| IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL, | |
| IN BOOLEAN Recursive | |
| ); | |
| /** | |
| Disconnects a controller from a driver | |
| @param ControllerHandle ControllerHandle The handle of | |
| the controller from which | |
| driver(s) are to be | |
| disconnected. | |
| @param DriverImageHandle DriverImageHandle The driver to | |
| disconnect from ControllerHandle. | |
| @param ChildHandle ChildHandle The handle of the | |
| child to destroy. | |
| @retval EFI_SUCCESS One or more drivers were | |
| disconnected from the controller. | |
| @retval EFI_SUCCESS On entry, no drivers are managing | |
| ControllerHandle. | |
| @retval EFI_SUCCESS DriverImageHandle is not NULL, | |
| and on entry DriverImageHandle is | |
| not managing ControllerHandle. | |
| @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. | |
| @retval EFI_INVALID_PARAMETER DriverImageHandle is not NULL, | |
| and it is not a valid EFI_HANDLE. | |
| @retval EFI_INVALID_PARAMETER ChildHandle is not NULL, and it | |
| is not a valid EFI_HANDLE. | |
| @retval EFI_OUT_OF_RESOURCES There are not enough resources | |
| available to disconnect any | |
| drivers from ControllerHandle. | |
| @retval EFI_DEVICE_ERROR The controller could not be | |
| disconnected because of a device | |
| error. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestDisconnectController ( | |
| IN EFI_HANDLE ControllerHandle, | |
| IN EFI_HANDLE DriverImageHandle OPTIONAL, | |
| IN EFI_HANDLE ChildHandle OPTIONAL | |
| ); | |
| /** | |
| Locates the installed protocol handler for the handle, and | |
| invokes it to obtain the protocol interface. Usage information | |
| is registered in the protocol data base. | |
| @param UserHandle The handle to obtain the protocol interface on | |
| @param Protocol The ID of the protocol | |
| @param Interface The location to return the protocol interface | |
| @param ImageHandle The handle of the Image that is opening the | |
| protocol interface specified by Protocol and | |
| Interface. | |
| @param ControllerHandle The controller handle that is requiring this | |
| interface. | |
| @param Attributes The open mode of the protocol interface | |
| specified by Handle and Protocol. | |
| @retval EFI_INVALID_PARAMETER Protocol is NULL. | |
| @retval EFI_SUCCESS Get the protocol interface. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestOpenProtocol ( | |
| IN EFI_HANDLE UserHandle, | |
| IN EFI_GUID *Protocol, | |
| OUT VOID **Interface OPTIONAL, | |
| IN EFI_HANDLE ImageHandle, | |
| IN EFI_HANDLE ControllerHandle, | |
| IN UINT32 Attributes | |
| ); | |
| /** | |
| Closes a protocol on a handle that was opened using OpenProtocol(). | |
| @param UserHandle The handle for the protocol interface that was | |
| previously opened with OpenProtocol(), and is | |
| now being closed. | |
| @param Protocol The published unique identifier of the protocol. | |
| It is the caller's responsibility to pass in a | |
| valid GUID. | |
| @param AgentHandle The handle of the agent that is closing the | |
| protocol interface. | |
| @param ControllerHandle If the agent that opened a protocol is a driver | |
| that follows the EFI Driver Model, then this | |
| parameter is the controller handle that required | |
| the protocol interface. If the agent does not | |
| follow the EFI Driver Model, then this parameter | |
| is optional and may be NULL. | |
| @retval EFI_SUCCESS The protocol instance was closed. | |
| @retval EFI_INVALID_PARAMETER Handle, AgentHandle or ControllerHandle is not a | |
| valid EFI_HANDLE. | |
| @retval EFI_NOT_FOUND Can not find the specified protocol or | |
| AgentHandle. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestCloseProtocol ( | |
| IN EFI_HANDLE UserHandle, | |
| IN EFI_GUID *Protocol, | |
| IN EFI_HANDLE AgentHandle, | |
| IN EFI_HANDLE ControllerHandle | |
| ); | |
| /** | |
| Return information about Opened protocols in the system | |
| @param UserHandle The handle to close the protocol interface on | |
| @param Protocol The ID of the protocol | |
| @param EntryBuffer A pointer to a buffer of open protocol | |
| information in the form of | |
| EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures. | |
| @param EntryCount Number of EntryBuffer entries | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestOpenProtocolInformation ( | |
| IN EFI_HANDLE UserHandle, | |
| IN EFI_GUID *Protocol, | |
| OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer, | |
| OUT UINTN *EntryCount | |
| ); | |
| /** | |
| Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated | |
| from pool. | |
| @param UserHandle The handle from which to retrieve the list of | |
| protocol interface GUIDs. | |
| @param ProtocolBuffer A pointer to the list of protocol interface GUID | |
| pointers that are installed on Handle. | |
| @param ProtocolBufferCount A pointer to the number of GUID pointers present | |
| in ProtocolBuffer. | |
| @retval EFI_SUCCESS The list of protocol interface GUIDs installed | |
| on Handle was returned in ProtocolBuffer. The | |
| number of protocol interface GUIDs was returned | |
| in ProtocolBufferCount. | |
| @retval EFI_INVALID_PARAMETER Handle is NULL. | |
| @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE. | |
| @retval EFI_INVALID_PARAMETER ProtocolBuffer is NULL. | |
| @retval EFI_INVALID_PARAMETER ProtocolBufferCount is NULL. | |
| @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the | |
| results. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestProtocolsPerHandle ( | |
| IN EFI_HANDLE UserHandle, | |
| OUT EFI_GUID ***ProtocolBuffer, | |
| OUT UINTN *ProtocolBufferCount | |
| ); | |
| /** | |
| Function returns an array of handles that support the requested protocol | |
| in a buffer allocated from pool. This is a version of UnitTestLocateHandle() | |
| that allocates a buffer for the caller. | |
| @param SearchType Specifies which handle(s) are to be returned. | |
| @param Protocol Provides the protocol to search by. This | |
| parameter is only valid for SearchType | |
| ByProtocol. | |
| @param SearchKey Supplies the search key depending on the | |
| SearchType. | |
| @param NumberHandles The number of handles returned in Buffer. | |
| @param Buffer A pointer to the buffer to return the requested | |
| array of handles that support Protocol. | |
| @retval EFI_SUCCESS The result array of handles was returned. | |
| @retval EFI_NOT_FOUND No handles match the search. | |
| @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the | |
| matching results. | |
| @retval EFI_INVALID_PARAMETER One or more parameters are not valid. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestLocateHandleBuffer ( | |
| IN EFI_LOCATE_SEARCH_TYPE SearchType, | |
| IN EFI_GUID *Protocol OPTIONAL, | |
| IN VOID *SearchKey OPTIONAL, | |
| IN OUT UINTN *NumberHandles, | |
| OUT EFI_HANDLE **Buffer | |
| ); | |
| /** | |
| Return the first Protocol Interface that matches the Protocol GUID. If | |
| Registration is passed in, return a Protocol Instance that was just add | |
| to the system. If Registration is NULL return the first Protocol Interface | |
| you find. | |
| @param Protocol The protocol to search for | |
| @param Registration Optional Registration Key returned from | |
| RegisterProtocolNotify() | |
| @param Interface Return the Protocol interface (instance). | |
| @retval EFI_SUCCESS If a valid Interface is returned | |
| @retval EFI_INVALID_PARAMETER Invalid parameter | |
| @retval EFI_NOT_FOUND Protocol interface not found | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestLocateProtocol ( | |
| IN EFI_GUID *Protocol, | |
| IN VOID *Registration OPTIONAL, | |
| OUT VOID **Interface | |
| ); | |
| /** | |
| Installs a list of protocol interface into the boot services environment. | |
| This function calls InstallProtocolInterface() in a loop. If any error | |
| occurs all the protocols added by this function are removed. This is | |
| basically a lib function to save space. | |
| @param Handle The handle to install the protocol handlers on, | |
| or NULL if a new handle is to be allocated | |
| @param ... EFI_GUID followed by protocol instance. A NULL | |
| terminates the list. The pairs are the | |
| arguments to InstallProtocolInterface(). All the | |
| protocols are added to Handle. | |
| @retval EFI_SUCCESS All the protocol interface was installed. | |
| @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols. | |
| @retval EFI_ALREADY_STARTED A Device Path Protocol instance was passed in that is already present in | |
| the handle database. | |
| @retval EFI_INVALID_PARAMETER Handle is NULL. | |
| @retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestInstallMultipleProtocolInterfaces ( | |
| IN OUT EFI_HANDLE *Handle, | |
| ... | |
| ); | |
| /** | |
| Uninstalls a list of protocol interface in the boot services environment. | |
| This function calls UninstallProtocolInterface() in a loop. This is | |
| basically a lib function to save space. | |
| @param Handle The handle to uninstall the protocol | |
| @param ... EFI_GUID followed by protocol instance. A NULL | |
| terminates the list. The pairs are the | |
| arguments to UninstallProtocolInterface(). All | |
| the protocols are added to Handle. | |
| @return Status code | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestUninstallMultipleProtocolInterfaces ( | |
| IN EFI_HANDLE Handle, | |
| ... | |
| ); | |
| /** | |
| Computes and returns a 32-bit CRC for a data buffer. | |
| @param[in] Data A pointer to the buffer on which the 32-bit CRC is to be computed. | |
| @param[in] DataSize The number of bytes in the buffer Data. | |
| @param[out] Crc32 The 32-bit CRC that was computed for the data buffer specified by Data | |
| and DataSize. | |
| @retval EFI_SUCCESS The 32-bit CRC was computed for the data buffer and returned in | |
| Crc32. | |
| @retval EFI_INVALID_PARAMETER Data is NULL. | |
| @retval EFI_INVALID_PARAMETER Crc32 is NULL. | |
| @retval EFI_INVALID_PARAMETER DataSize is 0. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestCalculateCrc32 ( | |
| IN VOID *Data, | |
| IN UINTN DataSize, | |
| OUT UINT32 *Crc32 | |
| ); | |
| /** | |
| Creates an event in a group. | |
| @param Type The type of event to create and its mode and | |
| attributes | |
| @param NotifyTpl The task priority level of event notifications | |
| @param NotifyFunction Pointer to the events notification function | |
| @param NotifyContext Pointer to the notification functions context; | |
| corresponds to parameter "Context" in the | |
| notification function | |
| @param EventGroup GUID for EventGroup if NULL act the same as | |
| gBS->CreateEvent(). | |
| @param Event Pointer to the newly created event if the call | |
| succeeds; undefined otherwise | |
| @retval EFI_SUCCESS The event structure was created | |
| @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value | |
| @retval EFI_OUT_OF_RESOURCES The event could not be allocated | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UnitTestCreateEventEx ( | |
| IN UINT32 Type, | |
| IN EFI_TPL NotifyTpl, | |
| IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL | |
| IN CONST VOID *NotifyContext, OPTIONAL | |
| IN CONST EFI_GUID *EventGroup, OPTIONAL | |
| OUT EFI_EVENT *Event | |
| ); | |
| #endif |