From be2443e0c5f021bb98f92d72191c6c55a031873f Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 25 Jun 2020 22:27:51 +0200 Subject: [PATCH] kernel32: Reimplement OpenConsoleW on top of CreateFileW. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/kernel32/console.c | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c index 02aa0d6f6f9..04b89f8f55f 100644 --- a/dlls/kernel32/console.c +++ b/dlls/kernel32/console.c @@ -227,39 +227,21 @@ BOOL WINAPI Beep( DWORD dwFreq, DWORD dwDur ) */ HANDLE WINAPI OpenConsoleW(LPCWSTR name, DWORD access, BOOL inherit, DWORD creation) { - HANDLE output = INVALID_HANDLE_VALUE; - HANDLE ret; + SECURITY_ATTRIBUTES sa; TRACE("(%s, 0x%08x, %d, %u)\n", debugstr_w(name), access, inherit, creation); - if (name) + if (!name || (strcmpiW( coninW, name ) && strcmpiW( conoutW, name )) || creation != OPEN_EXISTING) { - if (strcmpiW(coninW, name) == 0) - output = (HANDLE) FALSE; - else if (strcmpiW(conoutW, name) == 0) - output = (HANDLE) TRUE; - } - - if (output == INVALID_HANDLE_VALUE || creation != OPEN_EXISTING) - { - SetLastError(ERROR_INVALID_PARAMETER); + SetLastError( ERROR_INVALID_PARAMETER ); return INVALID_HANDLE_VALUE; } - SERVER_START_REQ( open_console ) - { - req->from = wine_server_obj_handle( output ); - req->access = access; - req->attributes = inherit ? OBJ_INHERIT : 0; - req->share = FILE_SHARE_READ | FILE_SHARE_WRITE; - wine_server_call_err( req ); - ret = wine_server_ptr_handle( reply->handle ); - } - SERVER_END_REQ; - if (ret) - ret = console_handle_map(ret); + sa.nLength = sizeof(sa); + sa.lpSecurityDescriptor = NULL; + sa.bInheritHandle = inherit; - return ret; + return CreateFileW( name, access, FILE_SHARE_READ | FILE_SHARE_WRITE, &sa, creation, 0, NULL ); } /******************************************************************