+/**\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 string element if the request was \r
+ 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 string\r
+ element 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 Resuts 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