mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-25 14:44:28 +02:00
Update ExtractGuidedSectionLib instance to cover the same handler is registered multi times, the later will override the pre setting.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4183 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
aa09397b3c
commit
e2701217a1
@ -114,12 +114,32 @@ ExtractGuidedSectionRegisterHandlers (
|
|||||||
IN EXTRACT_GUIDED_SECTION_DECODE_HANDLER DecodeHandler
|
IN EXTRACT_GUIDED_SECTION_DECODE_HANDLER DecodeHandler
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
UINT32 Index;
|
||||||
//
|
//
|
||||||
// Check input paramter.
|
// Check input paramter.
|
||||||
//
|
//
|
||||||
if (SectionGuid == NULL) {
|
if (SectionGuid == NULL) {
|
||||||
return RETURN_INVALID_PARAMETER;
|
return RETURN_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Search the match registered GetInfo handler for the input guided section.
|
||||||
|
//
|
||||||
|
for (Index = 0; Index < mNumberOfExtractHandler; Index ++) {
|
||||||
|
if (CompareGuid (&mExtractHandlerGuidTable[Index], SectionGuid)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// If the guided handler has been registered before, only update its handler.
|
||||||
|
//
|
||||||
|
if (Index < mNumberOfExtractHandler) {
|
||||||
|
mExtractDecodeHandlerTable [Index] = DecodeHandler;
|
||||||
|
mExtractGetInfoHandlerTable [Index] = GetInfoHandler;
|
||||||
|
return RETURN_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check the global table is enough to contain new Handler.
|
// Check the global table is enough to contain new Handler.
|
||||||
//
|
//
|
||||||
|
@ -151,6 +151,7 @@ ExtractGuidedSectionRegisterHandlers (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
UINT32 Index;
|
||||||
PEI_EXTRACT_GUIDED_SECTION_HANDLER_INFO *HandlerInfo;
|
PEI_EXTRACT_GUIDED_SECTION_HANDLER_INFO *HandlerInfo;
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -167,6 +168,25 @@ ExtractGuidedSectionRegisterHandlers (
|
|||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Search the match registered GetInfo handler for the input guided section.
|
||||||
|
//
|
||||||
|
for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {
|
||||||
|
if (CompareGuid (&(HandlerInfo->ExtractHandlerGuidTable[Index]), SectionGuid)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// If the guided handler has been registered before, only update its handler.
|
||||||
|
//
|
||||||
|
if (Index < HandlerInfo->NumberOfExtractHandler) {
|
||||||
|
HandlerInfo->ExtractDecodeHandlerTable [Index] = DecodeHandler;
|
||||||
|
HandlerInfo->ExtractGetInfoHandlerTable [Index] = GetInfoHandler;
|
||||||
|
return RETURN_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check the global table is enough to contain new Handler.
|
// Check the global table is enough to contain new Handler.
|
||||||
//
|
//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user