server: Introduce IOCTL_CONDRV_ATTACH_RENDERER ioctl.

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-16 17:50:09 +02:00 committed by Alexandre Julliard
parent 5a174dd604
commit c4789b08f3
3 changed files with 28 additions and 0 deletions

View file

@ -41,6 +41,10 @@
/* console renderer ioctls */
#define IOCTL_CONDRV_GET_RENDERER_EVENTS CTL_CODE(FILE_DEVICE_CONSOLE, 70, METHOD_BUFFERED, FILE_READ_PROPERTIES)
#define IOCTL_CONDRV_ATTACH_RENDERER CTL_CODE(FILE_DEVICE_CONSOLE, 71, METHOD_BUFFERED, FILE_READ_PROPERTIES)
/* console handle type */
typedef unsigned int condrv_handle_t;
/* structure for console char/attribute info */
typedef struct

View file

@ -1732,6 +1732,29 @@ static int console_input_events_ioctl( struct fd *fd, ioctl_code_t code, struct
queue_async( &evts->read_q, async );
return 1;
case IOCTL_CONDRV_ATTACH_RENDERER:
{
struct console_input *console_input;
if (get_req_data_size() != sizeof(condrv_handle_t))
{
set_error( STATUS_INVALID_PARAMETER );
return 0;
}
console_input = (struct console_input *)get_handle_obj( current->process, *(condrv_handle_t *)get_req_data(),
0, &console_input_ops );
if (!console_input) return 0;
if (!console_input->evt)
{
console_input->evt = (struct console_input_events *)grab_object( evts );
console_input->renderer = current;
}
else set_error( STATUS_INVALID_HANDLE );
release_object( console_input );
return !get_error();
}
default:
set_error( STATUS_INVALID_HANDLE );
return 0;

View file

@ -114,6 +114,7 @@ static void dump_ioctl_code( const char *prefix, const ioctl_code_t *code )
switch(*code)
{
#define CASE(c) case c: fprintf( stderr, "%s%s", prefix, #c ); break
CASE(IOCTL_CONDRV_ATTACH_RENDERER);
CASE(IOCTL_CONDRV_FILL_OUTPUT);
CASE(IOCTL_CONDRV_GET_INPUT_INFO);
CASE(IOCTL_CONDRV_GET_MODE);