Module: wine Branch: master Commit: ca95afd37f6416b1972ef33a811939b37b405320 URL: https://source.winehq.org/git/wine.git/?a=commit;h=ca95afd37f6416b1972ef33a8...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Sep 16 20:39:45 2020 +0200
kernelbase: Use console connection object in AttachConsole.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernelbase/console.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c index eff63a29a1..8c39cde30a 100644 --- a/dlls/kernelbase/console.c +++ b/dlls/kernelbase/console.c @@ -293,24 +293,23 @@ BOOL WINAPI DECLSPEC_HOTPATCH AttachConsole( DWORD pid )
RtlEnterCriticalSection( &console_section );
- SERVER_START_REQ( attach_console ) + if (RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle) { - req->pid = pid; - ret = !wine_server_call_err( req ); + RtlLeaveCriticalSection( &console_section ); + WARN( "console already attached\n" ); + SetLastError( ERROR_ACCESS_DENIED ); + return FALSE; } - SERVER_END_REQ;
+ ret = create_console_connection( NULL ) && + console_ioctl( console_connection, IOCTL_CONDRV_BIND_PID, &pid, sizeof(pid), NULL, 0, NULL ); if (ret) { - if ((ret = init_console_std_handles())) - { - HANDLE console = CreateFileW( L"CONIN$", GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE, 0, NULL, OPEN_EXISTING, 0, 0 ); - if (console != INVALID_HANDLE_VALUE) RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle = console; - else ret = FALSE; - } - if (!ret) FreeConsole(); + RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle = create_console_reference( console_connection ); + ret = RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle && init_console_std_handles(); }
+ if (!ret) FreeConsole(); RtlLeaveCriticalSection( &console_section ); return ret; }