TianoCore EDK2 master
|
#include "SerializeVariablesLib.h"
Go to the source code of this file.
Functions | |
STATIC EFI_STATUS | UnpackVariableFromBuffer (IN VOID *Buffer, IN UINTN MaxSize, OUT CHAR16 **Name, OUT UINT32 *NameSize, OUT EFI_GUID **Guid, OUT UINT32 *Attributes, OUT UINT32 *DataSize, OUT VOID **Data, OUT UINTN *SizeUsed) |
STATIC EFI_STATUS | IterateVariablesInBuffer (IN VARIABLE_SERIALIZATION_ITERATION_CALLBACK CallbackFunction, IN VOID *CallbackContext, IN VOID *Buffer, IN UINTN MaxSize) |
STATIC RETURN_STATUS EFIAPI | IterateVariablesCallbackNop (IN VOID *Context, IN CHAR16 *VariableName, IN EFI_GUID *VendorGuid, IN UINT32 Attributes, IN UINTN DataSize, IN VOID *Data) |
STATIC RETURN_STATUS EFIAPI | IterateVariablesCallbackSetInInstance (IN VOID *Context, IN CHAR16 *VariableName, IN EFI_GUID *VendorGuid, IN UINT32 Attributes, IN UINTN DataSize, IN VOID *Data) |
STATIC RETURN_STATUS EFIAPI | IterateVariablesCallbackSetSystemVariable (IN VOID *Context, IN CHAR16 *VariableName, IN EFI_GUID *VendorGuid, IN UINT32 Attributes, IN UINTN DataSize, IN VOID *Data) |
STATIC RETURN_STATUS | EnsureExtraBufferSpace (IN SV_INSTANCE *Instance, IN UINTN Size) |
STATIC VOID | AppendToBuffer (IN SV_INSTANCE *Instance, IN VOID *Data, IN UINTN Size) |
RETURN_STATUS EFIAPI | SerializeVariablesNewInstance (OUT EFI_HANDLE *Handle) |
RETURN_STATUS EFIAPI | SerializeVariablesFreeInstance (IN EFI_HANDLE Handle) |
RETURN_STATUS EFIAPI | SerializeVariablesNewInstanceFromBuffer (OUT EFI_HANDLE *Handle, IN VOID *Buffer, IN UINTN Size) |
RETURN_STATUS EFIAPI | SerializeVariablesIterateSystemVariables (IN VARIABLE_SERIALIZATION_ITERATION_CALLBACK CallbackFunction, IN VOID *Context) |
RETURN_STATUS EFIAPI | SerializeVariablesIterateInstanceVariables (IN EFI_HANDLE Handle, IN VARIABLE_SERIALIZATION_ITERATION_CALLBACK CallbackFunction, IN VOID *Context) |
RETURN_STATUS EFIAPI | SerializeVariablesSetSerializedVariables (IN EFI_HANDLE Handle) |
RETURN_STATUS EFIAPI | SerializeVariablesAddVariable (IN EFI_HANDLE Handle, IN CHAR16 *VariableName, IN EFI_GUID *VendorGuid, IN UINT32 Attributes, IN UINTN DataSize, IN VOID *Data) |
RETURN_STATUS EFIAPI | SerializeVariablesToBuffer (IN EFI_HANDLE Handle, OUT VOID *Buffer, IN OUT UINTN *Size) |
Serialize Variables Library implementation
Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file SerializeVariablesLib.c.
Definition at line 353 of file SerializeVariablesLib.c.
STATIC RETURN_STATUS EnsureExtraBufferSpace | ( | IN SV_INSTANCE * | Instance, |
IN UINTN | Size | ||
) |
Definition at line 317 of file SerializeVariablesLib.c.
STATIC RETURN_STATUS EFIAPI IterateVariablesCallbackNop | ( | IN VOID * | Context, |
IN CHAR16 * | VariableName, | ||
IN EFI_GUID * | VendorGuid, | ||
IN UINT32 | Attributes, | ||
IN UINTN | DataSize, | ||
IN VOID * | Data | ||
) |
Definition at line 229 of file SerializeVariablesLib.c.
STATIC RETURN_STATUS EFIAPI IterateVariablesCallbackSetInInstance | ( | IN VOID * | Context, |
IN CHAR16 * | VariableName, | ||
IN EFI_GUID * | VendorGuid, | ||
IN UINT32 | Attributes, | ||
IN UINTN | DataSize, | ||
IN VOID * | Data | ||
) |
Definition at line 244 of file SerializeVariablesLib.c.
STATIC RETURN_STATUS EFIAPI IterateVariablesCallbackSetSystemVariable | ( | IN VOID * | Context, |
IN CHAR16 * | VariableName, | ||
IN EFI_GUID * | VendorGuid, | ||
IN UINT32 | Attributes, | ||
IN UINTN | DataSize, | ||
IN VOID * | Data | ||
) |
Definition at line 270 of file SerializeVariablesLib.c.
STATIC EFI_STATUS IterateVariablesInBuffer | ( | IN VARIABLE_SERIALIZATION_ITERATION_CALLBACK | CallbackFunction, |
IN VOID * | CallbackContext, | ||
IN VOID * | Buffer, | ||
IN UINTN | MaxSize | ||
) |
Iterates through the variables in the buffer, and calls a callback function for each variable found.
[in] | CallbackFunction | - Function called for each variable instance |
[in] | Context | - Passed to each call of CallbackFunction |
[in] | Buffer | - Buffer containing serialized variables |
[in] | MaxSize | - Size of Buffer in bytes |
Definition at line 124 of file SerializeVariablesLib.c.
RETURN_STATUS EFIAPI SerializeVariablesAddVariable | ( | IN EFI_HANDLE | Handle, |
IN CHAR16 * | VariableName, | ||
IN EFI_GUID * | VendorGuid, | ||
IN UINT32 | Attributes, | ||
IN UINTN | DataSize, | ||
IN VOID * | Data | ||
) |
Adds a variable to the variable serialization instance
[in] | Handle | - Handle for a variable serialization instance |
[in] | VariableName | - Refer to RuntimeServices GetVariable |
[in] | VendorGuid | - Refer to RuntimeServices GetVariable |
[in] | Attributes | - Refer to RuntimeServices GetVariable |
[in] | DataSize | - Refer to RuntimeServices GetVariable |
[in] | Data | - Refer to RuntimeServices GetVariable |
RETURN_SUCCESS | - All variables were set successfully |
RETURN_OUT_OF_RESOURCES | - There we not enough resources to add the variable |
RETURN_INVALID_PARAMETER | - Handle was not a valid variable serialization instance or VariableName, VariableGuid or Data are NULL. |
Definition at line 745 of file SerializeVariablesLib.c.
RETURN_STATUS EFIAPI SerializeVariablesFreeInstance | ( | IN EFI_HANDLE | Handle | ) |
Free memory associated with a variable serialization instance
[in] | Handle | - Handle for a variable serialization instance |
RETURN_SUCCESS | - The variable serialization instance was successfully freed. |
RETURN_INVALID_PARAMETER | - Handle was not a valid variable serialization instance. |
Definition at line 419 of file SerializeVariablesLib.c.
RETURN_STATUS EFIAPI SerializeVariablesIterateInstanceVariables | ( | IN EFI_HANDLE | Handle, |
IN VARIABLE_SERIALIZATION_ITERATION_CALLBACK | CallbackFunction, | ||
IN VOID * | Context | ||
) |
Iterates all variables found in the variable serialization instance
[in] | Handle | - Handle for a variable serialization instance |
[in] | CallbackFunction | - Function called for each variable instance |
[in] | Context | - Passed to each call of CallbackFunction |
RETURN_SUCCESS | - All variables were iterated without the CallbackFunction returning an error |
RETURN_OUT_OF_RESOURCES | - There we not enough resources to iterate through the variables |
Definition at line 678 of file SerializeVariablesLib.c.
RETURN_STATUS EFIAPI SerializeVariablesIterateSystemVariables | ( | IN VARIABLE_SERIALIZATION_ITERATION_CALLBACK | CallbackFunction, |
IN VOID * | Context | ||
) |
Iterates all variables found with RuntimeServices GetNextVariableName
[in] | CallbackFunction | - Function called for each variable instance |
[in] | Context | - Passed to each call of CallbackFunction |
RETURN_SUCCESS | - All variables were iterated without the CallbackFunction returning an error |
RETURN_OUT_OF_RESOURCES | - There we not enough resources to iterate through the variables |
Definition at line 515 of file SerializeVariablesLib.c.
RETURN_STATUS EFIAPI SerializeVariablesNewInstance | ( | OUT EFI_HANDLE * | Handle | ) |
Creates a new variable serialization instance
[out] | Handle | - Handle for a variable serialization instance |
RETURN_SUCCESS | - The variable serialization instance was successfully created. |
RETURN_OUT_OF_RESOURCES | - There we not enough resources to create the variable serialization instance. |
Definition at line 389 of file SerializeVariablesLib.c.
RETURN_STATUS EFIAPI SerializeVariablesNewInstanceFromBuffer | ( | OUT EFI_HANDLE * | Handle, |
IN VOID * | Buffer, | ||
IN UINTN | Size | ||
) |
Creates a new variable serialization instance using the given binary representation of the variables to fill the new instance
[out] | Handle | - Handle for a variable serialization instance |
[in] | Buffer | - A buffer with the serialized representation of the variables. Must be the same format as produced by SerializeVariablesToBuffer. |
[in] | Size | - This is the size of the binary representation of the variables. |
RETURN_SUCCESS | - The binary representation was successfully imported into a new variable serialization instance |
RETURN_OUT_OF_RESOURCES | - There we not enough resources to create the new variable serialization instance |
Definition at line 461 of file SerializeVariablesLib.c.
RETURN_STATUS EFIAPI SerializeVariablesSetSerializedVariables | ( | IN EFI_HANDLE | Handle | ) |
Sets all variables found in the variable serialization instance
[in] | Handle | - Handle for a variable serialization instance |
RETURN_SUCCESS | - All variables were set successfully |
RETURN_OUT_OF_RESOURCES | - There we not enough resources to set all the variables |
Definition at line 714 of file SerializeVariablesLib.c.
RETURN_STATUS EFIAPI SerializeVariablesToBuffer | ( | IN EFI_HANDLE | Handle, |
OUT VOID * | Buffer, | ||
IN OUT UINTN * | Size | ||
) |
Serializes the variables known to this instance into the provided buffer.
[in] | Handle | - Handle for a variable serialization instance |
[out] | Buffer | - A buffer to store the binary representation of the variables. |
[in,out] | Size | - On input this is the size of the buffer. On output this is the size of the binary representation of the variables. |
RETURN_SUCCESS | - The binary representation was successfully completed and returned in the buffer. |
RETURN_OUT_OF_RESOURCES | - There we not enough resources to save the variables to the buffer. |
RETURN_INVALID_PARAMETER | - Handle was not a valid variable serialization instance or Size or Buffer were NULL. |
RETURN_BUFFER_TOO_SMALL | - The Buffer size as indicated by the Size parameter was too small for the serialized variable data. Size is returned with the required size. |
Definition at line 844 of file SerializeVariablesLib.c.
STATIC EFI_STATUS UnpackVariableFromBuffer | ( | IN VOID * | Buffer, |
IN UINTN | MaxSize, | ||
OUT CHAR16 ** | Name, | ||
OUT UINT32 * | NameSize, | ||
OUT EFI_GUID ** | Guid, | ||
OUT UINT32 * | Attributes, | ||
OUT UINT32 * | DataSize, | ||
OUT VOID ** | Data, | ||
OUT UINTN * | SizeUsed | ||
) |
Serialization format:
The SerializeVariablesLib interface does not specify a format for the serialization of the variable data. This library uses a packed array of a non-uniformly sized data structure elements.
Each variable is stored (packed) as: UINT32 VendorNameSize; // Name size in bytes CHAR16 VendorName[?]; // The variable unicode name including the null terminating character. EFI_GUID VendorGuid; // The variable GUID UINT32 DataSize; // The size of variable data in bytes UINT8 Data[?]; // The variable data Unpacks the next variable from the buffer
[in] | Buffer | - Buffer pointing to the next variable instance On subsequent calls, the pointer should be incremented by the returned SizeUsed value. |
[in] | MaxSize | - Max allowable size for the variable data On subsequent calls, this should be decremented by the returned SizeUsed value. |
[out] | Name | - Variable name string (address in Buffer) |
[out] | NameSize | - Size of Name in bytes |
[out] | Guid | - GUID of variable (address in Buffer) |
[out] | Attributes | - Attributes of variable |
[out] | Data | - Buffer containing Data for variable (address in Buffer) |
[out] | DataSize | - Size of Data in bytes |
[out] | SizeUsed | - Total size used for this variable instance in Buffer |
Definition at line 50 of file SerializeVariablesLib.c.