+/**\r
+\r
+ This function accepts a <MultiKeywordResp> formatted string, finds the associated\r
+ keyword owners, creates a <MultiConfigResp> string from it and forwards it to the\r
+ EFI_HII_ROUTING_PROTOCOL.RouteConfig function.\r
+ \r
+ If there is an issue in resolving the contents of the KeywordString, then the \r
+ function returns an error and also sets the Progress and ProgressErr with the \r
+ appropriate information about where the issue occurred and additional data about\r
+ the nature of the issue. \r
+ \r
+ In the case when KeywordString containing multiple keywords, when an EFI_NOT_FOUND\r
+ error is generated during processing the second or later keyword element, the system\r
+ storage associated with earlier keywords is not modified. All elements of the \r
+ KeywordString must successfully pass all tests for format and access prior to making\r
+ any modifications to storage.\r
+ \r
+ In the case when EFI_DEVICE_ERROR is returned from the processing of a KeywordString\r
+ containing multiple keywords, the state of storage associated with earlier keywords\r
+ is undefined.\r
+\r
+\r
+ @param This Pointer to the EFI_KEYWORD_HANDLER _PROTOCOL instance.\r
+\r
+ @param KeywordString A null-terminated string in <MultiKeywordResp> format. \r
+\r
+ @param Progress On return, points to a character in the KeywordString. \r
+ Points to the string's NULL terminator if the request \r
+ was successful. Points to the most recent '&' before \r
+ the first failing name / value pair (or the beginning\r
+ of the string if the failure is in the first name / value\r
+ pair) if the request was not successful.\r
+\r
+ @param ProgressErr If during the processing of the KeywordString there was\r
+ a failure, this parameter gives additional information \r
+ about the possible source of the problem. The various \r
+ errors are defined in "Related Definitions" below.\r
+\r
+\r
+ @retval EFI_SUCCESS The specified action was completed successfully.\r
+\r
+ @retval EFI_INVALID_PARAMETER One or more of the following are TRUE:\r
+ 1. KeywordString is NULL.\r
+ 2. Parsing of the KeywordString resulted in an \r
+ error. See Progress and ProgressErr for more data.\r
+\r
+ @retval EFI_NOT_FOUND An element of the KeywordString was not found. \r
+ See ProgressErr for more data.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. \r
+ See ProgressErr for more data.\r
+ \r
+ @retval EFI_ACCESS_DENIED The action violated system policy. See ProgressErr \r
+ for more data.\r
+\r
+ @retval EFI_DEVICE_ERROR An unexpected system error occurred. See ProgressErr\r
+ for more data.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI \r
+EfiConfigKeywordHandlerSetData (\r
+ IN EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *This,\r
+ IN CONST EFI_STRING KeywordString,\r
+ OUT EFI_STRING *Progress,\r
+ OUT UINT32 *ProgressErr\r
+ );\r
+\r
+/**\r
+\r
+ This function accepts a <MultiKeywordRequest> formatted string, finds the underlying \r
+ keyword owners, creates a <MultiConfigRequest> string from it and forwards it to the\r
+ EFI_HII_ROUTING_PROTOCOL.ExtractConfig function.\r
+ \r
+ If there is an issue in resolving the contents of the KeywordString, then the function\r
+ returns an EFI_INVALID_PARAMETER and also set the Progress and ProgressErr with the\r
+ appropriate information about where the issue occurred and additional data about the\r
+ nature of the issue.\r
+ \r
+ In the case when KeywordString is NULL, or contains multiple keywords, or when\r
+ EFI_NOT_FOUND is generated while processing the keyword elements, the Results string\r
+ contains values returned for all keywords processed prior to the keyword generating the \r
+ error but no values for the keyword with error or any following keywords.\r
+\r
+ \r
+ @param This Pointer to the EFI_KEYWORD_HANDLER _PROTOCOL instance.\r
+ \r
+ @param NameSpaceId A null-terminated string containing the platform configuration\r
+ language to search through in the system. If a NULL is passed\r
+ in, then it is assumed that any platform configuration language\r
+ with the prefix of "x-UEFI-" are searched.\r
+ \r
+ @param KeywordString A null-terminated string in <MultiKeywordRequest> format. If a\r
+ NULL is passed in the KeywordString field, all of the known \r
+ keywords in the system for the NameSpaceId specified are \r
+ returned in the Results field.\r
+ \r
+ @param Progress On return, points to a character in the KeywordString. Points\r
+ to the string's NULL terminator if the request was successful. \r
+ Points to the most recent '&' before the first failing name / value\r
+ pair (or the beginning of the string if the failure is in the first\r
+ name / value pair) if the request was not successful.\r
+ \r
+ @param ProgressErr If during the processing of the KeywordString there was a\r
+ failure, this parameter gives additional information about the \r
+ possible source of the problem. See the definitions in SetData()\r
+ for valid value definitions.\r
+ \r
+ @param Results A null-terminated string in <MultiKeywordResp> format is returned\r
+ which has all the values filled in for the keywords in the \r
+ KeywordString. This is a callee-allocated field, and must be freed\r
+ by the caller after being used. \r
+\r
+ @retval EFI_SUCCESS The specified action was completed successfully.\r
+ \r
+ @retval EFI_INVALID_PARAMETER One or more of the following are TRUE:\r
+ 1.Progress, ProgressErr, or Results is NULL.\r
+ 2.Parsing of the KeywordString resulted in an error. See\r
+ Progress and ProgressErr for more data.\r
+ \r
+\r
+ @retval EFI_NOT_FOUND An element of the KeywordString was not found. See\r
+ ProgressErr for more data.\r
+\r
+ @retval EFI_NOT_FOUND The NamespaceId specified was not found. See ProgressErr\r
+ for more data.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. See\r
+ ProgressErr for more data.\r
+ \r
+ @retval EFI_ACCESS_DENIED The action violated system policy. See ProgressErr for\r
+ more data.\r
+\r
+ @retval EFI_DEVICE_ERROR An unexpected system error occurred. See ProgressErr\r
+ for more data.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI \r
+EfiConfigKeywordHandlerGetData (\r
+ IN EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *This,\r
+ IN CONST EFI_STRING NameSpaceId, OPTIONAL\r
+ IN CONST EFI_STRING KeywordString, OPTIONAL\r
+ OUT EFI_STRING *Progress, \r
+ OUT UINT32 *ProgressErr,\r
+ OUT EFI_STRING *Results\r
+ );\r
+\r
+/**\r
+ Compare whether two names of languages are identical.\r
+\r
+ @param Language1 Name of language 1 from StringPackage\r
+ @param Language2 Name of language 2 to be compared with language 1.\r
+\r
+ @retval TRUE same\r
+ @retval FALSE not same\r
+\r
+**/\r
+BOOLEAN\r
+HiiCompareLanguage (\r
+ IN CHAR8 *Language1,\r
+ IN CHAR8 *Language2\r
+ )\r
+;\r
+\r
+/**\r
+ Retrieves a pointer to a Null-terminated ASCII string containing the list\r
+ of languages that an HII handle in the HII Database supports. The returned \r
+ string is allocated using AllocatePool(). The caller is responsible for freeing\r
+ the returned string using FreePool(). The format of the returned string follows\r
+ the language format assumed the HII Database.\r
+ \r
+ If HiiHandle is NULL, then ASSERT().\r
+\r
+ @param[in] HiiHandle A handle that was previously registered in the HII Database.\r
+\r
+ @retval NULL HiiHandle is not registered in the HII database\r
+ @retval NULL There are not enough resources available to retrieve the supported\r
+ languages.\r
+ @retval NULL The list of supported languages could not be retrieved.\r
+ @retval Other A pointer to the Null-terminated ASCII string of supported languages.\r
+\r
+**/\r
+CHAR8 *\r
+GetSupportedLanguages (\r
+ IN EFI_HII_HANDLE HiiHandle\r
+ );\r
+\r
+/**\r
+This function mainly use to get HiiDatabase information.\r
+\r
+@param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
+\r
+@retval EFI_SUCCESS Get the information successfully.\r
+@retval EFI_OUT_OF_RESOURCES Not enough memory to store the Hiidatabase data.\r
+\r
+**/\r
+EFI_STATUS\r
+HiiGetDatabaseInfo(\r
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This\r
+ );\r
+\r
+/**\r
+This is an internal function,mainly use to get and update configuration settings information.\r
+\r
+@param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
+\r
+@retval EFI_SUCCESS Get the information successfully.\r
+@retval EFI_OUT_OF_RESOURCES Not enough memory to store the Configuration Setting data.\r
+\r
+**/\r
+EFI_STATUS\r
+HiiGetConfigurationSetting(\r
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This\r
+ );\r