1*f439973dSWarner Losh /** @file 2*f439973dSWarner Losh The file provides services to manage the movement of 3*f439973dSWarner Losh configuration data from drivers to configuration applications. 4*f439973dSWarner Losh It then serves as the single point to receive configuration 5*f439973dSWarner Losh information from configuration applications, routing the 6*f439973dSWarner Losh results to the appropriate drivers. 7*f439973dSWarner Losh 8*f439973dSWarner Losh Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> 9*f439973dSWarner Losh SPDX-License-Identifier: BSD-2-Clause-Patent 10*f439973dSWarner Losh 11*f439973dSWarner Losh @par Revision Reference: 12*f439973dSWarner Losh This Protocol was introduced in UEFI Specification 2.1. 13*f439973dSWarner Losh 14*f439973dSWarner Losh 15*f439973dSWarner Losh **/ 16*f439973dSWarner Losh 17*f439973dSWarner Losh #ifndef __HII_CONFIG_ROUTING_H__ 18*f439973dSWarner Losh #define __HII_CONFIG_ROUTING_H__ 19*f439973dSWarner Losh 20*f439973dSWarner Losh #define EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID \ 21*f439973dSWarner Losh { 0x587e72d7, 0xcc50, 0x4f79, { 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f } } 22*f439973dSWarner Losh 23*f439973dSWarner Losh typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL; 24*f439973dSWarner Losh 25*f439973dSWarner Losh /** 26*f439973dSWarner Losh 27*f439973dSWarner Losh This function allows the caller to request the current 28*f439973dSWarner Losh configuration for one or more named elements from one or more 29*f439973dSWarner Losh drivers. The resulting string is in the standard HII 30*f439973dSWarner Losh configuration string format. If Successful, Results contains an 31*f439973dSWarner Losh equivalent string with "=" and the values associated with all 32*f439973dSWarner Losh names added in. The expected implementation is for each 33*f439973dSWarner Losh <ConfigRequest> substring in the Request to call the HII 34*f439973dSWarner Losh Configuration Routing Protocol ExtractProtocol function for the 35*f439973dSWarner Losh driver corresponding to the <ConfigHdr> at the start of the 36*f439973dSWarner Losh <ConfigRequest> substring. The request fails if no driver 37*f439973dSWarner Losh matches the <ConfigRequest> substring. Note: Alternative 38*f439973dSWarner Losh configuration strings may also be appended to the end of the 39*f439973dSWarner Losh current configuration string. If they are, they must appear 40*f439973dSWarner Losh after the current configuration. They must contain the same 41*f439973dSWarner Losh routing (GUID, NAME, PATH) as the current configuration string. 42*f439973dSWarner Losh They must have an additional description indicating the type of 43*f439973dSWarner Losh alternative configuration the string represents, 44*f439973dSWarner Losh "ALTCFG=<StringToken>". That <StringToken> (when converted from 45*f439973dSWarner Losh hexadecimal (encoded as text) to binary) is a reference to a string in the 46*f439973dSWarner Losh associated string pack. As an example, assume that the Request 47*f439973dSWarner Losh string is: 48*f439973dSWarner Losh GUID=...&NAME=00480050&PATH=...&Fred&George&Ron&Neville A result 49*f439973dSWarner Losh might be: 50*f439973dSWarner Losh GUID=...&NAME=00480050&PATH=...&Fred=16&George=16&Ron=12&Neville=11& 51*f439973dSWarner Losh GUID=...&NAME=00480050&PATH=...&ALTCFG=0037&Fred=12&Neville=7 52*f439973dSWarner Losh 53*f439973dSWarner Losh @param This Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL 54*f439973dSWarner Losh instance. 55*f439973dSWarner Losh 56*f439973dSWarner Losh @param Request A null-terminated string in <MultiConfigRequest> format. 57*f439973dSWarner Losh 58*f439973dSWarner Losh @param Progress On return, points to a character in the 59*f439973dSWarner Losh Request string. Points to the string's null 60*f439973dSWarner Losh terminator if the request was successful. Points 61*f439973dSWarner Losh to the most recent '&' before the first 62*f439973dSWarner Losh failing name / value pair (or the beginning 63*f439973dSWarner Losh of the string if the failure is in the first 64*f439973dSWarner Losh name / value pair) if the request was not 65*f439973dSWarner Losh successful 66*f439973dSWarner Losh 67*f439973dSWarner Losh @param Results A null-terminated string in <MultiConfigAltResp> format 68*f439973dSWarner Losh which has all values filled in for the names in the 69*f439973dSWarner Losh Request string. 70*f439973dSWarner Losh 71*f439973dSWarner Losh @retval EFI_SUCCESS The Results string is filled with the 72*f439973dSWarner Losh values corresponding to all requested 73*f439973dSWarner Losh names. 74*f439973dSWarner Losh 75*f439973dSWarner Losh @retval EFI_OUT_OF_RESOURCES Not enough memory to store the 76*f439973dSWarner Losh parts of the results that must be 77*f439973dSWarner Losh stored awaiting possible future 78*f439973dSWarner Losh protocols. 79*f439973dSWarner Losh 80*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER For example, passing in a NULL 81*f439973dSWarner Losh for the Request parameter 82*f439973dSWarner Losh would result in this type of 83*f439973dSWarner Losh error. The Progress parameter 84*f439973dSWarner Losh is set to NULL. 85*f439973dSWarner Losh 86*f439973dSWarner Losh @retval EFI_NOT_FOUND Routing data doesn't match any 87*f439973dSWarner Losh known driver. Progress set to 88*f439973dSWarner Losh the "G" in "GUID" of the 89*f439973dSWarner Losh routing header that doesn't 90*f439973dSWarner Losh match. Note: There is no 91*f439973dSWarner Losh requirement that all routing 92*f439973dSWarner Losh data be validated before any 93*f439973dSWarner Losh configuration extraction. 94*f439973dSWarner Losh 95*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER Illegal syntax. Progress set 96*f439973dSWarner Losh to the most recent & before the 97*f439973dSWarner Losh error, or the beginning of the 98*f439973dSWarner Losh string. 99*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER The ExtractConfig function of the 100*f439973dSWarner Losh underlying HII Configuration 101*f439973dSWarner Losh Access Protocol returned 102*f439973dSWarner Losh EFI_INVALID_PARAMETER. Progress 103*f439973dSWarner Losh set to most recent & before the 104*f439973dSWarner Losh error or the beginning of the 105*f439973dSWarner Losh string. 106*f439973dSWarner Losh 107*f439973dSWarner Losh **/ 108*f439973dSWarner Losh typedef 109*f439973dSWarner Losh EFI_STATUS 110*f439973dSWarner Losh (EFIAPI *EFI_HII_EXTRACT_CONFIG)( 111*f439973dSWarner Losh IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, 112*f439973dSWarner Losh IN CONST EFI_STRING Request, 113*f439973dSWarner Losh OUT EFI_STRING *Progress, 114*f439973dSWarner Losh OUT EFI_STRING *Results 115*f439973dSWarner Losh ); 116*f439973dSWarner Losh 117*f439973dSWarner Losh /** 118*f439973dSWarner Losh This function allows the caller to request the current configuration 119*f439973dSWarner Losh for the entirety of the current HII database and returns the data in 120*f439973dSWarner Losh a null-terminated string. 121*f439973dSWarner Losh 122*f439973dSWarner Losh This function allows the caller to request the current 123*f439973dSWarner Losh configuration for all of the current HII database. The results 124*f439973dSWarner Losh include both the current and alternate configurations as 125*f439973dSWarner Losh described in ExtractConfig() above. 126*f439973dSWarner Losh 127*f439973dSWarner Losh @param This Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance. 128*f439973dSWarner Losh 129*f439973dSWarner Losh @param Results Null-terminated Unicode string in 130*f439973dSWarner Losh <MultiConfigAltResp> format which has all values 131*f439973dSWarner Losh filled in for the entirety of the current HII 132*f439973dSWarner Losh database. String to be allocated by the called 133*f439973dSWarner Losh function. De-allocation is up to the caller. 134*f439973dSWarner Losh 135*f439973dSWarner Losh @retval EFI_SUCCESS The Results string is filled with the 136*f439973dSWarner Losh values corresponding to all requested 137*f439973dSWarner Losh names. 138*f439973dSWarner Losh 139*f439973dSWarner Losh @retval EFI_OUT_OF_RESOURCES Not enough memory to store the 140*f439973dSWarner Losh parts of the results that must be 141*f439973dSWarner Losh stored awaiting possible future 142*f439973dSWarner Losh protocols. 143*f439973dSWarner Losh 144*f439973dSWarner Losh @retval EFI_INVALID_PARAMETERS For example, passing in a NULL 145*f439973dSWarner Losh for the Results parameter 146*f439973dSWarner Losh would result in this type of 147*f439973dSWarner Losh error. 148*f439973dSWarner Losh 149*f439973dSWarner Losh **/ 150*f439973dSWarner Losh typedef 151*f439973dSWarner Losh EFI_STATUS 152*f439973dSWarner Losh (EFIAPI *EFI_HII_EXPORT_CONFIG)( 153*f439973dSWarner Losh IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, 154*f439973dSWarner Losh OUT EFI_STRING *Results 155*f439973dSWarner Losh ); 156*f439973dSWarner Losh 157*f439973dSWarner Losh /** 158*f439973dSWarner Losh 159*f439973dSWarner Losh This function routes the results of processing forms to the 160*f439973dSWarner Losh appropriate targets. It scans for <ConfigHdr> within the string 161*f439973dSWarner Losh and passes the header and subsequent body to the driver whose 162*f439973dSWarner Losh location is described in the <ConfigHdr>. Many <ConfigHdr>s may 163*f439973dSWarner Losh appear as a single request. The expected implementation is to 164*f439973dSWarner Losh hand off the various <ConfigResp> substrings to the 165*f439973dSWarner Losh Configuration Access Protocol RouteConfig routine corresponding 166*f439973dSWarner Losh to the driver whose routing information is defined by the 167*f439973dSWarner Losh <ConfigHdr> in turn. 168*f439973dSWarner Losh 169*f439973dSWarner Losh @param This Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance. 170*f439973dSWarner Losh 171*f439973dSWarner Losh @param Configuration A null-terminated string in <MulltiConfigResp> format. 172*f439973dSWarner Losh 173*f439973dSWarner Losh @param Progress A pointer to a string filled in with the 174*f439973dSWarner Losh offset of the most recent '&' before the 175*f439973dSWarner Losh first failing name / value pair (or the 176*f439973dSWarner Losh beginning of the string if the failure is in 177*f439973dSWarner Losh the first name / value pair), or the 178*f439973dSWarner Losh terminating NULL if all was successful. 179*f439973dSWarner Losh 180*f439973dSWarner Losh @retval EFI_SUCCESS The results have been distributed or are 181*f439973dSWarner Losh awaiting distribution. 182*f439973dSWarner Losh 183*f439973dSWarner Losh @retval EFI_OUT_OF_RESOURCES Not enough memory to store the 184*f439973dSWarner Losh parts of the results that must be 185*f439973dSWarner Losh stored awaiting possible future 186*f439973dSWarner Losh protocols. 187*f439973dSWarner Losh 188*f439973dSWarner Losh @retval EFI_INVALID_PARAMETERS Passing in a NULL for the 189*f439973dSWarner Losh Results parameter would result 190*f439973dSWarner Losh in this type of error. 191*f439973dSWarner Losh 192*f439973dSWarner Losh @retval EFI_NOT_FOUND The target for the specified routing data 193*f439973dSWarner Losh was not found. 194*f439973dSWarner Losh 195*f439973dSWarner Losh **/ 196*f439973dSWarner Losh typedef 197*f439973dSWarner Losh EFI_STATUS 198*f439973dSWarner Losh (EFIAPI *EFI_HII_ROUTE_CONFIG)( 199*f439973dSWarner Losh IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, 200*f439973dSWarner Losh IN CONST EFI_STRING Configuration, 201*f439973dSWarner Losh OUT EFI_STRING *Progress 202*f439973dSWarner Losh ); 203*f439973dSWarner Losh 204*f439973dSWarner Losh /** 205*f439973dSWarner Losh 206*f439973dSWarner Losh This function extracts the current configuration from a block of 207*f439973dSWarner Losh bytes. To do so, it requires that the ConfigRequest string 208*f439973dSWarner Losh consists of a list of <BlockName> formatted names. It uses the 209*f439973dSWarner Losh offset in the name to determine the index into the Block to 210*f439973dSWarner Losh start the extraction and the width of each name to determine the 211*f439973dSWarner Losh number of bytes to extract. These are mapped to a string 212*f439973dSWarner Losh using the equivalent of the C "%x" format (with optional leading 213*f439973dSWarner Losh spaces). The call fails if, for any (offset, width) pair in 214*f439973dSWarner Losh ConfigRequest, offset+value >= BlockSize. 215*f439973dSWarner Losh 216*f439973dSWarner Losh @param This Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance. 217*f439973dSWarner Losh 218*f439973dSWarner Losh @param ConfigRequest A null-terminated string in <ConfigRequest> format. 219*f439973dSWarner Losh 220*f439973dSWarner Losh @param Block An array of bytes defining the block's 221*f439973dSWarner Losh configuration. 222*f439973dSWarner Losh 223*f439973dSWarner Losh @param BlockSize The length in bytes of Block. 224*f439973dSWarner Losh 225*f439973dSWarner Losh @param Config The filled-in configuration string. String 226*f439973dSWarner Losh allocated by the function. Returned only if 227*f439973dSWarner Losh call is successful. The null-terminated string 228*f439973dSWarner Losh will be <ConfigResp> format. 229*f439973dSWarner Losh 230*f439973dSWarner Losh @param Progress A pointer to a string filled in with the 231*f439973dSWarner Losh offset of the most recent '&' before the 232*f439973dSWarner Losh first failing name / value pair (or the 233*f439973dSWarner Losh beginning of the string if the failure is in 234*f439973dSWarner Losh the first name / value pair), or the 235*f439973dSWarner Losh terminating NULL if all was successful. 236*f439973dSWarner Losh 237*f439973dSWarner Losh @retval EFI_SUCCESS The request succeeded. Progress points 238*f439973dSWarner Losh to the null terminator at the end of the 239*f439973dSWarner Losh ConfigRequest string. 240*f439973dSWarner Losh 241*f439973dSWarner Losh @retval EFI_OUT_OF_RESOURCES Not enough memory to allocate 242*f439973dSWarner Losh Config. Progress points to the 243*f439973dSWarner Losh first character of ConfigRequest. 244*f439973dSWarner Losh 245*f439973dSWarner Losh @retval EFI_INVALID_PARAMETERS Passing in a NULL for the 246*f439973dSWarner Losh ConfigRequest or Block 247*f439973dSWarner Losh parameter would result in this 248*f439973dSWarner Losh type of error. Progress points 249*f439973dSWarner Losh to the first character of 250*f439973dSWarner Losh ConfigRequest. 251*f439973dSWarner Losh 252*f439973dSWarner Losh @retval EFI_NOT_FOUND The target for the specified routing data 253*f439973dSWarner Losh was not found. Progress points to the 254*f439973dSWarner Losh 'G' in "GUID" of the errant routing 255*f439973dSWarner Losh data. 256*f439973dSWarner Losh @retval EFI_DEVICE_ERROR The block is not large enough. Progress undefined. 257*f439973dSWarner Losh 258*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER Encountered non <BlockName> 259*f439973dSWarner Losh formatted string. Block is 260*f439973dSWarner Losh left updated and Progress 261*f439973dSWarner Losh points at the '&' preceding 262*f439973dSWarner Losh the first non-<BlockName>. 263*f439973dSWarner Losh 264*f439973dSWarner Losh **/ 265*f439973dSWarner Losh typedef 266*f439973dSWarner Losh EFI_STATUS 267*f439973dSWarner Losh (EFIAPI *EFI_HII_BLOCK_TO_CONFIG)( 268*f439973dSWarner Losh IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, 269*f439973dSWarner Losh IN CONST EFI_STRING ConfigRequest, 270*f439973dSWarner Losh IN CONST UINT8 *Block, 271*f439973dSWarner Losh IN CONST UINTN BlockSize, 272*f439973dSWarner Losh OUT EFI_STRING *Config, 273*f439973dSWarner Losh OUT EFI_STRING *Progress 274*f439973dSWarner Losh ); 275*f439973dSWarner Losh 276*f439973dSWarner Losh /** 277*f439973dSWarner Losh This function maps a configuration containing a series of 278*f439973dSWarner Losh <BlockConfig> formatted name value pairs in ConfigResp into a 279*f439973dSWarner Losh Block so it may be stored in a linear mapped storage such as a 280*f439973dSWarner Losh UEFI Variable. If present, the function skips GUID, NAME, and 281*f439973dSWarner Losh PATH in <ConfigResp>. It stops when it finds a non-<BlockConfig> 282*f439973dSWarner Losh name / value pair (after skipping the routing header) or when it 283*f439973dSWarner Losh reaches the end of the string. 284*f439973dSWarner Losh Example Assume an existing block containing: 00 01 02 03 04 05 285*f439973dSWarner Losh And the ConfigResp string is: 286*f439973dSWarner Losh OFFSET=4&WIDTH=1&VALUE=7&OFFSET=0&WIDTH=2&VALUE=AA55 287*f439973dSWarner Losh The results are 288*f439973dSWarner Losh 55 AA 02 07 04 05 289*f439973dSWarner Losh 290*f439973dSWarner Losh @param This Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance. 291*f439973dSWarner Losh 292*f439973dSWarner Losh @param ConfigResp A null-terminated string in <ConfigResp> format. 293*f439973dSWarner Losh 294*f439973dSWarner Losh @param Block A possibly null array of bytes 295*f439973dSWarner Losh representing the current block. Only 296*f439973dSWarner Losh bytes referenced in the ConfigResp 297*f439973dSWarner Losh string in the block are modified. If 298*f439973dSWarner Losh this parameter is null or if the 299*f439973dSWarner Losh BlockLength parameter is (on input) 300*f439973dSWarner Losh shorter than required by the 301*f439973dSWarner Losh Configuration string, only the BlockSize 302*f439973dSWarner Losh parameter is updated, and an appropriate 303*f439973dSWarner Losh status (see below) is returned. 304*f439973dSWarner Losh 305*f439973dSWarner Losh @param BlockSize The length of the Block in units of UINT8. 306*f439973dSWarner Losh On input, this is the size of the Block. On 307*f439973dSWarner Losh output, if successful, contains the largest 308*f439973dSWarner Losh index of the modified byte in the Block, or 309*f439973dSWarner Losh the required buffer size if the Block is not 310*f439973dSWarner Losh large enough. 311*f439973dSWarner Losh 312*f439973dSWarner Losh @param Progress On return, points to an element of the 313*f439973dSWarner Losh ConfigResp string filled in with the offset 314*f439973dSWarner Losh of the most recent "&" before the first 315*f439973dSWarner Losh failing name / value pair (or the beginning 316*f439973dSWarner Losh of the string if the failure is in the first 317*f439973dSWarner Losh name / value pair), or the terminating NULL 318*f439973dSWarner Losh if all was successful. 319*f439973dSWarner Losh 320*f439973dSWarner Losh @retval EFI_SUCCESS The request succeeded. Progress points to the null 321*f439973dSWarner Losh terminator at the end of the ConfigResp string. 322*f439973dSWarner Losh @retval EFI_OUT_OF_RESOURCES Not enough memory to allocate Config. Progress 323*f439973dSWarner Losh points to the first character of ConfigResp. 324*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER Passing in a NULL for the ConfigResp or 325*f439973dSWarner Losh Block parameter would result in this type of 326*f439973dSWarner Losh error. Progress points to the first character of 327*f439973dSWarner Losh ConfigResp. 328*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER Encountered non <BlockName> formatted name / 329*f439973dSWarner Losh value pair. Block is left updated and 330*f439973dSWarner Losh Progress points at the '&' preceding the first 331*f439973dSWarner Losh non-<BlockName>. 332*f439973dSWarner Losh @retval EFI_DEVICE_ERROR Block not large enough. Progress undefined. 333*f439973dSWarner Losh @retval EFI_NOT_FOUND Target for the specified routing data was not found. 334*f439973dSWarner Losh Progress points to the "G" in "GUID" of the errant 335*f439973dSWarner Losh routing data. 336*f439973dSWarner Losh @retval EFI_BUFFER_TOO_SMALL Block not large enough. Progress undefined. 337*f439973dSWarner Losh BlockSize is updated with the required buffer size. 338*f439973dSWarner Losh 339*f439973dSWarner Losh **/ 340*f439973dSWarner Losh typedef 341*f439973dSWarner Losh EFI_STATUS 342*f439973dSWarner Losh (EFIAPI *EFI_HII_CONFIG_TO_BLOCK)( 343*f439973dSWarner Losh IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, 344*f439973dSWarner Losh IN CONST EFI_STRING ConfigResp, 345*f439973dSWarner Losh IN OUT UINT8 *Block, 346*f439973dSWarner Losh IN OUT UINTN *BlockSize, 347*f439973dSWarner Losh OUT EFI_STRING *Progress 348*f439973dSWarner Losh ); 349*f439973dSWarner Losh 350*f439973dSWarner Losh /** 351*f439973dSWarner Losh This helper function is to be called by drivers to extract portions of 352*f439973dSWarner Losh a larger configuration string. 353*f439973dSWarner Losh 354*f439973dSWarner Losh @param This A pointer to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance. 355*f439973dSWarner Losh @param ConfigResp A null-terminated string in <ConfigAltResp> format. 356*f439973dSWarner Losh @param Guid A pointer to the GUID value to search for in the 357*f439973dSWarner Losh routing portion of the ConfigResp string when retrieving 358*f439973dSWarner Losh the requested data. If Guid is NULL, then all GUID 359*f439973dSWarner Losh values will be searched for. 360*f439973dSWarner Losh @param Name A pointer to the NAME value to search for in the 361*f439973dSWarner Losh routing portion of the ConfigResp string when retrieving 362*f439973dSWarner Losh the requested data. If Name is NULL, then all Name 363*f439973dSWarner Losh values will be searched for. 364*f439973dSWarner Losh @param DevicePath A pointer to the PATH value to search for in the 365*f439973dSWarner Losh routing portion of the ConfigResp string when retrieving 366*f439973dSWarner Losh the requested data. If DevicePath is NULL, then all 367*f439973dSWarner Losh DevicePath values will be searched for. 368*f439973dSWarner Losh @param AltCfgId A pointer to the ALTCFG value to search for in the 369*f439973dSWarner Losh routing portion of the ConfigResp string when retrieving 370*f439973dSWarner Losh the requested data. If this parameter is NULL, 371*f439973dSWarner Losh then the current setting will be retrieved. 372*f439973dSWarner Losh @param AltCfgResp A pointer to a buffer which will be allocated by the 373*f439973dSWarner Losh function which contains the retrieved string as requested. 374*f439973dSWarner Losh This buffer is only allocated if the call was successful. 375*f439973dSWarner Losh The null-terminated string will be <ConfigResp> format. 376*f439973dSWarner Losh 377*f439973dSWarner Losh @retval EFI_SUCCESS The request succeeded. The requested data was extracted 378*f439973dSWarner Losh and placed in the newly allocated AltCfgResp buffer. 379*f439973dSWarner Losh @retval EFI_OUT_OF_RESOURCES Not enough memory to allocate AltCfgResp. 380*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER Any parameter is invalid. 381*f439973dSWarner Losh @retval EFI_NOT_FOUND The target for the specified routing data was not found. 382*f439973dSWarner Losh **/ 383*f439973dSWarner Losh typedef 384*f439973dSWarner Losh EFI_STATUS 385*f439973dSWarner Losh (EFIAPI *EFI_HII_GET_ALT_CFG)( 386*f439973dSWarner Losh IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, 387*f439973dSWarner Losh IN CONST EFI_STRING ConfigResp, 388*f439973dSWarner Losh IN CONST EFI_GUID *Guid, 389*f439973dSWarner Losh IN CONST EFI_STRING Name, 390*f439973dSWarner Losh IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, 391*f439973dSWarner Losh IN CONST UINT16 *AltCfgId, 392*f439973dSWarner Losh OUT EFI_STRING *AltCfgResp 393*f439973dSWarner Losh ); 394*f439973dSWarner Losh 395*f439973dSWarner Losh /// 396*f439973dSWarner Losh /// This protocol defines the configuration routing interfaces 397*f439973dSWarner Losh /// between external applications and the HII. There may only be one 398*f439973dSWarner Losh /// instance of this protocol in the system. 399*f439973dSWarner Losh /// 400*f439973dSWarner Losh struct _EFI_HII_CONFIG_ROUTING_PROTOCOL { 401*f439973dSWarner Losh EFI_HII_EXTRACT_CONFIG ExtractConfig; 402*f439973dSWarner Losh EFI_HII_EXPORT_CONFIG ExportConfig; 403*f439973dSWarner Losh EFI_HII_ROUTE_CONFIG RouteConfig; 404*f439973dSWarner Losh EFI_HII_BLOCK_TO_CONFIG BlockToConfig; 405*f439973dSWarner Losh EFI_HII_CONFIG_TO_BLOCK ConfigToBlock; 406*f439973dSWarner Losh EFI_HII_GET_ALT_CFG GetAltConfig; 407*f439973dSWarner Losh }; 408*f439973dSWarner Losh 409*f439973dSWarner Losh extern EFI_GUID gEfiHiiConfigRoutingProtocolGuid; 410*f439973dSWarner Losh 411*f439973dSWarner Losh #endif 412