3 Copyright (c) 2017 - 2018, ARM Limited. All rights reserved.
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 - Cm or CM - Configuration Manager
18 #ifndef CONFIGURATION_MANAGER_PROTOCOL_H_
19 #define CONFIGURATION_MANAGER_PROTOCOL_H_
21 #include <ConfigurationManagerObject.h>
23 /** This macro defines the Configuration Manager Protocol GUID.
25 GUID: {D85A4835-5A82-4894-AC02-706F43D5978E}
27 #define EDKII_CONFIGURATION_MANAGER_PROTOCOL_GUID \
28 { 0xd85a4835, 0x5a82, 0x4894, \
29 { 0xac, 0x2, 0x70, 0x6f, 0x43, 0xd5, 0x97, 0x8e } \
32 /** This macro defines the Configuration Manager Protocol Revision.
34 #define EDKII_CONFIGURATION_MANAGER_PROTOCOL_REVISION CREATE_REVISION (1, 0)
41 typedef struct ConfigurationManagerProtocol EDKII_CONFIGURATION_MANAGER_PROTOCOL
;
42 typedef struct PlatformRepositoryInfo EDKII_PLATFORM_REPOSITORY_INFO
;
44 /** The GetObject function defines the interface implemented by the
45 Configuration Manager Protocol for returning the Configuration
48 @param [in] This Pointer to the Configuration Manager Protocol.
49 @param [in] CmObjectId The Configuration Manager Object ID.
50 @param [in] Token An optional token identifying the object. If
51 unused this must be CM_NULL_TOKEN.
52 @param [out] CmObject Pointer to the Configuration Manager Object
53 descriptor describing the requested Object.
55 @retval EFI_SUCCESS Success.
56 @retval EFI_INVALID_PARAMETER A parameter is invalid.
57 @retval EFI_NOT_FOUND The required object information is not found.
58 @retval EFI_BAD_BUFFER_SIZE The size returned by the Configuration Manager
59 is less than the Object size for the requested
64 (EFIAPI
* EDKII_CONFIGURATION_MANAGER_GET_OBJECT
) (
65 IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL
* CONST This
,
66 IN CONST CM_OBJECT_ID CmObjectId
,
67 IN CONST CM_OBJECT_TOKEN Token OPTIONAL
,
68 IN OUT CM_OBJ_DESCRIPTOR
* CONST CmObject
71 /** The SetObject function defines the interface implemented by the
72 Configuration Manager Protocol for updating the Configuration
75 @param [in] This Pointer to the Configuration Manager Protocol.
76 @param [in] CmObjectId The Configuration Manager Object ID.
77 @param [in] Token An optional token identifying the object. If
78 unused this must be CM_NULL_TOKEN.
79 @param [out] CmObject Pointer to the Configuration Manager Object
80 descriptor describing the Object.
82 @retval EFI_SUCCESS The operation completed successfully.
83 @retval EFI_INVALID_PARAMETER A parameter is invalid.
84 @retval EFI_NOT_FOUND The required object information is not found.
85 @retval EFI_BAD_BUFFER_SIZE The size returned by the Configuration Manager
86 is less than the Object size for the requested
88 @retval EFI_UNSUPPORTED This operation is not supported.
92 (EFIAPI
* EDKII_CONFIGURATION_MANAGER_SET_OBJECT
) (
93 IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL
* CONST This
,
94 IN CONST CM_OBJECT_ID CmObjectId
,
95 IN CONST CM_OBJECT_TOKEN Token OPTIONAL
,
96 IN CM_OBJ_DESCRIPTOR
* CONST CmObject
99 /** The EDKII_CONFIGURATION_MANAGER_PROTOCOL structure describes the
100 Configuration Manager Protocol interface.
102 typedef struct ConfigurationManagerProtocol
{
103 /// The Configuration Manager Protocol revision.
106 /** The interface used to request information about
107 the Configuration Manager Objects.
109 EDKII_CONFIGURATION_MANAGER_GET_OBJECT GetObject
;
111 /** The interface used to update the information stored
112 in the Configuration Manager repository.
114 EDKII_CONFIGURATION_MANAGER_SET_OBJECT SetObject
;
116 /** Pointer to an implementation defined abstract repository
117 provisioned by the Configuration Manager.
119 EDKII_PLATFORM_REPOSITORY_INFO
* PlatRepoInfo
;
120 } EDKII_CONFIGURATION_MANAGER_PROTOCOL
;
122 /** The Configuration Manager Protocol GUID.
124 extern EFI_GUID gEdkiiConfigurationManagerProtocolGuid
;
128 #endif // CONFIGURATION_MANAGER_PROTOCOL_H_