OpCodeData = Package + Offset2;\r
\r
if (((EFI_IFR_OP_HEADER *) OpCodeData)->OpCode == EFI_IFR_FORM_SET_OP) {\r
- //\r
- // Find FormSet OpCode\r
- //\r
- ClassGuidNum = ((EFI_IFR_FORM_SET *) OpCodeData)->Flags;\r
- ClassGuid = (EFI_GUID *) (VOID *)(OpCodeData + sizeof (EFI_IFR_FORM_SET));\r
- while (ClassGuidNum-- > 0) {\r
- if (CompareGuid (SetupClassGuid, ClassGuid)) {\r
- CopyMem (FormSetTitle, &((EFI_IFR_FORM_SET *) OpCodeData)->FormSetTitle, sizeof (EFI_STRING_ID));\r
- CopyMem (FormSetHelp, &((EFI_IFR_FORM_SET *) OpCodeData)->Help, sizeof (EFI_STRING_ID));\r
- FreePool (HiiPackageList);\r
- return TRUE;\r
+ if (((EFI_IFR_OP_HEADER *) OpCodeData)->Length > OFFSET_OF (EFI_IFR_FORM_SET, Flags)) {\r
+ //\r
+ // Find FormSet OpCode\r
+ //\r
+ ClassGuidNum = (UINT8) (((EFI_IFR_FORM_SET *) OpCodeData)->Flags & 0x3);\r
+ ClassGuid = (EFI_GUID *) (VOID *)(OpCodeData + sizeof (EFI_IFR_FORM_SET));\r
+ while (ClassGuidNum-- > 0) {\r
+ if (CompareGuid (SetupClassGuid, ClassGuid)) {\r
+ CopyMem (FormSetTitle, &((EFI_IFR_FORM_SET *) OpCodeData)->FormSetTitle, sizeof (EFI_STRING_ID));\r
+ CopyMem (FormSetHelp, &((EFI_IFR_FORM_SET *) OpCodeData)->Help, sizeof (EFI_STRING_ID));\r
+ FreePool (HiiPackageList);\r
+ return TRUE;\r
+ }\r
+ ClassGuid ++;\r
}\r
+ } else {\r
+ CopyMem (FormSetTitle, &((EFI_IFR_FORM_SET *) OpCodeData)->FormSetTitle, sizeof (EFI_STRING_ID));\r
+ CopyMem (FormSetHelp, &((EFI_IFR_FORM_SET *) OpCodeData)->Help, sizeof (EFI_STRING_ID));\r
+ FreePool (HiiPackageList);\r
+ return TRUE;\r
}\r
}\r
\r
&NumHandles,\r
&DriverHealthHandles\r
);\r
+\r
//\r
- // If there are no drivers installed driver health protocol\r
+ // If there are no drivers installed driver health protocol, do not create driver health entry in UI\r
//\r
- if (NumHandles == 0) {\r
- HiiSetString (HiiHandle, STRING_TOKEN (STR_DM_DRIVER_HEALTH_TITLE), GetStringById (STRING_TOKEN (STR_EMPTY_STRING)), NULL);\r
- HiiSetString (HiiHandle, STRING_TOKEN (STR_DRIVER_HEALTH_ALL_HEALTHY), GetStringById (STRING_TOKEN (STR_EMPTY_STRING)), NULL);\r
- } else {\r
+ if (NumHandles != 0) {\r
+ //\r
+ // If driver health protocol is installed, create Driver Health subtitle and entry\r
+ //\r
+ HiiCreateSubTitleOpCode (StartOpCodeHandle, STRING_TOKEN (STR_DM_DRIVER_HEALTH_TITLE), 0, 0, 0);\r
+ HiiCreateActionOpCode (\r
+ StartOpCodeHandle, // Container for dynamic created opcodes\r
+ DEVICE_MANAGER_KEY_DRIVER_HEALTH, // Question ID\r
+ STRING_TOKEN(STR_DRIVER_HEALTH_ALL_HEALTHY), // Prompt text\r
+ STRING_TOKEN(STR_DRIVER_HEALTH_STATUS_HELP), // Help text\r
+ EFI_IFR_FLAG_CALLBACK, // Question flag\r
+ 0 // Action String ID\r
+ );\r
+\r
//\r
// Check All Driver health status\r
//\r