kernelbase: Use IOCTL_CONDRV_READ_OUTPUT in ReadConsoleOutputAttribute.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2020-07-28 17:10:40 +02:00 committed by Alexandre Julliard
parent 300a01f467
commit 5f6bb63800
1 changed files with 8 additions and 12 deletions

View File

@ -786,6 +786,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH PeekConsoleInputW( HANDLE handle, INPUT_RECORD *bu
BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputAttribute( HANDLE handle, WORD *attr, DWORD length,
COORD coord, DWORD *count )
{
struct condrv_output_params params;
BOOL ret;
TRACE( "(%p,%p,%d,%dx%d,%p)\n", handle, attr, length, coord.X, coord.Y, count );
@ -796,18 +797,13 @@ BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputAttribute( HANDLE handle, WORD *a
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_ATTR;
req->wrap = TRUE;
wine_server_set_reply( req, attr, length * sizeof(WORD) );
if ((ret = !wine_server_call_err( req ))) *count = wine_server_reply_size(reply) / sizeof(WORD);
}
SERVER_END_REQ;
params.mode = CHAR_INFO_MODE_ATTR;
params.x = coord.X;
params.y = coord.Y;
params.width = 0;
ret = console_ioctl( handle, IOCTL_CONDRV_READ_OUTPUT, &params, sizeof(params),
attr, length * sizeof(*attr), count );
*count /= sizeof(*attr);
return ret;
}