// /** @file
// Provides SMM variable service.
//
// This module installs SMM variable protocol into SMM protocol database,
// which can be used by SMM driver, and installs SMM variable protocol
// into BS protocol database, which can be used to notify the SMM Runtime
// Dxe driver that the SMM variable service is ready.
// This module should be used with SMM Runtime DXE module together. The
// SMM Runtime DXE module would install variable arch protocol and variable
// write arch protocol based on SMM variable module.
//
// Caution: This module requires additional review when modified.
// This driver will have external input - variable data and communicate buffer in SMM mode.
// This external input must be validated carefully to avoid security issues such as
// buffer overflow or integer overflow.
//
// Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "Provides SMM variable service"

#string STR_MODULE_DESCRIPTION          #language en-US "This module installs SMM variable protocol into SMM protocol database, which can be used by SMM driver, and installs SMM variable protocol into BS protocol database, which can be used to notify the SMM Runtime DXE driver that the SMM variable service is ready. This module should be used with SMM Runtime DXE module together. The SMM Runtime DXE module would install variable arch protocol and variable write arch protocol based on SMM variable module. Caution: This module requires additional review when modified. This driver will have external input - variable data and communicate buffer in SMM mode. This external input must be validated carefully to avoid security issues such as buffer overflow or integer overflow."

