]> git.proxmox.com Git - mirror_edk2.git/blob - OvmfPkg/Include/Library/SerializeVariablesLib.h
OvmfPkg/PciHostBridgeLib: Extract GetRootBridges() / FreeRootBridges()
[mirror_edk2.git] / OvmfPkg / Include / Library / SerializeVariablesLib.h
1 /** @file
2 Serialize & Deserialize UEFI Variables
3
4 Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #ifndef __SERIALIZE_VARIABLES_LIB__
10 #define __SERIALIZE_VARIABLES_LIB__
11
12
13 /**
14 Callback function for each variable
15
16 @param[in] Context - Context as sent to the iteration function
17 @param[in] VariableName - Refer to RuntimeServices GetNextVariableName
18 @param[in] VendorGuid - Refer to RuntimeServices GetNextVariableName
19 @param[in] Attributes - Refer to RuntimeServices GetVariable
20 @param[in] DataSize - Refer to RuntimeServices GetVariable
21 @param[in] Data - Refer to RuntimeServices GetVariable
22
23 @retval RETURN_SUCCESS Continue iterating through the variables
24 @return Any RETURN_ERROR Stop iterating through the variables
25
26 **/
27 typedef
28 RETURN_STATUS
29 (EFIAPI *VARIABLE_SERIALIZATION_ITERATION_CALLBACK)(
30 IN VOID *Context,
31 IN CHAR16 *VariableName,
32 IN EFI_GUID *VendorGuid,
33 IN UINT32 Attributes,
34 IN UINTN DataSize,
35 IN VOID *Data
36 );
37
38
39 /**
40 Creates a new variable serialization instance
41
42 @param[out] Handle - Handle for a variable serialization instance
43
44 @retval RETURN_SUCCESS - The variable serialization instance was
45 successfully created.
46 @retval RETURN_OUT_OF_RESOURCES - There we not enough resources to
47 create the variable serialization instance.
48
49 **/
50 RETURN_STATUS
51 EFIAPI
52 SerializeVariablesNewInstance (
53 OUT EFI_HANDLE *Handle
54 );
55
56
57 /**
58 Free memory associated with a variable serialization instance
59
60 @param[in] Handle - Handle for a variable serialization instance
61
62 @retval RETURN_SUCCESS - The variable serialization instance was
63 successfully freed.
64 @retval RETURN_INVALID_PARAMETER - Handle was not a valid
65 variable serialization instance.
66
67 **/
68 RETURN_STATUS
69 EFIAPI
70 SerializeVariablesFreeInstance (
71 IN EFI_HANDLE Handle
72 );
73
74
75 /**
76 Creates a new variable serialization instance using the given
77 binary representation of the variables to fill the new instance
78
79 @param[out] Handle - Handle for a variable serialization instance
80 @param[in] Buffer - A buffer with the serialized representation
81 of the variables. Must be the same format as produced
82 by SerializeVariablesToBuffer.
83 @param[in] Size - This is the size of the binary representation
84 of the variables.
85
86 @retval RETURN_SUCCESS - The binary representation was successfully
87 imported into a new variable serialization instance
88 @retval RETURN_OUT_OF_RESOURCES - There we not enough resources to
89 create the new variable serialization instance
90
91 **/
92 RETURN_STATUS
93 EFIAPI
94 SerializeVariablesNewInstanceFromBuffer (
95 OUT EFI_HANDLE *Handle,
96 IN VOID *Buffer,
97 IN UINTN Size
98 );
99
100
101 /**
102 Iterates all variables found with RuntimeServices GetNextVariableName
103
104 @param[in] CallbackFunction - Function called for each variable instance
105 @param[in] Context - Passed to each call of CallbackFunction
106
107 @retval RETURN_SUCCESS - All variables were iterated without the
108 CallbackFunction returning an error
109 @retval RETURN_OUT_OF_RESOURCES - There we not enough resources to
110 iterate through the variables
111 @return Any of RETURN_ERROR indicates an error reading the variable
112 or an error was returned from CallbackFunction
113
114 **/
115 RETURN_STATUS
116 EFIAPI
117 SerializeVariablesIterateSystemVariables (
118 IN VARIABLE_SERIALIZATION_ITERATION_CALLBACK CallbackFunction,
119 IN VOID *Context
120 );
121
122
123 /**
124 Iterates all variables found in the variable serialization instance
125
126 @param[in] Handle - Handle for a variable serialization instance
127 @param[in] CallbackFunction - Function called for each variable instance
128 @param[in] Context - Passed to each call of CallbackFunction
129
130 @retval RETURN_SUCCESS - All variables were iterated without the
131 CallbackFunction returning an error
132 @retval RETURN_OUT_OF_RESOURCES - There we not enough resources to
133 iterate through the variables
134 @return Any of RETURN_ERROR indicates an error reading the variable
135 or an error was returned from CallbackFunction
136
137 **/
138 RETURN_STATUS
139 EFIAPI
140 SerializeVariablesIterateInstanceVariables (
141 IN EFI_HANDLE Handle,
142 IN VARIABLE_SERIALIZATION_ITERATION_CALLBACK CallbackFunction,
143 IN VOID *Context
144 );
145
146
147 /**
148 Sets all variables found in the variable serialization instance
149
150 @param[in] Handle - Handle for a variable serialization instance
151
152 @retval RETURN_SUCCESS - All variables were set successfully
153 @retval RETURN_OUT_OF_RESOURCES - There we not enough resources to
154 set all the variables
155 @return Any of RETURN_ERROR indicates an error reading the variables
156 or in attempting to set a variable
157
158 **/
159 RETURN_STATUS
160 EFIAPI
161 SerializeVariablesSetSerializedVariables (
162 IN EFI_HANDLE Handle
163 );
164
165
166 /**
167 Adds a variable to the variable serialization instance
168
169 @param[in] Handle - Handle for a variable serialization instance
170 @param[in] VariableName - Refer to RuntimeServices GetVariable
171 @param[in] VendorGuid - Refer to RuntimeServices GetVariable
172 @param[in] Attributes - Refer to RuntimeServices GetVariable
173 @param[in] DataSize - Refer to RuntimeServices GetVariable
174 @param[in] Data - Refer to RuntimeServices GetVariable
175
176 @retval RETURN_SUCCESS - All variables were set successfully
177 @retval RETURN_OUT_OF_RESOURCES - There we not enough resources to
178 add the variable
179
180 **/
181 RETURN_STATUS
182 EFIAPI
183 SerializeVariablesAddVariable (
184 IN EFI_HANDLE Handle,
185 IN CHAR16 *VariableName,
186 IN EFI_GUID *VendorGuid,
187 IN UINT32 Attributes,
188 IN UINTN DataSize,
189 IN VOID *Data
190 );
191
192
193 /**
194 Serializes the variables known to this instance into the
195 provided buffer.
196
197 @param[in] Handle - Handle for a variable serialization instance
198 @param[out] Buffer - A buffer to store the binary representation
199 of the variables.
200 @param[in,out] Size - On input this is the size of the buffer.
201 On output this is the size of the binary representation
202 of the variables.
203
204 @retval RETURN_SUCCESS - The binary representation was successfully
205 completed and returned in the buffer.
206 @retval RETURN_OUT_OF_RESOURCES - There we not enough resources to
207 save the variables to the buffer.
208 @retval RETURN_INVALID_PARAMETER - Handle was not a valid
209 variable serialization instance or
210 Size or Buffer were NULL.
211
212 **/
213 RETURN_STATUS
214 EFIAPI
215 SerializeVariablesToBuffer (
216 IN EFI_HANDLE Handle,
217 OUT VOID *Buffer,
218 IN OUT UINTN *Size
219 );
220
221
222 #endif
223