if (CompareGuid (&(Hob.Guid->Name), &gEfiCallerIdGuid)) {\r
HandlerInfo = (PEI_EXTRACT_GUIDED_SECTION_HANDLER_INFO *) GET_GUID_HOB_DATA (Hob.Guid);\r
if (HandlerInfo->Signature == PEI_EXTRACT_HANDLER_INFO_SIGNATURE) {\r
+ //\r
+ // Update Table Pointer when hob start address is changed.\r
+ //\r
+ if (HandlerInfo->ExtractHandlerGuidTable != (GUID *) (HandlerInfo + 1)) {\r
+ HandlerInfo->ExtractHandlerGuidTable = (GUID *) (HandlerInfo + 1);\r
+ HandlerInfo->ExtractDecodeHandlerTable = (EXTRACT_GUIDED_SECTION_DECODE_HANDLER *) (\r
+ (UINT8 *)HandlerInfo->ExtractHandlerGuidTable + \r
+ PcdGet32 (PcdMaximumGuidedExtractHandler) * sizeof (GUID)\r
+ );\r
+ HandlerInfo->ExtractGetInfoHandlerTable = (EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER *) (\r
+ (UINT8 *)HandlerInfo->ExtractDecodeHandlerTable + \r
+ PcdGet32 (PcdMaximumGuidedExtractHandler) * \r
+ sizeof (EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER)\r
+ );\r
+ }\r
+ //\r
+ // Return HandlerInfo pointer.\r
+ //\r
*InfoPointer = HandlerInfo;\r
return EFI_SUCCESS;\r
}\r
// Search the match registered GetInfo handler for the input guided section.\r
//\r
for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {\r
- if (CompareGuid (&(HandlerInfo->ExtractHandlerGuidTable[Index]), SectionGuid)) {\r
+ if (CompareGuid (HandlerInfo->ExtractHandlerGuidTable + Index, SectionGuid)) {\r
break;\r
}\r
}\r
//\r
// Register new Handler and guid value.\r
//\r
- CopyGuid (&(HandlerInfo->ExtractHandlerGuidTable [HandlerInfo->NumberOfExtractHandler]), SectionGuid);\r
+ CopyGuid (HandlerInfo->ExtractHandlerGuidTable + HandlerInfo->NumberOfExtractHandler, SectionGuid);\r
HandlerInfo->ExtractDecodeHandlerTable [HandlerInfo->NumberOfExtractHandler] = DecodeHandler;\r
HandlerInfo->ExtractGetInfoHandlerTable [HandlerInfo->NumberOfExtractHandler++] = GetInfoHandler;\r
\r
// Search the match registered GetInfo handler for the input guided section.\r
//\r
for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {\r
- if (CompareGuid (&(HandlerInfo->ExtractHandlerGuidTable[Index]), &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {\r
+ if (CompareGuid (HandlerInfo->ExtractHandlerGuidTable + Index, &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {\r
break;\r
}\r
}\r
// Search the match registered GetInfo handler for the input guided section.\r
//\r
for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {\r
- if (CompareGuid (&(HandlerInfo->ExtractHandlerGuidTable[Index]), &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {\r
+ if (CompareGuid (HandlerInfo->ExtractHandlerGuidTable + Index, &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {\r
break;\r
}\r
}\r