4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* $Id$ */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Variable.h
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Copyright (C) 2012 Oracle Corporation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * available from http://www.virtualbox.org. This file is free software;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * you can redistribute it and/or modify it under the terms of the GNU
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * General Public License (GPL) as published by the Free Software
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * The contents of this file may alternatively be used under the terms
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * of the Common Development and Distribution License Version 1.0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * VirtualBox OSE distribution, in which case the provisions of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * CDDL are applicable instead of those of the GPL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * You may elect to license modified versions of this file under the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * terms and conditions of either the GPL or the CDDL or both.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The internal header file includes the common header files, defines
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync internal structure and functions used by EmuVariable module.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwhich accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _VARIABLE_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _VARIABLE_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Uefi.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Protocol/VariableWrite.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Protocol/Variable.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/BaseMemoryLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/MemoryAllocationLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/DebugLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/UefiRuntimeLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/UefiDriverEntryPoint.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/UefiBootServicesTableLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/UefiLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/BaseLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/PcdLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/HobLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Guid/VariableFormat.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Guid/GlobalVariable.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Guid/EventGroup.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// The size of a 3 character ISO639 language code.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISO_639_2_ENTRY_SIZE 3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef enum {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Physical,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Virtual
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} VARIABLE_POINTER_TYPE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VARIABLE_HEADER *CurrPtr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VARIABLE_HEADER *EndPtr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VARIABLE_HEADER *StartPtr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN Volatile;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} VARIABLE_POINTER_TRACK;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PHYSICAL_ADDRESS VolatileVariableBase;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PHYSICAL_ADDRESS NonVolatileVariableBase;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_LOCK VariableServicesLock;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} VARIABLE_GLOBAL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VARIABLE_GLOBAL VariableGlobal[2];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN VolatileLastVariableOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN NonVolatileLastVariableOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN CommonVariableTotalSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN HwErrVariableTotalSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 *PlatformLangCodes;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 *LangCodes;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 *PlatformLang;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 Lang[ISO_639_2_ENTRY_SIZE + 1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} ESAL_VARIABLE_GLOBAL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Don't use module globals after the SetVirtualAddress map is signaled
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern ESAL_VARIABLE_GLOBAL *mVariableModuleGlobal;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Initializes variable store area for non-volatile and volatile variable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function allocates and initializes memory space for global context of ESAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync variable service and variable store area for non-volatile and volatile variable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ImageHandle The Image handle of this driver.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SystemTable The pointer of EFI_SYSTEM_TABLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Function successfully executed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Fail to allocate enough memory resource.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVariableCommonInitialize (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ImageHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_SYSTEM_TABLE *SystemTable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Entry point of EmuVariable service module.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is the entry point of EmuVariable service module.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync It registers all interfaces of Variable Services, initializes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync variable store for non-volatile and volatile variables, and registers
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync notification function for EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE event.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ImageHandle The Image handle of this driver.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SystemTable The pointer of EFI_SYSTEM_TABLE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Variable service successfully initialized.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVariableServiceInitialize (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ImageHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_SYSTEM_TABLE *SystemTable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Notification function of EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is a notification function registered on EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE event.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync It convers pointer to new virtual address.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Event Event whose notification function is being invoked.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Context Pointer to the notification function's context.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVariableClassAddressChangeEvent (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_EVENT Event,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Context
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This code finds variable in storage blocks (Volatile or Non-Volatile).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VariableName A Null-terminated Unicode string that is the name of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the vendor's variable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VendorGuid A unique identifier for the vendor.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Attributes If not NULL, a pointer to the memory location to return the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync attributes bitmask for the variable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DataSize Size of Data found. If size is less than the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync data, this value contains the required size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Data On input, the size in bytes of the return Data buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync On output, the size of data returned in Data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Global Pointer to VARIABLE_GLOBAL structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The function completed successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The variable was not found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_BUFFER_TOO_SMALL DataSize is too small for the result. DataSize has
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync been updated with the size needed to complete the request.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER VariableName or VendorGuid or DataSize is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEmuGetVariable (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *VariableName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GUID *VendorGuid,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT32 *Attributes OPTIONAL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINTN *DataSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT VOID *Data,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VARIABLE_GLOBAL *Global
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This code finds the next available variable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VariableNameSize Size of the variable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VariableName On input, supplies the last VariableName that was returned by GetNextVariableName().
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync On output, returns the Null-terminated Unicode string of the current variable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VendorGuid On input, supplies the last VendorGuid that was returned by GetNextVariableName().
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync On output, returns the VendorGuid of the current variable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Global Pointer to VARIABLE_GLOBAL structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The function completed successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The next variable was not found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_BUFFER_TOO_SMALL VariableNameSize is too small for the result.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VariableNameSize has been updated with the size needed to complete the request.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER VariableNameSize or VariableName or VendorGuid is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEmuGetNextVariableName (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINTN *VariableNameSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT CHAR16 *VariableName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_GUID *VendorGuid,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VARIABLE_GLOBAL *Global
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This code sets variable in storage blocks (Volatile or Non-Volatile).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VariableName A Null-terminated Unicode string that is the name of the vendor's
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync variable. Each VariableName is unique for each
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VendorGuid. VariableName must contain 1 or more
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Unicode characters. If VariableName is an empty Unicode
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync string, then EFI_INVALID_PARAMETER is returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VendorGuid A unique identifier for the vendor
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Attributes Attributes bitmask to set for the variable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DataSize The size in bytes of the Data buffer. A size of zero causes the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync variable to be deleted.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Data The contents for the variable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Global Pointer to VARIABLE_GLOBAL structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VolatileOffset The offset of last volatile variable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param NonVolatileOffset The offset of last non-volatile variable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The firmware has successfully stored the variable and its data as
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync defined by the Attributes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits was supplied, or the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DataSize exceeds the maximum allowed, or VariableName is an empty
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Unicode string, or VendorGuid is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the variable and its data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The variable could not be saved due to a hardware failure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_WRITE_PROTECTED The variable in question is read-only or cannot be deleted.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The variable trying to be updated or deleted was not found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEmuSetVariable (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *VariableName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GUID *VendorGuid,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 Attributes,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN DataSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Data,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VARIABLE_GLOBAL *Global,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN *VolatileOffset,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN *NonVolatileOffset
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This code returns information about the EFI variables.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Attributes Attributes bitmask to specify the type of variables
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync on which to return information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param MaximumVariableStorageSize On output the maximum size of the storage space available for
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the EFI variables associated with the attributes specified.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param RemainingVariableStorageSize Returns the remaining size of the storage space available for EFI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync variables associated with the attributes specified.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param MaximumVariableSize Returns the maximum size of an individual EFI variable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync associated with the attributes specified.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Global Pointer to VARIABLE_GLOBAL structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Valid answer returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits was supplied
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The attribute is not supported on this platform, and the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MaximumVariableStorageSize, RemainingVariableStorageSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MaximumVariableSize are undefined.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEmuQueryVariableInfo (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 Attributes,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT64 *MaximumVariableStorageSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT64 *RemainingVariableStorageSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT64 *MaximumVariableSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VARIABLE_GLOBAL *Global
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif