1*f439973dSWarner Losh /** @file 2*f439973dSWarner Losh Variable Write Architectural Protocol as defined in PI Specification VOLUME 2 DXE 3*f439973dSWarner Losh 4*f439973dSWarner Losh This provides the services required to set nonvolatile environment variables. 5*f439973dSWarner Losh This protocol must be produced by a runtime DXE driver and may be consumed only 6*f439973dSWarner Losh by the DXE Foundation. 7*f439973dSWarner Losh 8*f439973dSWarner Losh The DXE driver that produces this protocol must be a runtime driver. This driver 9*f439973dSWarner Losh may update the SetVariable() field of the UEFI Runtime Services Table. 10*f439973dSWarner Losh 11*f439973dSWarner Losh After the UEFI Runtime Services Table has been initialized, the driver must 12*f439973dSWarner Losh install the EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID on a new handle with a NULL 13*f439973dSWarner Losh interface pointer. The installation of this protocol informs the DXE Foundation 14*f439973dSWarner Losh that the write services for nonvolatile environment variables are now available 15*f439973dSWarner Losh and that the DXE Foundation must update the 32-bit CRC of the UEFI Runtime Services 16*f439973dSWarner Losh Table. The full complement of environment variable services are not available 17*f439973dSWarner Losh until both this protocol and EFI_VARIABLE_ARCH_PROTOCOL are installed. DXE drivers 18*f439973dSWarner Losh that require read-only access or read/write access to volatile environment variables 19*f439973dSWarner Losh must have the EFI_VARIABLE_WRITE_ARCH_PROTOCOL in their dependency expressions. 20*f439973dSWarner Losh DXE drivers that require write access to nonvolatile environment variables must 21*f439973dSWarner Losh have this architectural protocol in their dependency expressions. 22*f439973dSWarner Losh 23*f439973dSWarner Losh Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> 24*f439973dSWarner Losh SPDX-License-Identifier: BSD-2-Clause-Patent 25*f439973dSWarner Losh 26*f439973dSWarner Losh **/ 27*f439973dSWarner Losh 28*f439973dSWarner Losh #ifndef __ARCH_PROTOCOL_VARIABLE_WRITE_ARCH_H__ 29*f439973dSWarner Losh #define __ARCH_PROTOCOL_VARIABLE_WRITE_ARCH_H__ 30*f439973dSWarner Losh 31*f439973dSWarner Losh /// 32*f439973dSWarner Losh /// Global ID for the Variable Write Architectural Protocol 33*f439973dSWarner Losh /// 34*f439973dSWarner Losh #define EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID \ 35*f439973dSWarner Losh { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53 } } 36*f439973dSWarner Losh 37*f439973dSWarner Losh extern EFI_GUID gEfiVariableWriteArchProtocolGuid; 38*f439973dSWarner Losh 39*f439973dSWarner Losh #endif 40