From f4eaaf1a6d50c761e2af9a6dd0976fb8a3bd3c08 Mon Sep 17 00:00:00 2001 From: Ruiyu Ni Date: Fri, 31 Aug 2018 16:55:36 +0800 Subject: Emulator/Win: Fix build failure using VS2015x86 or old WinSDK 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 Cc: Michael D Kinney Reviewed-by: Hao A Wu --- EmulatorPkg/Win/Host/WinHost.c | 2 +- EmulatorPkg/Win/Host/WinThunk.c | 23 ++++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) (limited to 'EmulatorPkg') 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; } -- cgit v1.2.3