很多年前,我去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; }
通过按光标向上和向下继续运行,运行结果:
完整文件下载