/** @file Copyright (c) 2017 - 2018, ARM Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent @par Glossary: - Cm or CM - Configuration Manager - Obj or OBJ - Object **/ #ifndef CONFIGURATION_MANAGER_PROTOCOL_H_ #define CONFIGURATION_MANAGER_PROTOCOL_H_ #include /** This macro defines the Configuration Manager Protocol GUID. GUID: {D85A4835-5A82-4894-AC02-706F43D5978E} */ #define EDKII_CONFIGURATION_MANAGER_PROTOCOL_GUID \ { 0xd85a4835, 0x5a82, 0x4894, \ { 0xac, 0x2, 0x70, 0x6f, 0x43, 0xd5, 0x97, 0x8e } \ }; /** This macro defines the Configuration Manager Protocol Revision. */ #define EDKII_CONFIGURATION_MANAGER_PROTOCOL_REVISION CREATE_REVISION (1, 0) #pragma pack(1) /** Forward declarations: */ typedef struct ConfigurationManagerProtocol EDKII_CONFIGURATION_MANAGER_PROTOCOL; typedef struct PlatformRepositoryInfo EDKII_PLATFORM_REPOSITORY_INFO; /** The GetObject function defines the interface implemented by the Configuration Manager Protocol for returning the Configuration Manager Objects. @param [in] This Pointer to the Configuration Manager Protocol. @param [in] CmObjectId The Configuration Manager Object ID. @param [in] Token An optional token identifying the object. If unused this must be CM_NULL_TOKEN. @param [out] CmObject Pointer to the Configuration Manager Object descriptor describing the requested Object. @retval EFI_SUCCESS Success. @retval EFI_INVALID_PARAMETER A parameter is invalid. @retval EFI_NOT_FOUND The required object information is not found. @retval EFI_BAD_BUFFER_SIZE The size returned by the Configuration Manager is less than the Object size for the requested object. **/ typedef EFI_STATUS (EFIAPI * EDKII_CONFIGURATION_MANAGER_GET_OBJECT) ( IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, IN CONST CM_OBJECT_ID CmObjectId, IN CONST CM_OBJECT_TOKEN Token OPTIONAL, IN OUT CM_OBJ_DESCRIPTOR * CONST CmObject ); /** The SetObject function defines the interface implemented by the Configuration Manager Protocol for updating the Configuration Manager Objects. @param [in] This Pointer to the Configuration Manager Protocol. @param [in] CmObjectId The Configuration Manager Object ID. @param [in] Token An optional token identifying the object. If unused this must be CM_NULL_TOKEN. @param [out] CmObject Pointer to the Configuration Manager Object descriptor describing the Object. @retval EFI_SUCCESS The operation completed successfully. @retval EFI_INVALID_PARAMETER A parameter is invalid. @retval EFI_NOT_FOUND The required object information is not found. @retval EFI_BAD_BUFFER_SIZE The size returned by the Configuration Manager is less than the Object size for the requested object. @retval EFI_UNSUPPORTED This operation is not supported. **/ typedef EFI_STATUS (EFIAPI * EDKII_CONFIGURATION_MANAGER_SET_OBJECT) ( IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, IN CONST CM_OBJECT_ID CmObjectId, IN CONST CM_OBJECT_TOKEN Token OPTIONAL, IN CM_OBJ_DESCRIPTOR * CONST CmObject ); /** The EDKII_CONFIGURATION_MANAGER_PROTOCOL structure describes the Configuration Manager Protocol interface. */ typedef struct ConfigurationManagerProtocol { /// The Configuration Manager Protocol revision. UINT32 Revision; /** The interface used to request information about the Configuration Manager Objects. */ EDKII_CONFIGURATION_MANAGER_GET_OBJECT GetObject; /** The interface used to update the information stored in the Configuration Manager repository. */ EDKII_CONFIGURATION_MANAGER_SET_OBJECT SetObject; /** Pointer to an implementation defined abstract repository provisioned by the Configuration Manager. */ EDKII_PLATFORM_REPOSITORY_INFO * PlatRepoInfo; } EDKII_CONFIGURATION_MANAGER_PROTOCOL; /** The Configuration Manager Protocol GUID. */ extern EFI_GUID gEdkiiConfigurationManagerProtocolGuid; #pragma pack() #endif // CONFIGURATION_MANAGER_PROTOCOL_H_