/** @file The PRM Module Discovery library provides functionality to discover PRM modules installed by platform firmware. Copyright (c) Microsoft Corporation SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef PRM_MODULE_DISCOVERY_LIB_H_ #define PRM_MODULE_DISCOVERY_LIB_H_ #include #include #include #include /** Gets the next PRM module discovered after the given PRM module. @param[in,out] ModuleImageContext A pointer to a pointer to a PRM module image context structure. @retval EFI_SUCCESS The next PRM module was found successfully. @retval EFI_INVALID_PARAMETER The given ModuleImageContext structure is invalid or the pointer is NULL. @retval EFI_NOT_FOUND The next PRM module was not found. **/ EFI_STATUS EFIAPI GetNextPrmModuleEntry ( IN OUT PRM_MODULE_IMAGE_CONTEXT **ModuleImageContext ); /** Discovers all PRM Modules loaded during boot. Each PRM Module discovered is placed into a linked list so the list can br processsed in the future. @param[out] ModuleCount An optional pointer parameter that, if provided, is set to the number of PRM modules discovered. @param[out] HandlerCount An optional pointer parameter that, if provided, is set to the number of PRM handlers discovered. @retval EFI_SUCCESS All PRM Modules were discovered successfully. @retval EFI_INVALID_PARAMETER An actual pointer parameter was passed as NULL. @retval EFI_NOT_FOUND The gEfiLoadedImageProtocolGuid protocol could not be found. @retval EFI_OUT_OF_RESOURCES Insufficient memory resources to allocate the new PRM Context linked list nodes. @retval EFI_ALREADY_STARTED The function was called previously and already discovered the PRM modules loaded on this boot. **/ EFI_STATUS EFIAPI DiscoverPrmModules ( OUT UINTN *ModuleCount OPTIONAL, OUT UINTN *HandlerCount OPTIONAL ); #endif