Jacek Caban : kernelbase: Use console connection object in AttachConsole.
Alexandre Julliard
julliard at winehq.org
Wed Sep 16 15:37:34 CDT 2020
Module: wine
Branch: master
Commit: ca95afd37f6416b1972ef33a811939b37b405320
URL: https://source.winehq.org/git/wine.git/?a=commit;h=ca95afd37f6416b1972ef33a811939b37b405320
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Sep 16 20:39:45 2020 +0200
kernelbase: Use console connection object in AttachConsole.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
}
More information about the wine-cvs
mailing list