| /** @file | |
| The PRM Buffer Context library provides a general abstraction for context buffer management. | |
| Copyright (c) Microsoft Corporation | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef PRM_CONTEXT_BUFFER_LIB_H_ | |
| #define PRM_CONTEXT_BUFFER_LIB_H_ | |
| #include <Base.h> | |
| #include <PrmContextBuffer.h> | |
| #include <Uefi.h> | |
| typedef enum { | |
| /// | |
| /// Search by the PRM module GUID | |
| /// | |
| ByModuleGuid, | |
| /// | |
| /// Search by the PRM handler GUID | |
| /// | |
| ByHandlerGuid | |
| } PRM_GUID_SEARCH_TYPE; | |
| /** | |
| Finds a PRM context buffer for the given PRM handler GUID. | |
| Note: PRM_MODULE_CONTEXT_BUFFERS is at the PRM module level while PRM_CONTEXT_BUFFER is at the PRM handler level. | |
| @param[in] HandlerGuid A pointer to the PRM handler GUID. | |
| @param[in] ModuleContextBuffers A pointer to the PRM context buffers structure for the PRM module. | |
| @param[out] PrmModuleContextBuffer A pointer to a pointer that will be set to the PRM context buffer | |
| if successfully found. | |
| @retval EFI_SUCCESS The PRM context buffer was found. | |
| @retval EFI_INVALID_PARAMETER A required parameter pointer is NULL. | |
| @retval EFI_NOT_FOUND The context buffer for the given PRM handler GUID could not be found. | |
| **/ | |
| EFI_STATUS | |
| FindContextBufferInModuleBuffers ( | |
| IN CONST EFI_GUID *HandlerGuid, | |
| IN CONST PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffers, | |
| OUT CONST PRM_CONTEXT_BUFFER **ContextBuffer | |
| ); | |
| /** | |
| Returns a PRM context buffers structure for the given PRM search type. | |
| This function allows a caller to get the context buffers structure for a PRM module with either the PRM module | |
| GUID or the GUID for a PRM handler in the module. | |
| Note: PRM_MODULE_CONTEXT_BUFFERS is at the PRM module level while PRM_CONTEXT_BUFFER is at the PRM handler level. | |
| @param[in] GuidSearchType The type of GUID passed in the Guid argument. | |
| @param[in] Guid A pointer to the GUID of a PRM module or PRM handler. The actual GUID type | |
| will be interpreted based on the value passed in GuidSearchType. | |
| @param[out] PrmModuleContextBuffers A pointer to a pointer that will be set to the PRM context buffers | |
| structure if successfully found. | |
| @retval EFI_SUCCESS The PRM context buffers structure was found. | |
| @retval EFI_INVALID_PARAMETER A required parameter pointer is NULL. | |
| @retval EFI_NOT_FOUND The context buffers for the given GUID could not be found. | |
| **/ | |
| EFI_STATUS | |
| GetModuleContextBuffers ( | |
| IN PRM_GUID_SEARCH_TYPE GuidSearchType, | |
| IN CONST EFI_GUID *Guid, | |
| OUT CONST PRM_MODULE_CONTEXT_BUFFERS **PrmModuleContextBuffers | |
| ); | |
| /** | |
| Returns a PRM context buffer for the given PRM handler. | |
| @param[in] PrmHandlerGuid A pointer to the GUID for the PRM handler. | |
| @param[in] PrmModuleContextBuffers A pointer to a PRM_MODULE_CONTEXT_BUFFERS structure. If this optional | |
| parameter is provided, the handler context buffer will be searched for in this | |
| buffer structure which saves time by not performing a global search for the | |
| module buffer structure. | |
| @param[out] PrmContextBuffer A pointer to a pointer that will be set to the PRM context buffer | |
| if successfully found. | |
| @retval EFI_SUCCESS The PRM context buffer was found. | |
| @retval EFI_INVALID_PARAMETER A required parameter pointer is NULL. | |
| @retval EFI_NOT_FOUND The context buffer for the PRM handler could not be found. | |
| **/ | |
| EFI_STATUS | |
| GetContextBuffer ( | |
| IN CONST EFI_GUID *PrmHandlerGuid, | |
| IN CONST PRM_MODULE_CONTEXT_BUFFERS *PrmModuleContextBuffers OPTIONAL, | |
| OUT CONST PRM_CONTEXT_BUFFER **PrmContextBuffer | |
| ); | |
| #endif |