Module: wine Branch: master Commit: 300a01f467e84bb69bf6387e52545ddbc9c456dc URL: https://source.winehq.org/git/wine.git/?a=commit;h=300a01f467e84bb69bf6387e5...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Jul 28 17:10:32 2020 +0200
kernelbase: Use IOCTL_CONDRV_READ_OUTPUT in ReadConsoleOutputCharacterW.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernelbase/console.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c index 23f0696124..63e9b20292 100644 --- a/dlls/kernelbase/console.c +++ b/dlls/kernelbase/console.c @@ -99,6 +99,7 @@ static BOOL console_ioctl( HANDLE handle, DWORD code, void *in_buff, DWORD in_co status = STATUS_INVALID_HANDLE; break; } + if (read) *read = 0; return set_ntstatus( status ); }
@@ -849,6 +850,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputCharacterA( HANDLE handle, LPSTR BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputCharacterW( HANDLE handle, LPWSTR buffer, DWORD length, COORD coord, DWORD *count ) { + struct condrv_output_params params; BOOL ret;
TRACE( "(%p,%p,%d,%dx%d,%p)\n", handle, buffer, length, coord.X, coord.Y, count ); @@ -859,18 +861,13 @@ BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputCharacterW( HANDLE handle, LPWSTR return FALSE; }
- *count = 0; - SERVER_START_REQ( read_console_output ) - { - req->handle = console_handle_unmap( handle ); - req->x = coord.X; - req->y = coord.Y; - req->mode = CHAR_INFO_MODE_TEXT; - req->wrap = TRUE; - wine_server_set_reply( req, buffer, length * sizeof(WCHAR) ); - if ((ret = !wine_server_call_err( req ))) *count = wine_server_reply_size(reply) / sizeof(WCHAR); - } - SERVER_END_REQ; + params.mode = CHAR_INFO_MODE_TEXT; + params.x = coord.X; + params.y = coord.Y; + params.width = 0; + ret = console_ioctl( handle, IOCTL_CONDRV_READ_OUTPUT, ¶ms, sizeof(params), buffer, + length * sizeof(*buffer), count ); + *count /= sizeof(*buffer); return ret; }