CHAR16 *gAdjustNumber;\r
CHAR16 *gSaveChanges;\r
CHAR16 *gOptionMismatch;\r
+CHAR16 *gFormSuppress;\r
\r
CHAR16 *mUnknownString = L"!";\r
\r
Fetch the Ifr binary data of a FormSet.\r
\r
@param Handle PackageList Handle\r
- @param FormSetGuid GUID of a formset. If not specified (NULL or zero\r
- GUID), take the first FormSet found in package\r
- list.\r
+ @param FormSetGuid On input, GUID or class GUID of a formset. If not\r
+ specified (NULL or zero GUID), take the first\r
+ FormSet with class GUID EFI_HII_PLATFORM_SETUP_FORMSET_GUID\r
+ found in package list.\r
+ On output, GUID of the formset found(if not NULL).\r
@param BinaryLength The length of the FormSet IFR binary.\r
@param BinaryData The buffer designed to receive the FormSet.\r
\r
UINT8 *OpCodeData;\r
UINT32 Offset;\r
UINT32 Offset2;\r
- BOOLEAN ReturnDefault;\r
UINT32 PackageListLength;\r
EFI_HII_PACKAGE_HEADER PackageHeader;\r
UINT8 Index;\r
UINT8 NumberOfClassGuid;\r
- BOOLEAN IsSetupClassGuid;\r
+ BOOLEAN ClassGuidMatch;\r
EFI_GUID *ClassGuid;\r
+ EFI_GUID *ComparingGuid;\r
\r
OpCodeData = NULL;\r
Package = NULL;\r
- ZeroMem (&PackageHeader, sizeof (EFI_HII_PACKAGE_HEADER));;\r
+ ZeroMem (&PackageHeader, sizeof (EFI_HII_PACKAGE_HEADER));\r
\r
//\r
- // if FormSetGuid is NULL or zero GUID, return first FormSet in the package list\r
+ // if FormSetGuid is NULL or zero GUID, return first Setup FormSet in the package list\r
//\r
if (FormSetGuid == NULL || CompareGuid (FormSetGuid, &gZeroGuid)) {\r
- ReturnDefault = TRUE;\r
+ ComparingGuid = &gEfiHiiPlatformSetupFormsetGuid;\r
} else {\r
- ReturnDefault = FALSE;\r
+ ComparingGuid = FormSetGuid;\r
}\r
\r
//\r
Offset2 = 0;\r
CopyMem (&PackageListLength, &HiiPackageList->PackageLength, sizeof (UINT32));\r
\r
+ ClassGuidMatch = FALSE;\r
while (Offset < PackageListLength) {\r
Package = ((UINT8 *) HiiPackageList) + Offset;\r
CopyMem (&PackageHeader, Package, sizeof (EFI_HII_PACKAGE_HEADER));\r
\r
if (((EFI_IFR_OP_HEADER *) OpCodeData)->OpCode == EFI_IFR_FORM_SET_OP) {\r
//\r
- // Check whether return default FormSet\r
+ // Try to compare against formset GUID\r
//\r
- if (ReturnDefault) {\r
- //\r
- // Check ClassGuid of formset OpCode\r
- //\r
- IsSetupClassGuid = FALSE;\r
- NumberOfClassGuid = (UINT8) (((EFI_IFR_FORM_SET *) OpCodeData)->Flags & 0x3);\r
- ClassGuid = (EFI_GUID *) (OpCodeData + sizeof (EFI_IFR_FORM_SET));\r
- for (Index = 0; Index < NumberOfClassGuid; Index++) {\r
- if (CompareGuid (ClassGuid + Index, &gEfiHiiPlatformSetupFormsetGuid)) {\r
- IsSetupClassGuid = TRUE;\r
- break;\r
- }\r
- }\r
- if (IsSetupClassGuid) {\r
- break;\r
- }\r
+ if (CompareGuid (ComparingGuid, (EFI_GUID *)(OpCodeData + sizeof (EFI_IFR_OP_HEADER)))) {\r
+ break;\r
}\r
\r
//\r
- // FormSet GUID is specified, check it\r
+ // Try to compare against formset class GUID\r
//\r
- if (CompareGuid (FormSetGuid, (EFI_GUID *)(OpCodeData + sizeof (EFI_IFR_OP_HEADER)))) {\r
+ NumberOfClassGuid = (UINT8) (((EFI_IFR_FORM_SET *) OpCodeData)->Flags & 0x3);\r
+ ClassGuid = (EFI_GUID *) (OpCodeData + sizeof (EFI_IFR_FORM_SET));\r
+ for (Index = 0; Index < NumberOfClassGuid; Index++) {\r
+ if (CompareGuid (ComparingGuid, ClassGuid + Index)) {\r
+ ClassGuidMatch = TRUE;\r
+ break;\r
+ }\r
+ }\r
+ if (ClassGuidMatch) {\r
break;\r
}\r
}\r
return EFI_NOT_FOUND;\r
}\r
\r
- if (ReturnDefault && FormSetGuid != NULL) {\r
+ if (ClassGuidMatch && (FormSetGuid != NULL)) {\r
//\r
- // Return the default FormSet GUID\r
+ // Return the FormSet GUID\r
//\r
CopyMem (FormSetGuid, &((EFI_IFR_FORM_SET *) OpCodeData)->Guid, sizeof (EFI_GUID));\r
}\r
Initialize the internal data structure of a FormSet.\r
\r
@param Handle PackageList Handle\r
- @param FormSetGuid GUID of a formset. If not specified (NULL or zero\r
- GUID), take the first FormSet found in package\r
- list.\r
+ @param FormSetGuid On input, GUID or class GUID of a formset. If not\r
+ specified (NULL or zero GUID), take the first\r
+ FormSet with class GUID EFI_HII_PLATFORM_SETUP_FORMSET_GUID\r
+ found in package list.\r
+ On output, GUID of the formset found(if not NULL).\r
@param FormSet FormSet data structure.\r
\r
@retval EFI_SUCCESS The function completed successfully.\r