// /** @file
// Base ExtractGuidedSection Library.
//
// This instance can also be used in SEC phase only when the memory is ready in SEC phase.
// PCD PcdGuidedExtractHandlerTableAddress points to the available physical memory space
// that is used to store Guided Extract Handlers.
// Note: A driver of type DXE_RUNTIME_DRIVER can use this ExtractGuidedSectionLib
// in their initialization without any issues. They only have to be careful in
// the implementation of runtime services, because this BASE library instance doesn't
// convert the address pointed by PcdGuidedExtractHandlerTableAddress to the virtual address.
//
// Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "Base ExtractGuidedSection Library"

#string STR_MODULE_DESCRIPTION          #language en-US "This instance can also be used in the SEC phase only when the memory is ready in the SEC phase. PCD PcdGuidedExtractHandlerTableAddress points to the available physical memory space that is used to store Guided Extract Handlers. Note: A driver of type DXE_RUNTIME_DRIVER can use this ExtractGuidedSectionLib in its initialization without any issues. Be careful in the implementation of runtime services, because this BASE library instance doesn't convert the address pointed by PcdGuidedExtractHandlerTableAddress to the virtual address."

