1*f334afcfSToomas Soome /** @file 2*f334afcfSToomas Soome Variable Architectural Protocol as defined in PI Specification VOLUME 2 DXE 3*f334afcfSToomas Soome 4*f334afcfSToomas Soome This provides the services required to get and set environment variables. This 5*f334afcfSToomas Soome protocol must be produced by a runtime DXE driver and may be consumed only by 6*f334afcfSToomas Soome the DXE Foundation. The DXE driver that produces this protocol must be a runtime 7*f334afcfSToomas Soome driver. This driver is responsible for initializing the GetVariable(), 8*f334afcfSToomas Soome GetNextVariableName(), and SetVariable() fields of the UEFI Runtime Services Table. 9*f334afcfSToomas Soome 10*f334afcfSToomas Soome After the three fields of the UEFI Runtime Services Table have been initialized, 11*f334afcfSToomas Soome the driver must install the EFI_VARIABLE_ARCH_PROTOCOL_GUID on a new handle with 12*f334afcfSToomas Soome a NULL interface pointer. The installation of this protocol informs the DXE Foundation 13*f334afcfSToomas Soome that the read-only and the volatile environment variable related services are 14*f334afcfSToomas Soome now available and that the DXE Foundation must update the 32-bit CRC of the UEFI 15*f334afcfSToomas Soome Runtime Services Table. The full complement of environment variable services are 16*f334afcfSToomas Soome not available until both this protocol and EFI_VARIABLE_WRITE_ARCH_PROTOCOL are 17*f334afcfSToomas Soome installed. DXE drivers that require read-only access or read/write access to volatile 18*f334afcfSToomas Soome environment variables must have this architectural protocol in their dependency 19*f334afcfSToomas Soome expressions. DXE drivers that require write access to nonvolatile environment 20*f334afcfSToomas Soome variables must have the EFI_VARIABLE_WRITE_ARCH_PROTOCOL in their dependency 21*f334afcfSToomas Soome expressions. 22*f334afcfSToomas Soome 23*f334afcfSToomas Soome Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> 24*f334afcfSToomas Soome SPDX-License-Identifier: BSD-2-Clause-Patent 25*f334afcfSToomas Soome 26*f334afcfSToomas Soome **/ 27*f334afcfSToomas Soome 28*f334afcfSToomas Soome #ifndef __ARCH_PROTOCOL_VARIABLE_ARCH_H__ 29*f334afcfSToomas Soome #define __ARCH_PROTOCOL_VARIABLE_ARCH_H__ 30*f334afcfSToomas Soome 31*f334afcfSToomas Soome /// 32*f334afcfSToomas Soome /// Global ID for the Variable Architectural Protocol 33*f334afcfSToomas Soome /// 34*f334afcfSToomas Soome #define EFI_VARIABLE_ARCH_PROTOCOL_GUID \ 35*f334afcfSToomas Soome { 0x1e5668e2, 0x8481, 0x11d4, {0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } } 36*f334afcfSToomas Soome 37*f334afcfSToomas Soome extern EFI_GUID gEfiVariableArchProtocolGuid; 38*f334afcfSToomas Soome 39*f334afcfSToomas Soome #endif 40