Jacek Caban : kernel32: Reimplement OpenConsoleW on top of CreateFileW.
Module: wine Branch: master Commit: be2443e0c5f021bb98f92d72191c6c55a031873f URL: https://source.winehq.org/git/wine.git/?a=commit;h=be2443e0c5f021bb98f92d721... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Jun 25 22:27:51 2020 +0200 kernel32: Reimplement OpenConsoleW on top of CreateFileW. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- 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 02aa0d6f6f..04b89f8f55 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 (strcmpiW(coninW, name) == 0) - output = (HANDLE) FALSE; - else if (strcmpiW(conoutW, name) == 0) - output = (HANDLE) TRUE; - } - - if (output == INVALID_HANDLE_VALUE || creation != OPEN_EXISTING) + if (!name || (strcmpiW( coninW, name ) && strcmpiW( conoutW, name )) || 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 ); } /******************************************************************
participants (1)
-
Alexandre Julliard