很多年前,我去AMI学习,偶然间看到他们在代码中加入通过 60/61 Port来读取键盘按键信息实现一个按需Delay ,深以为意。今天偶然间想起来,在调试Application 的时候,配合屏幕输出也可以用这样的方式来进行Debug。
下面是一个例子:
#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/ShellCEntryLib.h>
extern EFI_BOOT_SERVICES *gBS;
extern EFI_SYSTEM_TABLE *gST;
extern EFI_RUNTIME_SERVICES *gRT;
#define SCAN_NULL 0x0000
#define SCAN_UP 0x0001
#define SCAN_DOWN 0x0002
#define SCAN_ESC 0x0017
int
EFIAPI
main (
IN int Argc,
IN CHAR16 **Argv
)
{
EFI_INPUT_KEY Key;
EFI_STATUS Status;
gST->ConOut->OutputString(gST->ConOut,L"Test Starting.....\n\r");
gST->ConOut->OutputString(gST->ConOut,L"Waiting for UP_KEY\n\r");
Key.ScanCode=SCAN_NULL;
while (SCAN_UP!=Key.ScanCode)
{
Status= gST -> ConIn -> ReadKeyStroke(gST->ConIn,&Key);
}
gST->ConOut->OutputString(gST->ConOut,L"Waiting for DOWN_KEY\n\r");
Key.ScanCode=SCAN_NULL;
while (SCAN_DOWN!=Key.ScanCode)
{
Status= gST -> ConIn -> ReadKeyStroke(gST->ConIn,&Key);
}
return EFI_SUCCESS;
}
通过按光标向上和向下继续运行,运行结果:
完整文件下载
