)\r
{\r
EFI_STATUS Status;\r
- EFI_SYSTEM_RESOURCE_TABLE *Esrt;\r
EFI_SYSTEM_RESOURCE_ENTRY *EsrtEntry;\r
UINTN Index;\r
BOOLEAN EsrtGuidFound;\r
UINTN NestedCapsuleSize;\r
ESRT_MANAGEMENT_PROTOCOL *EsrtProtocol;\r
EFI_SYSTEM_RESOURCE_ENTRY Entry;\r
+ EFI_HANDLE *HandleBuffer;\r
+ UINTN NumberOfHandles;\r
\r
EsrtGuidFound = FALSE;\r
if (mIsVirtualAddrConverted) {\r
}\r
\r
//\r
- // Check ESRT configuration table\r
+ // Check Firmware Management Protocols\r
//\r
if (!EsrtGuidFound) {\r
- Status = EfiGetSystemConfigurationTable(&gEfiSystemResourceTableGuid, (VOID **)&Esrt);\r
+ HandleBuffer = NULL;\r
+ Status = GetFmpHandleBufferByType (\r
+ &CapsuleHeader->CapsuleGuid,\r
+ 0,\r
+ &NumberOfHandles,\r
+ &HandleBuffer\r
+ );\r
if (!EFI_ERROR(Status)) {\r
- ASSERT (Esrt != NULL);\r
- EsrtEntry = (VOID *)(Esrt + 1);\r
- for (Index = 0; Index < Esrt->FwResourceCount; Index++, EsrtEntry++) {\r
- if (CompareGuid(&EsrtEntry->FwClass, &CapsuleHeader->CapsuleGuid)) {\r
- EsrtGuidFound = TRUE;\r
- break;\r
- }\r
- }\r
+ EsrtGuidFound = TRUE;\r
+ }\r
+ if (HandleBuffer != NULL) {\r
+ FreePool (HandleBuffer);\r
}\r
}\r
}\r
[Guids]\r
gEfiFmpCapsuleGuid ## SOMETIMES_CONSUMES ## GUID\r
gWindowsUxCapsuleGuid ## SOMETIMES_CONSUMES ## GUID\r
- gEfiSystemResourceTableGuid ## SOMETIMES_CONSUMES ## GUID\r
## SOMETIMES_CONSUMES ## Variable:L"CapsuleMax"\r
## SOMETIMES_PRODUCES ## Variable:L"CapsuleMax"\r
gEfiCapsuleReportGuid\r