+ if ((FwOneOfOp->Flags & FRAMEWORK_EFI_IFR_FLAG_INTERACTIVE) != 0) {\r
+ UOpcode.Question.Flags |= EFI_IFR_FLAG_CALLBACK;\r
+ \r
+ if (UOpcode.Question.QuestionId == 0) {\r
+ Status = FwQuestionIdToUefiQuestionId (ThunkContext, VarStoreId, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
+ if (EFI_ERROR (Status)) {\r
+ UOpcode.Question.QuestionId = FwOneOfOp->Key;\r
+ }\r
+\r
+ OneOfOptionMap = AllocateZeroPool (sizeof (ONE_OF_OPTION_MAP));\r
+ ASSERT (OneOfOptionMap != NULL);\r
+ OneOfOptionMap->Signature = ONE_OF_OPTION_MAP_SIGNATURE;\r
+ OneOfOptionMap->QuestionId = UOpcode.Question.QuestionId;\r
+ InitializeListHead (&OneOfOptionMap->OneOfOptionMapEntryListHead);\r
+ switch (FwOpcode->Width) {\r
+ case 1:\r
+ OneOfOptionMap->ValueType = EFI_IFR_TYPE_NUM_SIZE_8;\r
+ break;\r
+ case 2:\r
+ OneOfOptionMap->ValueType = EFI_IFR_TYPE_NUM_SIZE_16;\r
+ default:\r
+ ASSERT (FALSE);\r
+ break;\r
+ }\r
+\r
+ InsertTailList (&ThunkContext->OneOfOptionMapListHead, &OneOfOptionMap->Link);\r
+ } else { \r
+ OneOfOptionMapEntry = AllocateZeroPool (sizeof (ONE_OF_OPTION_MAP_ENTRY));\r
+ ASSERT (OneOfOptionMapEntry != NULL);\r
+\r
+ OneOfOptionMapEntry->FwKey = FwOneOfOp->Key;\r
+ OneOfOptionMapEntry->Signature = ONE_OF_OPTION_MAP_ENTRY_SIGNATURE;\r
+ \r
+ CopyMem (&OneOfOptionMapEntry->Value, &FwOneOfOp->Value, FwOpcode->Width);\r
+\r
+ ASSERT (OneOfOptionMap != NULL);\r
+ InsertTailList (&OneOfOptionMap->OneOfOptionMapEntryListHead, &OneOfOptionMapEntry->Link);\r
+ }\r
+ }\r
+\r
+ if (FwOneOfOp->Flags & FRAMEWORK_EFI_IFR_FLAG_RESET_REQUIRED) {\r
+ UOpcode.Question.Flags |= EFI_IFR_FLAG_RESET_REQUIRED;\r