Jacek Caban : server: Introduce IOCTL_CONDRV_CTRL_EVENT ioctl.
Alexandre Julliard
julliard at winehq.org
Tue Sep 1 15:43:31 CDT 2020
Module: wine
Branch: master
Commit: f9c89932595c874cf9eb6fc8d3244d89ff55bbf8
URL: https://source.winehq.org/git/wine.git/?a=commit;h=f9c89932595c874cf9eb6fc8d3244d89ff55bbf8
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Sep 1 15:35:51 2020 +0200
server: Introduce IOCTL_CONDRV_CTRL_EVENT ioctl.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
include/wine/condrv.h | 8 ++++++++
server/console.c | 19 +++++++++++++++++++
server/trace.c | 1 +
3 files changed, 28 insertions(+)
diff --git a/include/wine/condrv.h b/include/wine/condrv.h
index 14177a5e19..2e6c5c689f 100644
--- a/include/wine/condrv.h
+++ b/include/wine/condrv.h
@@ -36,6 +36,7 @@
#define IOCTL_CONDRV_SET_INPUT_INFO CTL_CODE(FILE_DEVICE_CONSOLE, 14, METHOD_BUFFERED, FILE_WRITE_PROPERTIES)
#define IOCTL_CONDRV_GET_TITLE CTL_CODE(FILE_DEVICE_CONSOLE, 15, METHOD_BUFFERED, FILE_READ_PROPERTIES)
#define IOCTL_CONDRV_SET_TITLE CTL_CODE(FILE_DEVICE_CONSOLE, 16, METHOD_BUFFERED, FILE_WRITE_PROPERTIES)
+#define IOCTL_CONDRV_CTRL_EVENT CTL_CODE(FILE_DEVICE_CONSOLE, 17, METHOD_BUFFERED, FILE_WRITE_PROPERTIES)
/* console output ioctls */
#define IOCTL_CONDRV_READ_OUTPUT CTL_CODE(FILE_DEVICE_CONSOLE, 30, METHOD_BUFFERED, FILE_READ_DATA)
@@ -226,6 +227,13 @@ enum condrv_renderer_event_type
CONSOLE_RENDERER_EXIT_EVENT,
};
+/* IOCTL_CONDRV_CTRL_EVENT params */
+struct condrv_ctrl_event
+{
+ int event; /* the event to send */
+ unsigned int group_id; /* the group to send the event to */
+};
+
/* Wine specific values for console inheritance (params->ConsoleHandle) */
#define CONSOLE_HANDLE_ALLOC ((HANDLE)1)
diff --git a/server/console.c b/server/console.c
index 93ea509ae4..8339819458 100644
--- a/server/console.c
+++ b/server/console.c
@@ -1844,6 +1844,25 @@ static int console_input_ioctl( struct fd *fd, ioctl_code_t code, struct async *
return 1;
}
+ case IOCTL_CONDRV_CTRL_EVENT:
+ {
+ const struct condrv_ctrl_event *event = get_req_data();
+ process_id_t group;
+ if (get_req_data_size() != sizeof(*event))
+ {
+ set_error( STATUS_INVALID_PARAMETER );
+ return 0;
+ }
+ group = event->group_id ? event->group_id : current->process->group_id;
+ if (!group)
+ {
+ set_error( STATUS_INVALID_PARAMETER );
+ return 0;
+ }
+ propagate_console_signal( console, event->event, group );
+ return !get_error();
+ }
+
default:
set_error( STATUS_INVALID_HANDLE );
return 0;
diff --git a/server/trace.c b/server/trace.c
index 93e53d2f42..ffb3d37db9 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -116,6 +116,7 @@ static void dump_ioctl_code( const char *prefix, const ioctl_code_t *code )
#define CASE(c) case c: fprintf( stderr, "%s%s", prefix, #c ); break
CASE(IOCTL_CONDRV_ACTIVATE);
CASE(IOCTL_CONDRV_ATTACH_RENDERER);
+ CASE(IOCTL_CONDRV_CTRL_EVENT);
CASE(IOCTL_CONDRV_FILL_OUTPUT);
CASE(IOCTL_CONDRV_GET_INPUT_INFO);
CASE(IOCTL_CONDRV_GET_MODE);
More information about the wine-cvs
mailing list