您的位置:首页 > 产品设计 > UI/UE

UEFI应用与编程--BootOrder

2018-03-15 10:42 639 查看
BootOrder.c/*
* BootOrder.c
*
* Created on: 2018年3月14日
* Author:
*/

#include <Uefi.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/UefiLib.h>
#include "UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.h"

INTN
EFIAPI
ShellAppMain (
IN UINTN Argc,
IN CHAR16 **Argv
)
{
EFI_STATUS Status;
IN OUT UINTN DataSize;
OUT VOID *pData;
UINT32 Attributes;
CHAR16 *InputStr;
UINT64 Data;

DataSize = 0;
pData = NULL;
InputStr = NULL;
Data = 0;

Status = gRT->GetVariable(L"BootOrder", &gEfiGlobalVariableGuid, &Attributes, &DataSize,pData);
if (Status == EFI_BUFFER_TOO_SMALL) {
Status = gBS->AllocatePool(EfiBootServicesData, DataSize, &pData);
Status = gRT->GetVariable(L"BootOrder", &gEfiGlobalVariableGuid, &Attributes, &DataSize,pData);
}
DumpHex(0, 2, DataSize, pData);
ShellPromptForResponse (ShellPromptResponseTypeFreeform, NULL, (VOID**) &InputStr);
if (EFI_ERROR (ShellConvertStringToUint64 (InputStr, &Data, TRUE, TRUE))) {
Print(L"input data error.\r\n");
return EFI_SUCCESS;
}
((UINT64*)pData)[0] = Data;

Status = gRT->SetVariable(L"BootOrder", &gEfiGlobalVariableGuid, Attributes, DataSize, pData);
DumpHex(0, 2, DataSize, pData);
return EFI_SUCCESS;

}

BootOrder.inf[Defines]
INF_VERSION = 0x00010005
BASE_NAME = BootOrder
FILE_GUID = dc72d2c7-a48a-42fd-80b6-9d229d9943c8
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 1.0
ENTRY_POINT = ShellCEntryLib

[Sources]
BootOrder.c

[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
ShellPkg/ShellPkg.dec

[LibraryClasses]
UefiLib
ShellCEntryLib
UefiShellDebug1CommandsLib
[Protocols]

[Ppis]

[Guids]

[BuildOptions]

[Pcd]

[PcdEx]

[FixedPcd]

[FeaturePcd]

[PatchPcd]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uefi edk2 udk bios tiano