/** @file
|
Variable Read Lib
|
|
This library provides phase agnostic access to the UEFI Variable Services.
|
This is done by implementing a wrapper on top of the phase specific mechanism
|
for reading from UEFI variables. For example, the PEI implementation of this
|
library uses EFI_PEI_READ_ONLY_VARIABLE2_PPI. The DXE implementation accesses
|
the UEFI Runtime Services Table, and the SMM implementation uses
|
EFI_SMM_VARIABLE_PROTOCOL.
|
|
Using this library allows code to be written in a generic manner that can be
|
used in PEI, DXE, or SMM without modification.
|
|
Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
**/
|
|
#ifndef _VARIABLE_READ_LIB_H_
|
#define _VARIABLE_READ_LIB_H_
|
|
#include <Uefi/UefiBaseType.h>
|
|
/**
|
Returns the value of a variable.
|
|
@param[in] VariableName A Null-terminated string that is the name of the vendor's
|
variable.
|
@param[in] VendorGuid A unique identifier for the vendor.
|
@param[out] Attributes If not NULL, a pointer to the memory location to return the
|
attributes bitmask for the variable.
|
@param[in, out] DataSize On input, the size in bytes of the return Data buffer.
|
On output the size of data returned in Data.
|
@param[out] Data The buffer to return the contents of the variable. May be NULL
|
with a zero DataSize in order to determine the size buffer needed.
|
|
@retval EFI_SUCCESS The function completed successfully.
|
@retval EFI_NOT_FOUND The variable was not found.
|
@retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the result.
|
@retval EFI_INVALID_PARAMETER VariableName is NULL.
|
@retval EFI_INVALID_PARAMETER VendorGuid is NULL.
|
@retval EFI_INVALID_PARAMETER DataSize is NULL.
|
@retval EFI_INVALID_PARAMETER The DataSize is not too small and Data is NULL.
|
@retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
|
@retval EFI_SECURITY_VIOLATION The variable could not be retrieved due to an authentication failure.
|
@retval EFI_UNSUPPORTED This function is not implemented by this instance of the LibraryClass
|
|
**/
|
EFI_STATUS
|
EFIAPI
|
VarLibGetVariable (
|
IN CHAR16 *VariableName,
|
IN EFI_GUID *VendorGuid,
|
OUT UINT32 *Attributes, OPTIONAL
|
IN OUT UINTN *DataSize,
|
OUT VOID *Data OPTIONAL
|
);
|
|
/**
|
Enumerates the current variable names.
|
|
@param[in, out] VariableNameSize The size of the VariableName buffer. The size must be large
|
enough to fit input string supplied in VariableName buffer.
|
@param[in, out] VariableName On input, supplies the last VariableName that was returned
|
by GetNextVariableName(). On output, returns the Nullterminated
|
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.
|
@retval EFI_INVALID_PARAMETER VariableName is NULL.
|
@retval EFI_INVALID_PARAMETER VendorGuid is NULL.
|
@retval EFI_INVALID_PARAMETER The input values of VariableName and VendorGuid are not a name and
|
GUID of an existing variable.
|
@retval EFI_INVALID_PARAMETER Null-terminator is not found in the first VariableNameSize bytes of
|
the input VariableName buffer.
|
@retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
|
@retval EFI_UNSUPPORTED This function is not implemented by this instance of the LibraryClass
|
|
**/
|
EFI_STATUS
|
EFIAPI
|
VarLibGetNextVariableName (
|
IN OUT UINTN *VariableNameSize,
|
IN OUT CHAR16 *VariableName,
|
IN OUT EFI_GUID *VendorGuid
|
);
|
|
#endif // _VARIABLE_READ_LIB_H_
|