Jacek Caban : kernelbase: Use IOCTL_CONDRV_SET_INPUT_INFO in SetConsoleOutputCP.

Alexandre Julliard julliard at winehq.org
Tue Aug 18 16:34:23 CDT 2020


Module: wine
Branch: master
Commit: 32eb41de8caaa9462406c859c8242df5a6ebf343
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=32eb41de8caaa9462406c859c8242df5a6ebf343

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Aug 17 15:07:30 2020 +0200

kernelbase: Use IOCTL_CONDRV_SET_INPUT_INFO in SetConsoleOutputCP.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/tests/console.c |  4 ++++
 dlls/kernelbase/console.c     | 15 +++++----------
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c
index 38ec621da6..1adf4af064 100644
--- a/dlls/kernel32/tests/console.c
+++ b/dlls/kernel32/tests/console.c
@@ -3644,6 +3644,10 @@ static void test_FreeConsole(void)
     ret = SetConsoleCP(GetOEMCP());
     ok(!ret && GetLastError() == ERROR_INVALID_HANDLE, "SetConsoleCP returned %x(%u)\n", ret, GetLastError());
 
+    SetLastError(0xdeadbeef);
+    ret = SetConsoleOutputCP(GetOEMCP());
+    ok(!ret && GetLastError() == ERROR_INVALID_HANDLE, "SetConsoleCP returned %x(%u)\n", ret, GetLastError());
+
     SetLastError(0xdeadbeef);
     memset( title, 0xc0, sizeof(title) );
     size = GetConsoleTitleW( title, ARRAY_SIZE(title) );
diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c
index 536f1912e9..2611fd5864 100644
--- a/dlls/kernelbase/console.c
+++ b/dlls/kernelbase/console.c
@@ -1222,22 +1222,17 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleMode( HANDLE handle, DWORD mode )
  */
 BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleOutputCP( UINT cp )
 {
-    BOOL ret;
+    struct condrv_input_info_params params = { SET_CONSOLE_INPUT_INFO_OUTPUT_CODEPAGE };
 
     if (!IsValidCodePage( cp ))
     {
         SetLastError( ERROR_INVALID_PARAMETER );
         return FALSE;
     }
-    SERVER_START_REQ( set_console_input_info )
-    {
-        req->handle    = 0;
-        req->mask      = SET_CONSOLE_INPUT_INFO_OUTPUT_CODEPAGE;
-        req->output_cp = cp;
-        ret = !wine_server_call_err( req );
-    }
-    SERVER_END_REQ;
-    return ret;
+
+    params.info.output_cp = cp;
+    return console_ioctl( RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle,
+                          IOCTL_CONDRV_SET_INPUT_INFO, &params, sizeof(params), NULL, 0, NULL );
 }
 
 




More information about the wine-cvs mailing list