+/**\r
+ Get Formset_storage base on the input varstoreid info.\r
+\r
+ @param FormSet Pointer of the current FormSet.\r
+ @param VarStoreId Varstore ID info.\r
+\r
+ @return Pointer to a FORMSET_STORAGE data structure.\r
+\r
+**/\r
+FORMSET_STORAGE *\r
+GetFstStgFromVarId (\r
+ IN FORM_BROWSER_FORMSET *FormSet,\r
+ IN EFI_VARSTORE_ID VarStoreId\r
+ )\r
+{\r
+ FORMSET_STORAGE *FormsetStorage;\r
+ LIST_ENTRY *Link;\r
+ BOOLEAN Found;\r
+\r
+ Found = FALSE;\r
+ FormsetStorage = NULL;\r
+ //\r
+ // Find Formset Storage for this Question\r
+ //\r
+ Link = GetFirstNode (&FormSet->StorageListHead);\r
+ while (!IsNull (&FormSet->StorageListHead, Link)) {\r
+ FormsetStorage = FORMSET_STORAGE_FROM_LINK (Link);\r
+\r
+ if (FormsetStorage->VarStoreId == VarStoreId) {\r
+ Found = TRUE;\r
+ break;\r
+ }\r
+\r
+ Link = GetNextNode (&FormSet->StorageListHead, Link);\r
+ }\r
+\r
+ return Found ? FormsetStorage : NULL;\r
+}\r
+\r
+/**\r
+ Get Formset_storage base on the input browser storage.\r
+\r
+ More than one formsets may share the same browser storage,\r
+ this function just get the first formset storage which\r
+ share the browser storage.\r
+\r
+ @param Storage browser storage info.\r
+\r
+ @return Pointer to a FORMSET_STORAGE data structure.\r
+ \r
+\r
+**/\r
+FORMSET_STORAGE *\r
+GetFstStgFromBrsStg (\r
+ IN BROWSER_STORAGE *Storage\r
+ )\r
+{\r
+ FORMSET_STORAGE *FormsetStorage;\r
+ LIST_ENTRY *Link;\r
+ LIST_ENTRY *FormsetLink;\r
+ FORM_BROWSER_FORMSET *FormSet;\r
+ BOOLEAN Found;\r
+\r
+ Found = FALSE;\r
+ FormsetStorage = NULL;\r
+\r
+ FormsetLink = GetFirstNode (&gBrowserFormSetList);\r
+ while (!IsNull (&gBrowserFormSetList, FormsetLink)) {\r
+ FormSet = FORM_BROWSER_FORMSET_FROM_LINK (FormsetLink);\r
+ FormsetLink = GetNextNode (&gBrowserFormSetList, FormsetLink);\r
+\r
+ Link = GetFirstNode (&FormSet->StorageListHead);\r
+ while (!IsNull (&FormSet->StorageListHead, Link)) {\r
+ FormsetStorage = FORMSET_STORAGE_FROM_LINK (Link);\r
+ Link = GetNextNode (&FormSet->StorageListHead, Link);\r
+\r
+ if (FormsetStorage->BrowserStorage == Storage) {\r
+ Found = TRUE;\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (Found) {\r
+ break;\r
+ }\r
+ }\r
+\r
+ return Found ? FormsetStorage : NULL;\r
+}\r
+\r