+\r
+CHAR8 *\r
+EFIAPI\r
+HiiLibGetSupportedSecondaryLanguages (\r
+ IN EFI_HII_HANDLE HiiHandle,\r
+ IN CONST CHAR8 *FirstLanguage\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ UINTN BufferSize;\r
+ CHAR8 *LanguageString;\r
+\r
+ ASSERT (HiiHandle != NULL);\r
+ ASSERT (IsHiiHandleRegistered (HiiHandle));\r
+ //\r
+ // Collect current supported 2nd Languages for given HII handle\r
+ //\r
+ BufferSize = 0x1000;\r
+ LanguageString = AllocateZeroPool (BufferSize);\r
+ if (LanguageString == NULL) {\r
+ return NULL;\r
+ }\r
+ Status = mHiiStringProt->GetSecondaryLanguages (mHiiStringProt, HiiHandle, FirstLanguage, LanguageString, &BufferSize);\r
+ \r
+ if (Status == EFI_BUFFER_TOO_SMALL) {\r
+ gBS->FreePool (LanguageString);\r
+ LanguageString = AllocateZeroPool (BufferSize);\r
+ if (LanguageString == NULL) {\r
+ return NULL;\r
+ }\r
+\r
+ Status = mHiiStringProt->GetSecondaryLanguages (mHiiStringProt, HiiHandle, FirstLanguage, LanguageString, &BufferSize);\r
+ }\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ LanguageString = NULL;\r
+ }\r
+\r
+ return LanguageString;\r
+}\r
+\r
+\r