541 lines
25 KiB
C
541 lines
25 KiB
C
/** @file
|
|
Header file for Variable Library Class
|
|
|
|
;******************************************************************************
|
|
;* Copyright (c) 2013 - 2020, Insyde Software Corp. All Rights Reserved.
|
|
;*
|
|
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
|
|
;* transmit, broadcast, present, recite, release, license or otherwise exploit
|
|
;* any part of this publication in any form, by any means, without the prior
|
|
;* written permission of Insyde Software Corporation.
|
|
;*
|
|
;*****************************************************************************3*
|
|
*/
|
|
|
|
#ifndef _VARIABLE_LIB_H_
|
|
#define _VARIABLE_LIB_H_
|
|
|
|
#include <SensitiveVariableFormat.h>
|
|
#include <H2OBoardId.h>
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) according to input variable data size.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[in, out] VariableDataSize Returns the size of the EFI variable that was read.
|
|
@param[out] VariableData Points to the buffer which will hold the returned variable value. May be NULL with a
|
|
zero VariableDataSize in order to determine the size of the buffer needed.
|
|
|
|
@retval EFI_SUCCESS Get EFI variable Successful.
|
|
@retval EFI_INVALID_PARAMETER VariableName is NULL or VendorGuid is NULL or VariableDataSize is NULL or VariableData
|
|
is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific EFI variable.
|
|
@retval EFI_BUFFER_TOO_SMALL Input variable data size is too small. VariableDataSize has been updated with the size
|
|
needed to complete the request.
|
|
@return Other Other errors cause get variable failed.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonGetVariable (
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid,
|
|
IN OUT UINTN *VariableDataSize,
|
|
OUT VOID *VariableData
|
|
);
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) and return a dynamically allocated buffer.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
|
|
@retval NULL The variable could not be retrieved.
|
|
@retval NULL There are not enough resources available for the variable contents.
|
|
@retval Other A pointer to allocated buffer containing the variable contents.
|
|
**/
|
|
VOID *
|
|
EFIAPI
|
|
CommonGetVariableData (
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid
|
|
);
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) and return a dynamically allocated
|
|
buffer, and the size of the buffer.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[out] VariableDataSize Returns the size of the EFI variable that was read.
|
|
@param[out] VariableData Dynamically allocated memory that contains a copy of the EFI variable.
|
|
Caller is responsible freeing the buffer.
|
|
|
|
@retval EFI_SUCCESS Get EFI variable Successful.
|
|
@retval EFI_INVALID_PARAMETER VariableName is NULL or VendorGuid is NULL or VariableDataSize is NULL or VariableData
|
|
is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific EFI variable.
|
|
@retval EFI_OUT_OF_RESOURCES Allocate memory for read variable data failed.
|
|
@return Other Other errors cause get variable failed.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonGetVariableDataAndSize (
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid,
|
|
OUT UINTN *VariableDataSize,
|
|
OUT VOID **VariableData
|
|
);
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) and return a dynamically allocated
|
|
buffer, and the size of the buffer.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[out] VariableDataSize Returns the size of the EFI variable that was read.
|
|
@param[out] VariableData Dynamically allocated memory that contains a copy of the EFI variable.
|
|
Caller is responsible freeing the buffer.
|
|
@param[in] DefaultVariableDataSize Default variable data size.
|
|
@param[in] DefaultVariableData Pointer to default variable data.
|
|
|
|
@retval TRUE The variable exists and the VariableDataSize and VariableData is filled by variable
|
|
data size and variable data respectively.
|
|
@retval FALSE The variable doesn't exit and the VariableDataSize and VariableData is filled by
|
|
default variable data size and default variable data respectively.
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
CommonGetVariableWithDefault (
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid,
|
|
OUT UINTN *VariableDataSize,
|
|
OUT VOID **VariableData,
|
|
IN UINTN DefaultVariableDataSize,
|
|
IN VOID *DefaultVariableData
|
|
);
|
|
|
|
/**
|
|
Enumerates the current variable names.
|
|
|
|
@param[in,out] VariableNameSize The size of the VariableName buffer.
|
|
@param[in,out] VariableName On input, supplies the last VariableName that was returned by GetNextVariableName().
|
|
On output, returns the Null-terminated string of the current variable.
|
|
@param[in,out] VendorGuid On input, supplies the last VendorGuid that was returned by GetNextVariableName().
|
|
On output, returns the VendorGuid of the current variable.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_NOT_FOUND The next variable was not found.
|
|
@retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the result. VariableNameSize has been updated
|
|
with the size needed to complete the request.
|
|
@retval EFI_INVALID_PARAMETER VariableNameSize is NULL or VariableName is NULL or VendorGuid is NULL.
|
|
@retval EFI_DEVICE_ERROR The variable name could not be retrieved due to a hardware error.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonGetNextVariableName (
|
|
IN OUT UINTN *VariableNameSize,
|
|
IN OUT CHAR16 *VariableName,
|
|
IN OUT EFI_GUID *VendorGuid
|
|
);
|
|
|
|
/**
|
|
Sets the value of a variable.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[in] Attributes Attributes bitmask to set for the variable
|
|
@param[in] DataSize The size in bytes of the Data buffer.
|
|
@param[in] Data The contents for the variable.
|
|
|
|
@retval EFI_SUCCESS The firmware has successfully stored the variable and its data as defined by
|
|
the Attributes.
|
|
@retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, and GUID was supplied, or the
|
|
DataSize exceeds the maximum allowed or name is a empty string.
|
|
@retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the variable and its data.
|
|
@retval EFI_DEVICE_ERROR The variable name could not be retrieved due to a hardware error.
|
|
@retval EFI_WRITE_PROTECTED The variable in question is read-only or the variable cannot be deleted.
|
|
@retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS or
|
|
EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS being set, but the AuthInfo does
|
|
NOT pass the validation check carried out by the firmware.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonSetVariable (
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid,
|
|
IN UINT32 Attributes,
|
|
IN UINTN DataSize,
|
|
IN VOID *Data
|
|
);
|
|
|
|
/**
|
|
Set changed sensitive setup data to sensitive setup variable.
|
|
|
|
@param[in] VariableName A pointer to a null-terminated string that is the variable's name.
|
|
@param[in] VendorGuid A pointer to an EFI_GUID that is the variable's GUID. The combination of
|
|
VendorGuid and VariableName must be unique.
|
|
@param[in] Attributes Attributes bitmask to set for the variable.
|
|
@param[out] DataSize The data size by byte of variable
|
|
@param[out] Data Pointer to the start address of data.
|
|
|
|
@retval EFI_SUCCESS Set variable from sensitive variable successfully.
|
|
@retval EFI_INVALID_PARAMETER Any input parameter is incorrect.
|
|
@retval EFI_NOT_FOUND Cannot set specific variable in sensitive setup variable.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
SetVariableToSensitiveVariable (
|
|
IN CONST CHAR16 *VariableName,
|
|
IN CONST EFI_GUID *VendorGuid,
|
|
IN UINT32 Attributes,
|
|
IN UINTN DataSize,
|
|
IN VOID *Data
|
|
);
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) according to input variable data size.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[in] SkuId Input SKU ID.
|
|
@param[in] Attributes Attribute value of the variable found.
|
|
@param[in, out] VariableDataSize Returns the size of the EFI variable that was read.
|
|
@param[out] VariableData Dynamically allocated memory that contains a copy of the EFI variable.
|
|
Caller is responsible freeing the buffer.
|
|
|
|
@retval EFI_SUCCESS Get EFI variable Successful.
|
|
@retval EFI_INVALID_PARAMETER VariableName is NULL or VendorGuid is NULL or VariableDataSize is NULL or VariableData
|
|
is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific EFI variable.
|
|
@retval EFI_BUFFER_TOO_SMALL Input variable data size is too small. VariableDataSize has been updated with the size
|
|
needed to complete the request.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonGetDefaultVariable (
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid,
|
|
IN H2O_BOARD_ID SkuId,
|
|
IN UINT32 *Attributes, OPTIONAL
|
|
IN OUT UINTN *VariableDataSize,
|
|
OUT VOID *VariableData
|
|
);
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) and return a dynamically allocated
|
|
buffer, and the size of the buffer.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[in] SkuId Input SKU ID.
|
|
@param[in] Attributes Attribute value of the variable found.
|
|
@param[out] VariableDataSize Returns the size of the EFI variable that was read.
|
|
@param[out] VariableData Dynamically allocated memory that contains a copy of the EFI variable.
|
|
Caller is responsible freeing the buffer.
|
|
|
|
@retval EFI_SUCCESS Get EFI variable Successful.
|
|
@retval EFI_INVALID_PARAMETER VariableName is NULL or VendorGuid is NULL or VariableDataSize is NULL or VariableData
|
|
is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific EFI variable.
|
|
@retval EFI_OUT_OF_RESOURCES Allocate memory for read variable data failed.
|
|
@return Other Other errors cause get variable failed.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonGetDefaultVariableDataAndSize (
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid,
|
|
IN H2O_BOARD_ID SkuId,
|
|
IN UINT32 *Attributes, OPTIONAL
|
|
OUT UINTN *VariableDataSize,
|
|
OUT VOID **VariableData
|
|
);
|
|
|
|
/**
|
|
Check the input variable is stored in variable store region.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
|
|
@retval TRUE Variable is stored in variable store region.
|
|
@retval FALSE Variable isn't stored in variable store region or doesn't exist.
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
IsVariableInVariableStoreRegion (
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid
|
|
);
|
|
|
|
#ifdef SOURCE_CODE_ANALYSIS_BUILD
|
|
#pragma warning( push )
|
|
#pragma warning (disable: 28301)
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) according to input variable data size.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[in, out] VariableDataSize Returns the size of the EFI variable that was read.
|
|
@param[out] VariableData Points to the buffer which will hold the returned variable value. May be NULL with a
|
|
zero VariableDataSize in order to determine the size of the buffer needed.
|
|
|
|
@retval EFI_SUCCESS Get EFI variable Successful.
|
|
@retval EFI_INVALID_PARAMETER VariableName is NULL or VendorGuid is NULL or VariableDataSize is NULL or VariableData
|
|
is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific EFI variable.
|
|
@retval EFI_BUFFER_TOO_SMALL Input variable data size is too small. VariableDataSize has been updated with the size
|
|
needed to complete the request.
|
|
@return Other Other errors cause get variable failed.
|
|
**/
|
|
_Must_inspect_result_
|
|
_Success_(return == 0)
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonGetVariable (
|
|
_In_ IN CHAR16 *VariableName,
|
|
_In_ IN EFI_GUID *VendorGuid,
|
|
_Inout_ IN OUT UINTN *VariableDataSize,
|
|
_Out_opt_ OUT VOID *VariableData
|
|
);
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) and return a dynamically allocated buffer.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
|
|
@retval NULL The variable could not be retrieved.
|
|
@retval NULL There are not enough resources available for the variable contents.
|
|
@retval Other A pointer to allocated buffer containing the variable contents.
|
|
**/
|
|
_Check_return_ _Ret_maybenull_
|
|
VOID *
|
|
EFIAPI
|
|
CommonGetVariableData (
|
|
_In_ IN CHAR16 *VariableName,
|
|
_In_ IN EFI_GUID *VendorGuid
|
|
);
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) and return a dynamically allocated
|
|
buffer, and the size of the buffer.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[out] VariableDataSize Returns the size of the EFI variable that was read.
|
|
@param[out] VariableData Dynamically allocated memory that contains a copy of the EFI variable.
|
|
Caller is responsible freeing the buffer.
|
|
|
|
@retval EFI_SUCCESS Get EFI variable Successful.
|
|
@retval EFI_INVALID_PARAMETER VariableName is NULL or VendorGuid is NULL or VariableDataSize is NULL or VariableData
|
|
is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific EFI variable.
|
|
@retval EFI_OUT_OF_RESOURCES Allocate memory for read variable data failed.
|
|
@return Other Other errors cause get variable failed.
|
|
**/
|
|
_Success_(return == 0)
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonGetVariableDataAndSize (
|
|
_In_ IN CHAR16 *VariableName,
|
|
_In_ IN EFI_GUID *VendorGuid,
|
|
_Out_ OUT UINTN *VariableDataSize,
|
|
_Outptr_result_buffer_(*VariableDataSize) OUT VOID **VariableData
|
|
);
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) and return a dynamically allocated
|
|
buffer, and the size of the buffer.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[out] VariableDataSize Returns the size of the EFI variable that was read.
|
|
@param[out] VariableData Dynamically allocated memory that contains a copy of the EFI variable.
|
|
Caller is responsible freeing the buffer.
|
|
@param[in] DefaultVariableDataSize Default variable data size.
|
|
@param[in] DefaultVariableData Pointer to default variable data.
|
|
|
|
@retval TRUE The variable exists and the VariableDataSize and VariableData is filled by variable
|
|
data size and variable data respectively.
|
|
@retval FALSE The variable doesn't exit and the VariableDataSize and VariableData is filled by
|
|
default variable data size and default variable data respectively.
|
|
**/
|
|
_Must_inspect_result_
|
|
_Success_(return != 0)
|
|
BOOLEAN
|
|
EFIAPI
|
|
CommonGetVariableWithDefault (
|
|
_In_ IN CHAR16 *VariableName,
|
|
_In_ IN EFI_GUID *VendorGuid,
|
|
_Out_ OUT UINTN *VariableDataSize,
|
|
_Outptr_result_buffer_(*VariableDataSize) OUT VOID **VariableData,
|
|
_In_ IN UINTN DefaultVariableDataSize,
|
|
_In_ IN VOID *DefaultVariableData
|
|
);
|
|
|
|
/**
|
|
Enumerates the current variable names.
|
|
|
|
@param[in,out] VariableNameSize The size of the VariableName buffer.
|
|
@param[in,out] VariableName On input, supplies the last VariableName that was returned by GetNextVariableName().
|
|
On output, returns the Null-terminated string of the current variable.
|
|
@param[in,out] VendorGuid On input, supplies the last VendorGuid that was returned by GetNextVariableName().
|
|
On output, returns the VendorGuid of the current variable.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_NOT_FOUND The next variable was not found.
|
|
@retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the result. VariableNameSize has been updated
|
|
with the size needed to complete the request.
|
|
@retval EFI_INVALID_PARAMETER VariableNameSize is NULL or VariableName is NULL or VendorGuid is NULL.
|
|
@retval EFI_DEVICE_ERROR The variable name could not be retrieved due to a hardware error.
|
|
**/
|
|
_Must_inspect_result_
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonGetNextVariableName (
|
|
_Inout_ IN OUT UINTN *VariableNameSize,
|
|
_Inout_ IN OUT CHAR16 *VariableName,
|
|
_Inout_ IN OUT EFI_GUID *VendorGuid
|
|
);
|
|
|
|
/**
|
|
Sets the value of a variable.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[in] Attributes Attributes bitmask to set for the variable
|
|
@param[in] DataSize The size in bytes of the Data buffer.
|
|
@param[in] Data The contents for the variable.
|
|
|
|
@retval EFI_SUCCESS The firmware has successfully stored the variable and its data as defined by
|
|
the Attributes.
|
|
@retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, and GUID was supplied, or the
|
|
DataSize exceeds the maximum allowed or name is a empty string.
|
|
@retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the variable and its data.
|
|
@retval EFI_DEVICE_ERROR The variable name could not be retrieved due to a hardware error.
|
|
@retval EFI_WRITE_PROTECTED The variable in question is read-only or the variable cannot be deleted.
|
|
@retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS or
|
|
EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS being set, but the AuthInfo does
|
|
NOT pass the validation check carried out by the firmware.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonSetVariable (
|
|
_In_ IN CHAR16 *VariableName,
|
|
_In_ IN EFI_GUID *VendorGuid,
|
|
_In_ IN UINT32 Attributes,
|
|
_In_ IN UINTN DataSize,
|
|
_In_opt_ IN VOID *Data
|
|
);
|
|
|
|
/**
|
|
Set changed sensitive setup data to sensitive setup variable.
|
|
|
|
@param[in] VariableName A pointer to a null-terminated string that is the variable's name.
|
|
@param[in] VendorGuid A pointer to an EFI_GUID that is the variable's GUID. The combination of
|
|
VendorGuid and VariableName must be unique.
|
|
@param[in] Attributes Attributes bitmask to set for the variable.
|
|
@param[out] DataSize The data size by byte of variable
|
|
@param[out] Data Pointer to the start address of data.
|
|
|
|
@retval EFI_SUCCESS Set variable from sensitive variable successfully.
|
|
@retval EFI_INVALID_PARAMETER Any input parameter is incorrect.
|
|
@retval EFI_NOT_FOUND Cannot set specific variable in sensitive setup variable.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
SetVariableToSensitiveVariable (
|
|
_In_ IN CONST CHAR16 *VariableName,
|
|
_In_ IN CONST EFI_GUID *VendorGuid,
|
|
_In_ IN UINT32 Attributes,
|
|
_In_ IN UINTN DataSize,
|
|
_In_opt_ IN VOID *Data
|
|
);
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) according to input variable data size.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[in] SkuId Input SKU ID.
|
|
@param[in] Attributes Attribute value of the variable found.
|
|
@param[in, out] VariableDataSize Returns the size of the EFI variable that was read.
|
|
@param[out] VariableData Dynamically allocated memory that contains a copy of the EFI variable.
|
|
Caller is responsible freeing the buffer.
|
|
|
|
@retval EFI_SUCCESS Get EFI variable Successful.
|
|
@retval EFI_INVALID_PARAMETER VariableName is NULL or VendorGuid is NULL or VariableDataSize is NULL or VariableData
|
|
is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific EFI variable.
|
|
@retval EFI_BUFFER_TOO_SMALL Input variable data size is too small. VariableDataSize has been updated with the size
|
|
needed to complete the request.
|
|
**/
|
|
_Must_inspect_result_
|
|
_Success_(return == 0)
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonGetDefaultVariable (
|
|
_In_ IN CHAR16 *VariableName,
|
|
_In_ IN EFI_GUID *VendorGuid,
|
|
_In_ IN H2O_BOARD_ID SkuId,
|
|
_In_opt_ IN UINT32 *Attributes, OPTIONAL
|
|
_Inout_ IN OUT UINTN *VariableDataSize,
|
|
_Out_opt_ OUT VOID *VariableData
|
|
);
|
|
|
|
/**
|
|
Read the EFI variable (VariableName/VendorGuid) and return a dynamically allocated
|
|
buffer, and the size of the buffer.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
@param[in] SkuId Input SKU ID.
|
|
@param[in] Attributes Attribute value of the variable found.
|
|
@param[out] VariableDataSize Returns the size of the EFI variable that was read.
|
|
@param[out] VariableData Dynamically allocated memory that contains a copy of the EFI variable.
|
|
Caller is responsible freeing the buffer.
|
|
|
|
@retval EFI_SUCCESS Get EFI variable Successful.
|
|
@retval EFI_INVALID_PARAMETER VariableName is NULL or VendorGuid is NULL or VariableDataSize is NULL or VariableData
|
|
is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific EFI variable.
|
|
@retval EFI_OUT_OF_RESOURCES Allocate memory for read variable data failed.
|
|
@return Other Other errors cause get variable failed.
|
|
**/
|
|
_Success_(return == 0)
|
|
EFI_STATUS
|
|
EFIAPI
|
|
CommonGetDefaultVariableDataAndSize (
|
|
_In_ IN CHAR16 *VariableName,
|
|
_In_ IN EFI_GUID *VendorGuid,
|
|
_In_ IN H2O_BOARD_ID SkuId,
|
|
_In_opt_ IN UINT32 *Attributes, OPTIONAL
|
|
_Out_ OUT UINTN *VariableDataSize,
|
|
_Outptr_result_buffer_(*VariableDataSize) OUT VOID **VariableData
|
|
);
|
|
|
|
/**
|
|
Check the input variable is stored in variable store region.
|
|
|
|
@param[in] VariableName String part of EFI variable name.
|
|
@param[in] VendorGuid GUID part of EFI variable name.
|
|
|
|
@retval TRUE Variable is stored in variable store region.
|
|
@retval FALSE Variable isn't stored in variable store region or doesn't exist.
|
|
**/
|
|
_Must_inspect_result_
|
|
_Success_(return != 0)
|
|
BOOLEAN
|
|
EFIAPI
|
|
IsVariableInVariableStoreRegion (
|
|
_In_ IN CHAR16 *VariableName,
|
|
_In_ IN EFI_GUID *VendorGuid
|
|
);
|
|
|
|
#pragma warning( pop )
|
|
#endif
|
|
|
|
#endif
|