mirror of https://github.com/acidanthera/audk.git
ShellPkg: Fix setting hot key for boot option fail.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Qiu Shumin <shumin.qiu@intel.com> Reviewed-by: Jaben Carsey <Jaben.carsey@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16159 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
387536e472
commit
77eef0d5a8
|
@ -768,8 +768,9 @@ BcfgAddOpt(
|
|||
CHAR16 *FileName;
|
||||
CHAR16 *Temp2;
|
||||
CHAR16 *Data;
|
||||
UINT16 KeyIndex;
|
||||
UINT32 KeyIndex;
|
||||
CHAR16 VariableName[12];
|
||||
UINT8 *VariableData;
|
||||
|
||||
SHELL_FILE_HANDLE FileHandle;
|
||||
|
||||
|
@ -779,8 +780,10 @@ BcfgAddOpt(
|
|||
FileName = NULL;
|
||||
Data = NULL;
|
||||
KeyOptionBuffer = NULL;
|
||||
VariableData = NULL;
|
||||
|
||||
ZeroMem(&NewKeyOption, sizeof(EFI_KEY_OPTION));
|
||||
ZeroMem(VariableName, sizeof(VariableName));
|
||||
|
||||
while(Walker[0] == L' ') {
|
||||
Walker++;
|
||||
|
@ -941,28 +944,31 @@ BcfgAddOpt(
|
|||
}
|
||||
|
||||
if (ShellStatus == SHELL_SUCCESS) {
|
||||
for (Temp2 = NULL, KeyIndex = 0 ; KeyIndex < 0xFFFF ; KeyIndex++) {
|
||||
for (Temp2 = NULL, KeyIndex = 0 ; KeyIndex <= 0xFFFF ; KeyIndex++) {
|
||||
UnicodeSPrint(VariableName, sizeof(VariableName), L"Key%04x", KeyIndex);
|
||||
Status = gRT->GetVariable(
|
||||
VariableName,
|
||||
(EFI_GUID*)&gEfiGlobalVariableGuid,
|
||||
NULL,
|
||||
(UINTN*)&Intermediate,
|
||||
NULL);
|
||||
Status = GetEfiGlobalVariable2 (VariableName, &VariableData, NULL);
|
||||
if (Status == EFI_NOT_FOUND) {
|
||||
break;
|
||||
}
|
||||
if (!EFI_ERROR(Status)) {
|
||||
SHELL_FREE_NON_NULL(VariableData);
|
||||
}
|
||||
}
|
||||
Status = gRT->SetVariable(
|
||||
VariableName,
|
||||
(EFI_GUID*)&gEfiGlobalVariableGuid,
|
||||
EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS,
|
||||
sizeof(EFI_KEY_OPTION) + (sizeof(EFI_INPUT_KEY) * NewKeyOption.KeyData.Options.InputKeyCount),
|
||||
KeyOptionBuffer);
|
||||
if (EFI_ERROR(Status)) {
|
||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, VariableName, Status);
|
||||
if (KeyIndex <= 0xFFFF) {
|
||||
Status = gRT->SetVariable(
|
||||
VariableName,
|
||||
(EFI_GUID*)&gEfiGlobalVariableGuid,
|
||||
EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS,
|
||||
sizeof(EFI_KEY_OPTION) + (sizeof(EFI_INPUT_KEY) * NewKeyOption.KeyData.Options.InputKeyCount),
|
||||
KeyOptionBuffer);
|
||||
if (EFI_ERROR(Status)) {
|
||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, VariableName, Status);
|
||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||
}
|
||||
} else {
|
||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_VAR_NO_NUM), gShellBcfgHiiHandle);
|
||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
ASSERT(FileName == NULL && Data == NULL);
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue