+ CHAR8 *SupportedLanguages;\r
+ BOOLEAN Iso639Language;\r
+ BOOLEAN Found;\r
+ UINTN Index;\r
+\r
+ if (Language == NULL ||\r
+ ErrorType == NULL ||\r
+ Buffer == NULL ||\r
+ ControllerHandle == NULL ||\r
+ BufferSize == NULL) {\r
+\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ SupportedLanguages = This->SupportedLanguages;\r
+ Iso639Language = (BOOLEAN)(This == &gIDEBusDriverDiagnostics);\r
+ //\r
+ // Make sure Language is in the set of Supported Languages\r
+ //\r
+ Found = FALSE;\r
+ while (*SupportedLanguages != 0) {\r
+ if (Iso639Language) {\r
+ if (CompareMem (Language, SupportedLanguages, 3) == 0) {\r
+ Found = TRUE;\r
+ break;\r
+ }\r
+ SupportedLanguages += 3;\r
+ } else {\r
+ for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);\r
+ if (AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) {\r
+ Found = TRUE;\r
+ break;\r
+ }\r
+ SupportedLanguages += Index;\r
+ for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);\r
+ }\r
+ }\r
+ //\r
+ // If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED\r
+ //\r
+ if (!Found) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r