if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
-\r
- //\r
- // No default value for string.\r
- //\r
- BlockData = NULL;\r
break;\r
\r
case EFI_IFR_PASSWORD_OP:\r
/**\r
Generate ConfigAltResp string base on the varstore info.\r
\r
+ @param HiiHandle Hii Handle for this hii package.\r
@param ConfigHdr The config header for this varstore.\r
@param VarStorageData The varstore info.\r
@param DefaultIdArray The Default id array.\r
**/\r
EFI_STATUS\r
GenerateAltConfigResp (\r
+ IN EFI_HII_HANDLE HiiHandle,\r
IN CHAR16 *ConfigHdr,\r
IN IFR_VARSTORAGE_DATA *VarStorageData,\r
IN IFR_DEFAULT_DATA *DefaultIdArray,\r
IFR_DEFAULT_DATA *DefaultValueData;\r
UINTN Width;\r
UINT8 *TmpBuffer;\r
+ CHAR16 *DefaultString;\r
\r
BlockData = NULL;\r
DataExist = FALSE;\r
-\r
+ DefaultString = NULL;\r
//\r
// Add length for <ConfigHdr> + '\0'\r
//\r
// Convert Value to a hex string in "%x" format\r
// NOTE: This is in the opposite byte that GUID and PATH use\r
//\r
- TmpBuffer = (UINT8 *) &(DefaultValueData->Value);\r
- for (; Width > 0; Width--) {\r
+ if (BlockData->OpCode == EFI_IFR_STRING_OP){\r
+ DefaultString = InternalGetString(HiiHandle, DefaultValueData->Value.string);\r
+ TmpBuffer = (UINT8 *) DefaultString;\r
+ } else {\r
+ TmpBuffer = (UINT8 *) &(DefaultValueData->Value);\r
+ }\r
+ for (; Width > 0 && (TmpBuffer != NULL); Width--) {\r
StringPtr += UnicodeValueToString (StringPtr, PREFIX_ZERO | RADIX_HEX, TmpBuffer[Width - 1], 2);\r
}\r
+ if (DefaultString != NULL){\r
+ FreePool(DefaultString);\r
+ DefaultString = NULL;\r
+ }\r
}\r
}\r
}\r
// Go through all VarStorageData Entry and get the DefaultId array for each one\r
// Then construct them all to : ConfigHdr AltConfigHdr ConfigBody AltConfigHdr ConfigBody\r
//\r
- Status = GenerateAltConfigResp (ConfigHdr, VarStorageData, DefaultIdArray, &DefaultAltCfgResp);\r
+ Status = GenerateAltConfigResp (DataBaseRecord->Handle,ConfigHdr, VarStorageData, DefaultIdArray, &DefaultAltCfgResp);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r