When build with WinSDK <= Win10 TH2, the terminal over CMD.exe doesn't work. Because Win10 later than TH2 starts to support VT terminal.
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ruiyu Ni <[email protected]> Cc: Michael D Kinney <[email protected]> Cc: Hao A Wu <[email protected]> --- EmulatorPkg/Win/Host/WinHost.c | 2 +- EmulatorPkg/Win/Host/WinThunk.c | 23 ++++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/EmulatorPkg/Win/Host/WinHost.c b/EmulatorPkg/Win/Host/WinHost.c index 9b98d5330f..65e8960eff 100644 --- a/EmulatorPkg/Win/Host/WinHost.c +++ b/EmulatorPkg/Win/Host/WinHost.c @@ -673,7 +673,7 @@ Returns: // Transfer control to the SEC Core // SwitchStack ( - (SWITCH_STACK_ENTRY_POINT)SecCoreEntryPoint, + (SWITCH_STACK_ENTRY_POINT)(UINTN)SecCoreEntryPoint, SecCoreData, GetThunkPpiList (), TopOfStack diff --git a/EmulatorPkg/Win/Host/WinThunk.c b/EmulatorPkg/Win/Host/WinThunk.c index 306fe75ecd..6007db73b5 100644 --- a/EmulatorPkg/Win/Host/WinThunk.c +++ b/EmulatorPkg/Win/Host/WinThunk.c @@ -71,15 +71,23 @@ SecConfigStdIn ( // // Disable buffer (line input), echo, mouse, window // - Success = SetConsoleMode ( - GetStdHandle (STD_INPUT_HANDLE), - Mode | ENABLE_VIRTUAL_TERMINAL_INPUT & ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT) - ); - } - if (Success) { + Mode &= ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT); + +#if defined(NTDDI_VERSION) && defined (NTDDI_WIN10_TH2) && (NTDDI_VERSION > NTDDI_WIN10_TH2) // - // Enable terminal mode + // Enable virtual terminal input for Win10 above TH2 // + Mode |= ENABLE_VIRTUAL_TERMINAL_INPUT; +#endif + + Success = SetConsoleMode (GetStdHandle (STD_INPUT_HANDLE), Mode); + } + +#if defined(NTDDI_VERSION) && defined (NTDDI_WIN10_TH2) && (NTDDI_VERSION > NTDDI_WIN10_TH2) + // + // Enable terminal mode for Win10 above TH2 + // + if (Success) { Success = GetConsoleMode (GetStdHandle (STD_OUTPUT_HANDLE), &Mode); if (Success) { Success = SetConsoleMode ( @@ -88,6 +96,7 @@ SecConfigStdIn ( ); } } +#endif return Success ? EFI_SUCCESS : EFI_DEVICE_ERROR; } -- 2.16.1.windows.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

