]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/HiiConfigRouting.h
Update the copyright notice format
[mirror_edk2.git] / MdePkg / Include / Protocol / HiiConfigRouting.h
index 80a9452c0f90cbfe975378c639388464610507fd..ceff241fe6914432609cca1d80843f4e7a5a6f10 100644 (file)
@@ -5,14 +5,14 @@
   information from configuration applications, routing the\r
   results to the appropriate drivers.\r
   \r
   information from configuration applications, routing the\r
   results to the appropriate drivers.\r
   \r
-  Copyright (c) 2006 - 2007, Intel Corporation\r
-  All rights reserved. This program and the accompanying materials                          \r
-  are licensed and made available under the terms and conditions of the BSD License         \r
-  which accompanies this distribution.  The full text of the license may be found at        \r
-  http://opensource.org/licenses/bsd-license.php                                            \r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution.  \r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php.                                          \r
+    \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
 \r
 **/\r
 \r
 \r
 **/\r
 \r
 \r
 typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;\r
 \r
 \r
 typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;\r
 \r
-\r
 /**\r
    \r
   This function allows the caller to request the current\r
   configuration for one or more named elements from one or more\r
   drivers. The resulting string is in the standard HII\r
 /**\r
    \r
   This function allows the caller to request the current\r
   configuration for one or more named elements from one or more\r
   drivers. The resulting string is in the standard HII\r
-  configuration string format. If Successful Results contains an\r
+  configuration string format. If Successful, Results contains an\r
   equivalent string with "=" and the values associated with all\r
   names added in. The expected implementation is for each\r
   equivalent string with "=" and the values associated with all\r
   names added in. The expected implementation is for each\r
-  <ConfigRequest> substring in the Request, call the HII\r
+  <ConfigRequest> substring in the Request to call the HII\r
   Configuration Routing Protocol ExtractProtocol function for the\r
   driver corresponding to the <ConfigHdr> at the start of the\r
   <ConfigRequest> substring. The request fails if no driver\r
   Configuration Routing Protocol ExtractProtocol function for the\r
   driver corresponding to the <ConfigHdr> at the start of the\r
   <ConfigRequest> substring. The request fails if no driver\r
@@ -46,7 +45,7 @@ typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;
   They must have an additional description indicating the type of\r
   alternative configuration the string represents,\r
   "ALTCFG=<StringToken>". That <StringToken> (when converted from\r
   They must have an additional description indicating the type of\r
   alternative configuration the string represents,\r
   "ALTCFG=<StringToken>". That <StringToken> (when converted from\r
-  Hex UNICODE to binary) is a reference to a string in the\r
+  hexadecimal (encoded as text) to binary) is a reference to a string in the\r
   associated string pack. As an example, assume that the Request\r
   string is:\r
   GUID=...&NAME=00480050&PATH=...&Fred&George&Ron&Neville A result\r
   associated string pack. As an example, assume that the Request\r
   string is:\r
   GUID=...&NAME=00480050&PATH=...&Fred&George&Ron&Neville A result\r
@@ -54,42 +53,40 @@ typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;
   GUID=...&NAME=00480050&PATH=...&Fred=16&George=16&Ron=12&Neville=11&\r
   GUID=...&NAME=00480050&PATH=...&ALTCFG=0037&Fred=12&Neville=7\r
 \r
   GUID=...&NAME=00480050&PATH=...&Fred=16&George=16&Ron=12&Neville=11&\r
   GUID=...&NAME=00480050&PATH=...&ALTCFG=0037&Fred=12&Neville=7\r
 \r
-  @param This   Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
-                instance.\r
+  @param This       Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
+                    instance.\r
 \r
 \r
-  @param Request  A null-terminated Unicode string in\r
-                  <MultiConfigRequest> format.\r
+  @param Request    A null-terminated string in <MultiConfigRequest> format.\r
 \r
   @param Progress   On return, points to a character in the\r
                     Request string. Points to the string's null\r
 \r
   @param Progress   On return, points to a character in the\r
                     Request string. Points to the string's null\r
-                    terminator if request was successful. Points\r
+                    terminator if the request was successful. Points\r
                     to the most recent '&' before the first\r
                     failing name / value pair (or the beginning\r
                     of the string if the failure is in the first\r
                     name / value pair) if the request was not\r
                     successful\r
 \r
                     to the most recent '&' before the first\r
                     failing name / value pair (or the beginning\r
                     of the string if the failure is in the first\r
                     name / value pair) if the request was not\r
                     successful\r
 \r
-  @param Results    Null-terminated Unicode string in\r
-                    <MultiConfigAltResp> format which has all\r
-                    values filled in for the names in the\r
-                    Request string. String to be allocated by\r
-                    the called function.\r
+  @param Results    A null-terminated string in <MultiConfigAltResp> format\r
+                    which has all values filled in for the names in the\r
+                    Request string.\r
 \r
 \r
-  @retval EFI_SUCCESS   The Results string is filled with the\r
-                        values corresponding to all requested\r
-                        names.\r
+  @retval EFI_SUCCESS             The Results string is filled with the\r
+                                  values corresponding to all requested\r
+                                  names.\r
 \r
 \r
-  @retval EFI_OUT_OF_MEMORY   Not enough memory to store the\r
-                              parts of the results that must be\r
-                              stored awaiting possible future\r
-                              protocols.\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the\r
+                                  parts of the results that must be\r
+                                  stored awaiting possible future\r
+                                  protocols.\r
 \r
   @retval EFI_INVALID_PARAMETER   For example, passing in a NULL\r
                                   for the Request parameter\r
                                   would result in this type of\r
                                   error. The Progress parameter\r
 \r
   @retval EFI_INVALID_PARAMETER   For example, passing in a NULL\r
                                   for the Request parameter\r
                                   would result in this type of\r
                                   error. The Progress parameter\r
-                                  is set to NULL. EFI_NOT_FOUND\r
-                                  Routing data doesn't match any\r
+                                  is set to NULL. \r
+  \r
+  @retval EFI_NOT_FOUND           Routing data doesn't match any\r
                                   known driver. Progress set to\r
                                   the "G" in "GUID" of the\r
                                   routing header that doesn't\r
                                   known driver. Progress set to\r
                                   the "G" in "GUID" of the\r
                                   routing header that doesn't\r
@@ -99,8 +96,8 @@ typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;
                                   configuration extraction.\r
 \r
   @retval EFI_INVALID_PARAMETER   Illegal syntax. Progress set\r
                                   configuration extraction.\r
 \r
   @retval EFI_INVALID_PARAMETER   Illegal syntax. Progress set\r
-                                  to most recent & before the\r
-                                  error or the beginning of the\r
+                                  to the most recent & before the\r
+                                  error, or the beginning of the\r
                                   string.\r
   @retval EFI_INVALID_PARAMETER   Unknown name.\r
 \r
                                   string.\r
   @retval EFI_INVALID_PARAMETER   Unknown name.\r
 \r
@@ -108,42 +105,39 @@ typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;
 **/\r
 typedef\r
 EFI_STATUS\r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_HII_ROUTING_EXTRACT_CONFIG ) (\r
+(EFIAPI * EFI_HII_EXTRACT_CONFIG)(\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
-  IN CONST  EFI_STRING                      *Request,\r
+  IN CONST  EFI_STRING                      Request,\r
   OUT       EFI_STRING                      *Progress,\r
   OUT       EFI_STRING                      *Results\r
 );\r
 \r
 /**\r
   OUT       EFI_STRING                      *Progress,\r
   OUT       EFI_STRING                      *Results\r
 );\r
 \r
 /**\r
-   \r
+  This function allows the caller to request the current configuration \r
+  for the entirety of the current HII database and returns the data in\r
+  a null-terminated string.\r
+\r
   This function allows the caller to request the current\r
   configuration for all of the current HII database. The results\r
   include both the current and alternate configurations as\r
   This function allows the caller to request the current\r
   configuration for all of the current HII database. The results\r
   include both the current and alternate configurations as\r
-  described in ExtractConfig() above. Implementation note: This\r
-  call has deceptively few inputs but the implementation is likely\r
-  to be somewhat complex. The requirement is to scan all IFR in\r
-  the HII database to determine the list of names and then request\r
-  the configuration using the corresponding drivers??\r
-  EFI_HII_CONFIG_ACCESS_PROTOCOL.ExtractConfig() interfaces below.\r
+  described in ExtractConfig() above. \r
   \r
   \r
-  @param This   Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
-                instance.\r
+  @param This     Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance.\r
   \r
   \r
-  @param Results  A null-terminated Unicode string in\r
-                  <MultiConfigAltResp> format which has all\r
-                  values filled in for the names in the Request\r
-                  string. String to be allocated by this\r
-                  function. De-allocation is up to the caller.\r
+  @param Results  A null-terminated string in <MultiConfigAltResp>\r
+                  format which has all values filled in for the\r
+                  names in the Request string.\r
+                  String to be allocated by this function.\r
+                  De-allocation is up to the caller.\r
   \r
   \r
-  @retval EFI_SUCCESS   The Results string is filled with the\r
-                        values corresponding to all requested\r
-                        names.\r
+  @retval EFI_SUCCESS             The Results string is filled with the\r
+                                  values corresponding to all requested\r
+                                  names.\r
   \r
   \r
-  @retval EFI_OUT_OF_MEMORY   Not enough memory to store the\r
-                              parts of the results that must be\r
-                              stored awaiting possible future\r
-                              protocols.\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the\r
+                                  parts of the results that must be\r
+                                  stored awaiting possible future\r
+                                  protocols.\r
   \r
   @retval EFI_INVALID_PARAMETERS  For example, passing in a NULL\r
                                   for the Results parameter\r
   \r
   @retval EFI_INVALID_PARAMETERS  For example, passing in a NULL\r
                                   for the Results parameter\r
@@ -153,7 +147,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_HII_ROUTING_EXPORT_CONFIG ) (\r
+(EFIAPI * EFI_HII_EXPORT_CONFIG)(\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   OUT       EFI_STRING                      *Results\r
 );\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   OUT       EFI_STRING                      *Results\r
 );\r
@@ -170,38 +164,36 @@ EFI_STATUS
   to the driver whose routing information is defined by the\r
   <ConfigHdr> in turn.\r
 \r
   to the driver whose routing information is defined by the\r
   <ConfigHdr> in turn.\r
 \r
-  @param This   Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
-                instance.\r
+  @param This           Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance.\r
 \r
 \r
-  @param Configuration  A null-terminated Unicode string in\r
-                        <MulltiConfigResp> format.\r
+  @param Configuration  A null-terminated string in <MulltiConfigResp> format.\r
 \r
 \r
-  @param Progress   A pointer to a string filled in with the\r
-                    offset of the most recent '&' before the\r
-                    first failing name / value pair (or the\r
-                    beginning of the string if the failure is in\r
-                    the first name / value pair) or the\r
-                    terminating NULL if all was successful.\r
+  @param Progress       A pointer to a string filled in with the\r
+                        offset of the most recent '&' before the\r
+                        first failing name / value pair (or the\r
+                        beginning of the string if the failure is in\r
+                        the first name / value pair), or the\r
+                        terminating NULL if all was successful.\r
 \r
 \r
-  @retval EFI_SUCCESS   The results have been distributed or are\r
-                        awaiting distribution.\r
+  @retval EFI_SUCCESS             The results have been distributed or are\r
+                                  awaiting distribution.\r
   \r
   \r
-  @retval EFI_OUT_OF_MEMORY   Not enough memory to store the\r
-                              parts of the results that must be\r
-                              stored awaiting possible future\r
-                              protocols.\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the\r
+                                  parts of the results that must be\r
+                                  stored awaiting possible future\r
+                                  protocols.\r
   \r
   @retval EFI_INVALID_PARAMETERS  Passing in a NULL for the\r
                                   Results parameter would result\r
                                   in this type of error.\r
   \r
   \r
   @retval EFI_INVALID_PARAMETERS  Passing in a NULL for the\r
                                   Results parameter would result\r
                                   in this type of error.\r
   \r
-  @retval EFI_NOT_FOUND   Target for the specified routing data\r
-                          was not found\r
+  @retval EFI_NOT_FOUND           The target for the specified routing data\r
+                                  was not found.\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_HII_ROUTING_ROUTE_CONFIG ) (\r
+(EFIAPI * EFI_HII_ROUTE_CONFIG)(\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   IN CONST  EFI_STRING                      Configuration,\r
   OUT       EFI_STRING                      *Progress\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   IN CONST  EFI_STRING                      Configuration,\r
   OUT       EFI_STRING                      *Progress\r
@@ -215,39 +207,39 @@ EFI_STATUS
   consists of a list of <BlockName> formatted names. It uses the\r
   offset in the name to determine the index into the Block to\r
   start the extraction and the width of each name to determine the\r
   consists of a list of <BlockName> formatted names. It uses the\r
   offset in the name to determine the index into the Block to\r
   start the extraction and the width of each name to determine the\r
-  number of bytes to extract. These are mapped to a UNICODE value\r
+  number of bytes to extract. These are mapped to a string\r
   using the equivalent of the C "%x" format (with optional leading\r
   spaces). The call fails if, for any (offset, width) pair in\r
   ConfigRequest, offset+value >= BlockSize.\r
 \r
   using the equivalent of the C "%x" format (with optional leading\r
   spaces). The call fails if, for any (offset, width) pair in\r
   ConfigRequest, offset+value >= BlockSize.\r
 \r
-  @param This   Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
-                instance.\r
+  @param This      Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance.\r
 \r
 \r
-  @param ConfigRequest  A null-terminated Unicode string in\r
-                        <ConfigRequest> format.\r
+  @param ConfigRequest  A null-terminated string in <ConfigRequest> format.\r
 \r
 \r
-  @param Block  Array of bytes defining the block's\r
-                configuration.\r
+  @param Block      An array of bytes defining the block's\r
+                    configuration.\r
 \r
 \r
-  @param BlockSize  Length in bytes of Block.\r
+  @param BlockSize  The length in bytes of Block.\r
 \r
 \r
-  @param Config   Filled-in configuration string. String\r
-                  allocated by the function. Returned only if\r
-                  call is successful.\r
+  @param Config     The filled-in configuration string. String\r
+                    allocated by the function. Returned only if\r
+                    call is successful. The null-terminated string \r
+                    will be <ConfigResp> format.\r
 \r
   @param Progress   A pointer to a string filled in with the\r
                     offset of the most recent '&' before the\r
                     first failing name / value pair (or the\r
                     beginning of the string if the failure is in\r
 \r
   @param Progress   A pointer to a string filled in with the\r
                     offset of the most recent '&' before the\r
                     first failing name / value pair (or the\r
                     beginning of the string if the failure is in\r
-                    the first name / value pair) or the\r
+                    the first name / value pair), or the\r
                     terminating NULL if all was successful.\r
 \r
                     terminating NULL if all was successful.\r
 \r
-  @retval EFI_SUCCESS   The request succeeded. Progress points\r
-                        to the null terminator at the end of the\r
-                        ConfigRequest string.\r
-  @retval EFI_OUT_OF_MEMORY   Not enough memory to allocate\r
-                              Config. Progress points to the\r
-                              first character of ConfigRequest.\r
+  @retval EFI_SUCCESS             The request succeeded. Progress points\r
+                                  to the null terminator at the end of the\r
+                                  ConfigRequest string.\r
+\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory to allocate\r
+                                  Config. Progress points to the\r
+                                  first character of ConfigRequest.\r
 \r
   @retval EFI_INVALID_PARAMETERS  Passing in a NULL for the\r
                                   ConfigRequest or Block\r
 \r
   @retval EFI_INVALID_PARAMETERS  Passing in a NULL for the\r
                                   ConfigRequest or Block\r
@@ -256,11 +248,11 @@ EFI_STATUS
                                   to the first character of\r
                                   ConfigRequest.\r
 \r
                                   to the first character of\r
                                   ConfigRequest.\r
 \r
-  @retval EFI_NOT_FOUND   Target for the specified routing data\r
-                          was not found. Progress points to the\r
-                          'G' in "GUID" of the errant routing\r
-                          data. EFI_DEVICE_ERROR Block not large\r
-                          enough. Progress undefined.\r
+  @retval EFI_NOT_FOUND           The target for the specified routing data\r
+                                  was not found. Progress points to the\r
+                                  'G' in "GUID" of the errant routing\r
+                                  data. \r
+  @retval EFI_DEVICE_ERROR        The block is not large enough. Progress undefined.\r
 \r
   @retval EFI_INVALID_PARAMETER   Encountered non <BlockName>\r
                                   formatted string. Block is\r
 \r
   @retval EFI_INVALID_PARAMETER   Encountered non <BlockName>\r
                                   formatted string. Block is\r
@@ -271,19 +263,18 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_HII_ROUTING_BLOCK_TO_CONFIG ) (\r
+(EFIAPI * EFI_HII_BLOCK_TO_CONFIG)(\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   IN CONST  EFI_STRING                      ConfigRequest,\r
   IN CONST  UINT8                           *Block,\r
   IN CONST  UINTN                           BlockSize,\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   IN CONST  EFI_STRING                      ConfigRequest,\r
   IN CONST  UINT8                           *Block,\r
   IN CONST  UINTN                           BlockSize,\r
-  OUT       EFI_STRING                      **Config,\r
+  OUT       EFI_STRING                      *Config,\r
   OUT       EFI_STRING                      *Progress\r
 );\r
 \r
 \r
 \r
 /**\r
   OUT       EFI_STRING                      *Progress\r
 );\r
 \r
 \r
 \r
 /**\r
-   \r
   This function maps a configuration containing a series of\r
   <BlockConfig> formatted name value pairs in ConfigResp into a\r
   Block so it may be stored in a linear mapped storage such as a\r
   This function maps a configuration containing a series of\r
   <BlockConfig> formatted name value pairs in ConfigResp into a\r
   Block so it may be stored in a linear mapped storage such as a\r
@@ -297,13 +288,11 @@ EFI_STATUS
   The results are\r
   55 AA 02 07 04 05\r
 \r
   The results are\r
   55 AA 02 07 04 05\r
 \r
-  @param This   Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
-                instance.\r
+  @param This           Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance.\r
 \r
 \r
-  @param ConfigResp   A  null-terminated Unicode string in\r
-                      <ConfigResp> format.\r
+  @param ConfigResp     A null-terminated string in <ConfigResp> format.\r
 \r
 \r
-  @param CurrentBlock   A possibly null array of bytes\r
+  @param Block          A possibly null array of bytes\r
                         representing the current block. Only\r
                         bytes referenced in the ConfigResp\r
                         string in the block are modified. If\r
                         representing the current block. Only\r
                         bytes referenced in the ConfigResp\r
                         string in the block are modified. If\r
@@ -311,47 +300,103 @@ EFI_STATUS
                         BlockLength parameter is (on input)\r
                         shorter than required by the\r
                         Configuration string, only the BlockSize\r
                         BlockLength parameter is (on input)\r
                         shorter than required by the\r
                         Configuration string, only the BlockSize\r
-                        parameter is updated and an appropriate\r
+                        parameter is updated, and an appropriate\r
                         status (see below) is returned.\r
 \r
                         status (see below) is returned.\r
 \r
-  @param BlockSize  The length of the Block in units of UINT8.\r
-                    On input, this is the size of the Block. On\r
-                    output, if successful, contains the index of\r
-                    the last modified byte in the Block.\r
-\r
-  @param Progress   On return, points to an element of the\r
-                    ConfigResp string filled in with the offset\r
-                    of the most recent "&" before the first\r
-                    failing name / value pair (or the beginning\r
-                    of the string if the failure is in the first\r
-                    name / value pair) or the terminating NULL\r
-                    if all was successful.\r
+  @param BlockSize      The length of the Block in units of UINT8.\r
+                        On input, this is the size of the Block. On\r
+                        output, if successful, contains the index of\r
+                        the last modified byte in the Block.\r
+\r
+  @param Progress       On return, points to an element of the\r
+                        ConfigResp string filled in with the offset\r
+                        of the most recent "&" before the first\r
+                        failing name / value pair (or the beginning\r
+                        of the string if the failure is in the first\r
+                        name / value pair), or the terminating NULL\r
+                        if all was successful.\r
+\r
+  @retval EFI_SUCCESS            The request succeeded. Progress points to the null\r
+                                 terminator at the end of the ConfigResp string.\r
+  @retval EFI_OUT_OF_RESOURCES   Not enough memory to allocate Config. Progress\r
+                                 points to the first character of ConfigResp.\r
+  @retval EFI_INVALID_PARAMETER  Passing in a NULL for the ConfigResp or\r
+                                 Block parameter would result in this type of\r
+                                 error. Progress points to the first character of\r
+                                         ConfigResp.\r
+  @retval EFI_INVALID_PARAMETER  Encountered non <BlockName> formatted name /\r
+                                 value pair. Block is left updated and\r
+                                 Progress points at the '&' preceding the first\r
+                                 non-<BlockName>.\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_HII_ROUTING_CONFIG_TO_BLOCK ) (\r
+(EFIAPI * EFI_HII_CONFIG_TO_BLOCK)(\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
-  IN CONST  EFI_STRING                      *ConfigResp,\r
-  IN CONST  UINT8                           *Block,\r
+  IN CONST  EFI_STRING                      ConfigResp,\r
+  IN OUT    UINT8                           *Block,\r
   IN OUT    UINTN                           *BlockSize,\r
   OUT       EFI_STRING                      *Progress\r
 );\r
 \r
   IN OUT    UINTN                           *BlockSize,\r
   OUT       EFI_STRING                      *Progress\r
 );\r
 \r
-\r
 /**\r
 /**\r
-   \r
-  This protocol defines the configuration routing interfaces\r
-  between external applications and the HII. There may only be one\r
-  instance of this protocol in the system.\r
-\r
+  This helper function is to be called by drivers to extract portions of \r
+  a larger configuration string.\r
+          \r
+  @param This              A pointer to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance.\r
+  @param ConfigResp        A null-terminated string in <ConfigAltResp> format.\r
+  @param Guid              A pointer to the GUID value to search for in the \r
+                           routing portion of the ConfigResp string when retrieving \r
+                           the requested data. If Guid is NULL, then all GUID \r
+                           values will be searched for.\r
+  @param Name              A pointer to the NAME value to search for in the \r
+                           routing portion of the ConfigResp string when retrieving \r
+                           the requested data. If Name is NULL, then all Name \r
+                           values will be searched for.                         \r
+  @param DevicePath        A pointer to the PATH value to search for in the \r
+                           routing portion of the ConfigResp string when retrieving \r
+                           the requested data. If DevicePath is NULL, then all \r
+                           DevicePath values will be searched for.             \r
+  @param AltCfgId          A pointer to the ALTCFG value to search for in the \r
+                           routing portion of the ConfigResp string when retrieving \r
+                           the requested data.  If this parameter is NULL, \r
+                           then the current setting will be retrieved.\r
+  @param AltCfgResp        A pointer to a buffer which will be allocated by the \r
+                           function which contains the retrieved string as requested.  \r
+                           This buffer is only allocated if the call was successful. \r
+                           The null-terminated string will be <ConfigResp> format.\r
+  \r
+  @retval EFI_SUCCESS             The request succeeded. The requested data was extracted \r
+                                  and placed in the newly allocated AltCfgResp buffer.\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory to allocate AltCfgResp.    \r
+  @retval EFI_INVALID_PARAMETER   Any parameter is invalid.\r
+  @retval EFI_NOT_FOUND           The target for the specified routing data was not found.\r
 **/\r
 **/\r
+typedef\r
+EFI_STATUS \r
+(EFIAPI * EFI_HII_GET_ALT_CFG)(\r
+  IN  CONST EFI_HII_CONFIG_ROUTING_PROTOCOL    *This, \r
+  IN  CONST EFI_STRING                         ConfigResp, \r
+  IN  CONST EFI_GUID                           *Guid, \r
+  IN  CONST EFI_STRING                         Name, \r
+  IN  CONST EFI_DEVICE_PATH_PROTOCOL           *DevicePath,  \r
+  IN  CONST UINT16                             *AltCfgId,\r
+  OUT EFI_STRING                               *AltCfgResp \r
+  );\r
+\r
+///\r
+/// This protocol defines the configuration routing interfaces\r
+/// between external applications and the HII. There may only be one\r
+/// instance of this protocol in the system.\r
+///\r
 struct _EFI_HII_CONFIG_ROUTING_PROTOCOL {\r
 struct _EFI_HII_CONFIG_ROUTING_PROTOCOL {\r
-  EFI_HII_ROUTING_EXTRACT_CONFIG  ExtractConfig;\r
-  EFI_HII_ROUTING_EXPORT_CONFIG   ExportConfig;\r
-  EFI_HII_ROUTING_ROUTE_CONFIG    RouteConfig;\r
-  EFI_HII_ROUTING_BLOCK_TO_CONFIG BlockToConfig;\r
-  EFI_HII_ROUTING_CONFIG_TO_BLOCK ConfigToBlock;\r
+  EFI_HII_EXTRACT_CONFIG  ExtractConfig;\r
+  EFI_HII_EXPORT_CONFIG   ExportConfig;\r
+  EFI_HII_ROUTE_CONFIG    RouteConfig;\r
+  EFI_HII_BLOCK_TO_CONFIG BlockToConfig;\r
+  EFI_HII_CONFIG_TO_BLOCK ConfigToBlock;\r
+  EFI_HII_GET_ALT_CFG     GetAltConfig;\r
 };\r
 \r
 extern EFI_GUID gEfiHiiConfigRoutingProtocolGuid;\r
 };\r
 \r
 extern EFI_GUID gEfiHiiConfigRoutingProtocolGuid;\r