/** @file Metadata Handler Library. Copyright (c) 2025, Arm Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef METADATA_HANDLER_LIB_H_ #define METADATA_HANDLER_LIB_H_ #include /** Query the MetadataObjLib for metadata matching the input (Type/Token). If the metadata exists, return it. Otherwise: - Generate a new metadata object - Add it to the MetadataObjLib - return it @param[in] Root Root of the Metadata information. @param[in] Type METADATA_TYPE of the entry to generate. @param[in] Token Token uniquely identifying an entry among other objects with the input METADATA_TYPE. @param[in] Context Optional context to use during the Metadata generation. @param[in, out] Metadata On input, can contain METADATA_TYPE-specific information. On output and if success, contains the generated Metadata object. @param[in] MetadataSize Size of the input Metadata. @retval EFI_SUCCESS Success. @retval EFI_INVALID_PARAMETER A parameter is invalid. **/ EFI_STATUS EFIAPI MetadataHandlerGenerate ( IN METADATA_ROOT_HANDLE Root, IN METADATA_TYPE Type, IN CM_OBJECT_TOKEN Token, IN VOID *Context, IN OUT VOID *Metadata, IN UINT32 MetadataSize ); /** Validate the Metadata. @param[in] Root Root of the Metadata information. @retval EFI_SUCCESS Success. @retval EFI_INVALID_PARAMETER A parameter is invalid. **/ EFI_STATUS EFIAPI MetadataHandlerValidate ( IN METADATA_ROOT_HANDLE Root ); #endif // METADATA_HANDLER_LIB_H_