mirror of https://github.com/acidanthera/audk.git
Build the registered guid HOB and SystemTable to record the GUID itself in PeiExtractGuidedSectionLib and DxeExtractGuidedSectionLib, and also state the restriction in BaseExtractGuidedSectionLib.
Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13930 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
17dd0f2bb1
commit
8472f1f59d
|
@ -45,6 +45,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
#include <Library/UefiBootServicesTableLib.h>
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
#include <Library/MemoryAllocationLib.h>
|
#include <Library/MemoryAllocationLib.h>
|
||||||
#include <Library/BaseMemoryLib.h>
|
#include <Library/BaseMemoryLib.h>
|
||||||
|
#include <Library/UefiLib.h>
|
||||||
#include <Protocol/Decompress.h>
|
#include <Protocol/Decompress.h>
|
||||||
#include <Protocol/GuidedSectionExtraction.h>
|
#include <Protocol/GuidedSectionExtraction.h>
|
||||||
#include <Protocol/SectionExtraction.h>
|
#include <Protocol/SectionExtraction.h>
|
||||||
|
@ -539,6 +540,53 @@ CreateProtocolNotifyEvent (
|
||||||
return Event;
|
return Event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Verify the Guided Section GUID by checking if there is the Guided Section GUID configuration table recorded the GUID itself.
|
||||||
|
|
||||||
|
@param GuidedSectionGuid The Guided Section GUID.
|
||||||
|
@param GuidedSectionExtraction A pointer to the pointer to the supported Guided Section Extraction Protocol
|
||||||
|
for the Guided Section.
|
||||||
|
|
||||||
|
@return TRUE The GuidedSectionGuid could be identified, and the pointer to
|
||||||
|
the Guided Section Extraction Protocol will be returned to *GuidedSectionExtraction.
|
||||||
|
@return FALSE The GuidedSectionGuid could not be identified, or
|
||||||
|
the Guided Section Extraction Protocol has not been installed yet.
|
||||||
|
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
VerifyGuidedSectionGuid (
|
||||||
|
IN EFI_GUID *GuidedSectionGuid,
|
||||||
|
OUT EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL **GuidedSectionExtraction
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_GUID *GuidRecorded;
|
||||||
|
VOID *Interface;
|
||||||
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check if there is the Guided Section GUID configuration table recorded the GUID itself.
|
||||||
|
//
|
||||||
|
Status = EfiGetSystemConfigurationTable (GuidedSectionGuid, (VOID **) &GuidRecorded);
|
||||||
|
if (Status == EFI_SUCCESS) {
|
||||||
|
if (CompareGuid (GuidRecorded, GuidedSectionGuid)) {
|
||||||
|
//
|
||||||
|
// Found the recorded GuidedSectionGuid.
|
||||||
|
//
|
||||||
|
Status = gBS->LocateProtocol (GuidedSectionGuid, NULL, (VOID **) &Interface);
|
||||||
|
if (!EFI_ERROR (Status) && Interface != NULL) {
|
||||||
|
//
|
||||||
|
// Found the supported Guided Section Extraction Porotocol for the Guided Section.
|
||||||
|
//
|
||||||
|
*GuidedSectionExtraction = (EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL *) Interface;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
RPN callback function.
|
RPN callback function.
|
||||||
1. Initialize the section stream when the GUIDED_SECTION_EXTRACTION_PROTOCOL is installed.
|
1. Initialize the section stream when the GUIDED_SECTION_EXTRACTION_PROTOCOL is installed.
|
||||||
|
@ -579,9 +627,9 @@ NotifyGuidedExtraction (
|
||||||
(Context->ParentStream->StreamBuffer + Context->ChildNode->OffsetInStream);
|
(Context->ParentStream->StreamBuffer + Context->ChildNode->OffsetInStream);
|
||||||
ASSERT (GuidedHeader->CommonHeader.Type == EFI_SECTION_GUID_DEFINED);
|
ASSERT (GuidedHeader->CommonHeader.Type == EFI_SECTION_GUID_DEFINED);
|
||||||
|
|
||||||
Status = gBS->LocateProtocol (Context->ChildNode->EncapsulationGuid, NULL, (VOID **)&GuidedExtraction);
|
if (!VerifyGuidedSectionGuid (Context->ChildNode->EncapsulationGuid, &GuidedExtraction)) {
|
||||||
ASSERT_EFI_ERROR (Status);
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Status = GuidedExtraction->ExtractSection (
|
Status = GuidedExtraction->ExtractSection (
|
||||||
GuidedExtraction,
|
GuidedExtraction,
|
||||||
|
@ -842,8 +890,7 @@ CreateChildNode (
|
||||||
Node->EncapsulationGuid = &GuidedHeader->SectionDefinitionGuid;
|
Node->EncapsulationGuid = &GuidedHeader->SectionDefinitionGuid;
|
||||||
GuidedSectionAttributes = GuidedHeader->Attributes;
|
GuidedSectionAttributes = GuidedHeader->Attributes;
|
||||||
}
|
}
|
||||||
Status = gBS->LocateProtocol (Node->EncapsulationGuid, NULL, (VOID **)&GuidedExtraction);
|
if (VerifyGuidedSectionGuid (Node->EncapsulationGuid, &GuidedExtraction)) {
|
||||||
if (!EFI_ERROR (Status)) {
|
|
||||||
//
|
//
|
||||||
// NewStreamBuffer is always allocated by ExtractSection... No caller
|
// NewStreamBuffer is always allocated by ExtractSection... No caller
|
||||||
// allocation here.
|
// allocation here.
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# where each stream contains a linked list of children, which may be leaves or
|
# where each stream contains a linked list of children, which may be leaves or
|
||||||
# encapsulations. Encapsulation section will further generate new section stream entries.
|
# encapsulations. Encapsulation section will further generate new section stream entries.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
# which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -40,6 +40,7 @@
|
||||||
BaseLib
|
BaseLib
|
||||||
BaseMemoryLib
|
BaseMemoryLib
|
||||||
UefiDriverEntryPoint
|
UefiDriverEntryPoint
|
||||||
|
UefiLib
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
|
|
|
@ -490,6 +490,53 @@ ChildIsType (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Verify the Guided Section GUID by checking if there is the Guided Section GUID configuration table recorded the GUID itself.
|
||||||
|
|
||||||
|
@param GuidedSectionGuid The Guided Section GUID.
|
||||||
|
@param GuidedSectionExtraction A pointer to the pointer to the supported Guided Section Extraction Protocol
|
||||||
|
for the Guided Section.
|
||||||
|
|
||||||
|
@return TRUE The GuidedSectionGuid could be identified, and the pointer to
|
||||||
|
the Guided Section Extraction Protocol will be returned to *GuidedSectionExtraction.
|
||||||
|
@return FALSE The GuidedSectionGuid could not be identified, or
|
||||||
|
the Guided Section Extraction Protocol has not been installed yet.
|
||||||
|
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
VerifyGuidedSectionGuid (
|
||||||
|
IN EFI_GUID *GuidedSectionGuid,
|
||||||
|
OUT EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL **GuidedSectionExtraction
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_GUID *GuidRecorded;
|
||||||
|
VOID *Interface;
|
||||||
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check if there is the Guided Section GUID configuration table recorded the GUID itself.
|
||||||
|
//
|
||||||
|
Status = EfiGetSystemConfigurationTable (GuidedSectionGuid, (VOID **) &GuidRecorded);
|
||||||
|
if (Status == EFI_SUCCESS) {
|
||||||
|
if (CompareGuid (GuidRecorded, GuidedSectionGuid)) {
|
||||||
|
//
|
||||||
|
// Found the recorded GuidedSectionGuid.
|
||||||
|
//
|
||||||
|
Status = CoreLocateProtocol (GuidedSectionGuid, NULL, (VOID **) &Interface);
|
||||||
|
if (!EFI_ERROR (Status) && Interface != NULL) {
|
||||||
|
//
|
||||||
|
// Found the supported Guided Section Extraction Porotocol for the Guided Section.
|
||||||
|
//
|
||||||
|
*GuidedSectionExtraction = (EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL *) Interface;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
RPN callback function. Initializes the section stream
|
RPN callback function. Initializes the section stream
|
||||||
when GUIDED_SECTION_EXTRACTION_PROTOCOL is installed.
|
when GUIDED_SECTION_EXTRACTION_PROTOCOL is installed.
|
||||||
|
@ -518,8 +565,7 @@ NotifyGuidedExtraction (
|
||||||
GuidedHeader = (EFI_GUID_DEFINED_SECTION *) (Context->ParentStream->StreamBuffer + Context->ChildNode->OffsetInStream);
|
GuidedHeader = (EFI_GUID_DEFINED_SECTION *) (Context->ParentStream->StreamBuffer + Context->ChildNode->OffsetInStream);
|
||||||
ASSERT (GuidedHeader->CommonHeader.Type == EFI_SECTION_GUID_DEFINED);
|
ASSERT (GuidedHeader->CommonHeader.Type == EFI_SECTION_GUID_DEFINED);
|
||||||
|
|
||||||
Status = gBS->LocateProtocol (Context->ChildNode->EncapsulationGuid, NULL, (VOID **)&GuidedExtraction);
|
if (!VerifyGuidedSectionGuid (Context->ChildNode->EncapsulationGuid, &GuidedExtraction)) {
|
||||||
if (EFI_ERROR (Status)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -793,8 +839,7 @@ CreateChildNode (
|
||||||
Node->EncapsulationGuid = &GuidedHeader->SectionDefinitionGuid;
|
Node->EncapsulationGuid = &GuidedHeader->SectionDefinitionGuid;
|
||||||
GuidedSectionAttributes = GuidedHeader->Attributes;
|
GuidedSectionAttributes = GuidedHeader->Attributes;
|
||||||
}
|
}
|
||||||
Status = CoreLocateProtocol (Node->EncapsulationGuid, NULL, (VOID **)&GuidedExtraction);
|
if (VerifyGuidedSectionGuid (Node->EncapsulationGuid, &GuidedExtraction)) {
|
||||||
if (!EFI_ERROR (Status) && GuidedExtraction != NULL) {
|
|
||||||
//
|
//
|
||||||
// NewStreamBuffer is always allocated by ExtractSection... No caller
|
// NewStreamBuffer is always allocated by ExtractSection... No caller
|
||||||
// allocation here.
|
// allocation here.
|
||||||
|
|
|
@ -606,6 +606,55 @@ FirmwareVolmeInfoPpiNotifyCallback (
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Verify the Guided Section GUID by checking if there is the Guided Section GUID HOB recorded the GUID itself.
|
||||||
|
|
||||||
|
@param GuidedSectionGuid The Guided Section GUID.
|
||||||
|
@param GuidedSectionExtraction A pointer to the pointer to the supported Guided Section Extraction Ppi
|
||||||
|
for the Guided Section.
|
||||||
|
|
||||||
|
@return TRUE The GuidedSectionGuid could be identified, and the pointer to
|
||||||
|
the Guided Section Extraction Ppi will be returned to *GuidedSectionExtraction.
|
||||||
|
@return FALSE The GuidedSectionGuid could not be identified, or
|
||||||
|
the Guided Section Extraction Ppi has not been installed yet.
|
||||||
|
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
VerifyGuidedSectionGuid (
|
||||||
|
IN EFI_GUID *GuidedSectionGuid,
|
||||||
|
OUT EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI **GuidedSectionExtraction
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_PEI_HOB_POINTERS Hob;
|
||||||
|
EFI_GUID *GuidRecorded;
|
||||||
|
VOID *Interface;
|
||||||
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check if there is the Guided Section GUID HOB recorded the GUID itself.
|
||||||
|
//
|
||||||
|
Hob.Raw = GetFirstGuidHob (GuidedSectionGuid);
|
||||||
|
if (Hob.Raw != NULL) {
|
||||||
|
GuidRecorded = (EFI_GUID *) GET_GUID_HOB_DATA (Hob);
|
||||||
|
if (CompareGuid (GuidRecorded, GuidedSectionGuid)) {
|
||||||
|
//
|
||||||
|
// Found the recorded GuidedSectionGuid.
|
||||||
|
//
|
||||||
|
Status = PeiServicesLocatePpi (GuidedSectionGuid, 0, NULL, (VOID **) &Interface);
|
||||||
|
if (!EFI_ERROR (Status) && Interface != NULL) {
|
||||||
|
//
|
||||||
|
// Found the supported Guided Section Extraction Ppi for the Guided Section.
|
||||||
|
//
|
||||||
|
*GuidedSectionExtraction = (EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI *) Interface;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Go through the file to search SectionType section.
|
Go through the file to search SectionType section.
|
||||||
Search within encapsulation sections (compression and GUIDed) recursively,
|
Search within encapsulation sections (compression and GUIDed) recursively,
|
||||||
|
@ -643,6 +692,7 @@ ProcessSection (
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
UINT32 Authentication;
|
UINT32 Authentication;
|
||||||
PEI_CORE_INSTANCE *PrivateData;
|
PEI_CORE_INSTANCE *PrivateData;
|
||||||
|
EFI_GUID *SectionDefinitionGuid;
|
||||||
|
|
||||||
PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices);
|
PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices);
|
||||||
*OutputBuffer = NULL;
|
*OutputBuffer = NULL;
|
||||||
|
@ -702,21 +752,11 @@ ProcessSection (
|
||||||
Status = EFI_NOT_FOUND;
|
Status = EFI_NOT_FOUND;
|
||||||
if (Section->Type == EFI_SECTION_GUID_DEFINED) {
|
if (Section->Type == EFI_SECTION_GUID_DEFINED) {
|
||||||
if (IS_SECTION2 (Section)) {
|
if (IS_SECTION2 (Section)) {
|
||||||
Status = PeiServicesLocatePpi (
|
SectionDefinitionGuid = &((EFI_GUID_DEFINED_SECTION2 *)Section)->SectionDefinitionGuid;
|
||||||
&((EFI_GUID_DEFINED_SECTION2 *)Section)->SectionDefinitionGuid,
|
|
||||||
0,
|
|
||||||
NULL,
|
|
||||||
(VOID **) &GuidSectionPpi
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
Status = PeiServicesLocatePpi (
|
SectionDefinitionGuid = &((EFI_GUID_DEFINED_SECTION *)Section)->SectionDefinitionGuid;
|
||||||
&((EFI_GUID_DEFINED_SECTION *)Section)->SectionDefinitionGuid,
|
|
||||||
0,
|
|
||||||
NULL,
|
|
||||||
(VOID **) &GuidSectionPpi
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (!EFI_ERROR (Status)) {
|
if (VerifyGuidedSectionGuid (SectionDefinitionGuid, &GuidSectionPpi)) {
|
||||||
Status = GuidSectionPpi->ExtractSection (
|
Status = GuidSectionPpi->ExtractSection (
|
||||||
GuidSectionPpi,
|
GuidSectionPpi,
|
||||||
Section,
|
Section,
|
||||||
|
|
|
@ -7,8 +7,11 @@
|
||||||
# in their initialization without any issues. They only have to be careful in
|
# 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
|
# the implementation of runtime services, because this BASE library instance doesn't
|
||||||
# convert the address pointed by PcdGuidedExtractHandlerTableAddress to the virtual address.
|
# convert the address pointed by PcdGuidedExtractHandlerTableAddress to the virtual address.
|
||||||
|
# And a driver should use this ExtractGuidedSectionLib to do implementation internally, also
|
||||||
|
# this ExtractGuidedSectionLib couldn't be used for guided section extraction that is required
|
||||||
|
# by PEI and DXE core for recovery or capsule image processing, etc.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
Provide generic extract guided section functions for Dxe phase.
|
Provide generic extract guided section functions for Dxe phase.
|
||||||
|
|
||||||
Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -18,6 +18,7 @@
|
||||||
#include <Library/BaseMemoryLib.h>
|
#include <Library/BaseMemoryLib.h>
|
||||||
#include <Library/MemoryAllocationLib.h>
|
#include <Library/MemoryAllocationLib.h>
|
||||||
#include <Library/ExtractGuidedSectionLib.h>
|
#include <Library/ExtractGuidedSectionLib.h>
|
||||||
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
|
|
||||||
#define EXTRACT_HANDLER_TABLE_SIZE 0x10
|
#define EXTRACT_HANDLER_TABLE_SIZE 0x10
|
||||||
|
|
||||||
|
@ -175,6 +176,8 @@ ExtractGuidedSectionRegisterHandlers (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UINT32 Index;
|
UINT32 Index;
|
||||||
|
VOID *GuidData;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check input paramter.
|
// Check input paramter.
|
||||||
//
|
//
|
||||||
|
@ -212,6 +215,15 @@ ExtractGuidedSectionRegisterHandlers (
|
||||||
mExtractDecodeHandlerTable [mNumberOfExtractHandler] = DecodeHandler;
|
mExtractDecodeHandlerTable [mNumberOfExtractHandler] = DecodeHandler;
|
||||||
mExtractGetInfoHandlerTable [mNumberOfExtractHandler++] = GetInfoHandler;
|
mExtractGetInfoHandlerTable [mNumberOfExtractHandler++] = GetInfoHandler;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Install the Guided Section GUID configuration table to record the GUID itself.
|
||||||
|
// Then the content of the configuration table buffer will be the same as the GUID value itself.
|
||||||
|
//
|
||||||
|
GuidData = AllocateCopyPool (sizeof (GUID), (VOID *) SectionGuid);
|
||||||
|
if (GuidData != NULL) {
|
||||||
|
gBS->InstallConfigurationTable ((EFI_GUID *) SectionGuid, GuidData);
|
||||||
|
}
|
||||||
|
|
||||||
return RETURN_SUCCESS;
|
return RETURN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#
|
#
|
||||||
# This library provides generic extract guided section functions for DXE module.
|
# This library provides generic extract guided section functions for DXE module.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -42,4 +42,5 @@
|
||||||
MemoryAllocationLib
|
MemoryAllocationLib
|
||||||
BaseMemoryLib
|
BaseMemoryLib
|
||||||
DebugLib
|
DebugLib
|
||||||
|
UefiBootServicesTableLib
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
Provide generic extract guided section functions for PEI phase.
|
Provide generic extract guided section functions for PEI phase.
|
||||||
|
|
||||||
Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -243,6 +243,16 @@ ExtractGuidedSectionRegisterHandlers (
|
||||||
HandlerInfo->ExtractDecodeHandlerTable [HandlerInfo->NumberOfExtractHandler] = DecodeHandler;
|
HandlerInfo->ExtractDecodeHandlerTable [HandlerInfo->NumberOfExtractHandler] = DecodeHandler;
|
||||||
HandlerInfo->ExtractGetInfoHandlerTable [HandlerInfo->NumberOfExtractHandler++] = GetInfoHandler;
|
HandlerInfo->ExtractGetInfoHandlerTable [HandlerInfo->NumberOfExtractHandler++] = GetInfoHandler;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Build the Guided Section GUID HOB to record the GUID itself.
|
||||||
|
// Then the content of the GUIDed HOB will be the same as the GUID value itself.
|
||||||
|
//
|
||||||
|
BuildGuidDataHob (
|
||||||
|
(EFI_GUID *) SectionGuid,
|
||||||
|
(VOID *) SectionGuid,
|
||||||
|
sizeof (GUID)
|
||||||
|
);
|
||||||
|
|
||||||
return RETURN_SUCCESS;
|
return RETURN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue