Implemented NtQueueApcThread, and changed the server APC interface to
[wine] / include / wine / server_protocol.h
1 /*
2  * Wine server protocol definitions
3  *
4  * This file is automatically generated; DO NO EDIT!
5  * Edit server/protocol.def instead and re-run tools/make_requests
6  */
7
8 #ifndef __WINE_WINE_SERVER_PROTOCOL_H
9 #define __WINE_WINE_SERVER_PROTOCOL_H
10
11 #include <stdlib.h>
12 #include <time.h>
13 #include "winbase.h"
14
15 struct request_header
16 {
17     int          req;
18     size_t       request_size;
19     size_t       reply_size;
20 };
21
22 struct reply_header
23 {
24     unsigned int error;
25     size_t       reply_size;
26 };
27
28
29
30 struct request_max_size
31 {
32     int pad[16];
33 };
34
35 typedef void *obj_handle_t;
36 typedef void *user_handle_t;
37 typedef unsigned short atom_t;
38 typedef unsigned int process_id_t;
39 typedef unsigned int thread_id_t;
40
41 #define FIRST_USER_HANDLE 0x0020
42 #define LAST_USER_HANDLE  0xffef
43
44
45
46 struct debug_event_exception
47 {
48     EXCEPTION_RECORD record;
49     int              first;
50 };
51 struct debug_event_create_thread
52 {
53     obj_handle_t handle;
54     void        *teb;
55     void        *start;
56 };
57 struct debug_event_create_process
58 {
59     obj_handle_t file;
60     obj_handle_t process;
61     obj_handle_t thread;
62     void        *base;
63     int          dbg_offset;
64     int          dbg_size;
65     void        *teb;
66     void        *start;
67     void        *name;
68     int          unicode;
69 };
70 struct debug_event_exit
71 {
72     int          exit_code;
73 };
74 struct debug_event_load_dll
75 {
76     obj_handle_t handle;
77     void        *base;
78     int          dbg_offset;
79     int          dbg_size;
80     void        *name;
81     int          unicode;
82 };
83 struct debug_event_unload_dll
84 {
85     void       *base;
86 };
87 struct debug_event_output_string
88 {
89     void       *string;
90     int         unicode;
91     int         length;
92 };
93 struct debug_event_rip_info
94 {
95     int         error;
96     int         type;
97 };
98 union debug_event_data
99 {
100     struct debug_event_exception      exception;
101     struct debug_event_create_thread  create_thread;
102     struct debug_event_create_process create_process;
103     struct debug_event_exit           exit;
104     struct debug_event_load_dll       load_dll;
105     struct debug_event_unload_dll     unload_dll;
106     struct debug_event_output_string  output_string;
107     struct debug_event_rip_info       rip_info;
108 };
109
110
111 typedef struct
112 {
113     int                      code;
114     union debug_event_data   info;
115 } debug_event_t;
116
117
118 struct send_fd
119 {
120     thread_id_t tid;
121     int         fd;
122 };
123
124
125 struct wake_up_reply
126 {
127     void *cookie;
128     int   signaled;
129 };
130
131
132 typedef struct
133 {
134     size_t       size;
135     size_t       filename_len;
136     size_t       cmdline_len;
137     size_t       desktop_len;
138     size_t       title_len;
139     int          x;
140     int          y;
141     int          cx;
142     int          cy;
143     int          x_chars;
144     int          y_chars;
145     int          attribute;
146     int          cmd_show;
147     unsigned int flags;
148
149
150
151
152 } startup_info_t;
153
154
155 typedef struct
156 {
157     int            sec;
158     int            usec;
159 } abs_time_t;
160
161
162 typedef struct
163 {
164     atom_t         atom;
165     short          string;
166     obj_handle_t   handle;
167 } property_data_t;
168
169
170 typedef struct
171 {
172     int  left;
173     int  top;
174     int  right;
175     int  bottom;
176 } rectangle_t;
177
178
179 typedef struct
180 {
181     WCHAR          ch;
182     unsigned short attr;
183 } char_info_t;
184
185
186
187
188
189 struct new_process_request
190 {
191     struct request_header __header;
192     int          inherit_all;
193     int          use_handles;
194     int          create_flags;
195     int          unix_pid;
196     obj_handle_t exe_file;
197     obj_handle_t hstdin;
198     obj_handle_t hstdout;
199     obj_handle_t hstderr;
200     /* VARARG(info,startup_info); */
201 };
202 struct new_process_reply
203 {
204     struct reply_header __header;
205     obj_handle_t info;
206 };
207
208
209
210 struct get_new_process_info_request
211 {
212     struct request_header __header;
213     obj_handle_t info;
214     int          pinherit;
215     int          tinherit;
216 };
217 struct get_new_process_info_reply
218 {
219     struct reply_header __header;
220     process_id_t pid;
221     obj_handle_t phandle;
222     thread_id_t  tid;
223     obj_handle_t thandle;
224     int          success;
225 };
226
227
228
229 struct new_thread_request
230 {
231     struct request_header __header;
232     int          suspend;
233     int          inherit;
234     int          request_fd;
235 };
236 struct new_thread_reply
237 {
238     struct reply_header __header;
239     thread_id_t  tid;
240     obj_handle_t handle;
241 };
242
243
244
245 struct boot_done_request
246 {
247     struct request_header __header;
248     int          debug_level;
249 };
250 struct boot_done_reply
251 {
252     struct reply_header __header;
253 };
254
255
256
257 struct init_process_request
258 {
259     struct request_header __header;
260     void*        ldt_copy;
261 };
262 struct init_process_reply
263 {
264     struct reply_header __header;
265     int          create_flags;
266     unsigned int server_start;
267     size_t       info_size;
268     obj_handle_t exe_file;
269     obj_handle_t hstdin;
270     obj_handle_t hstdout;
271     obj_handle_t hstderr;
272 };
273
274
275
276 struct get_startup_info_request
277 {
278     struct request_header __header;
279 };
280 struct get_startup_info_reply
281 {
282     struct reply_header __header;
283     /* VARARG(info,startup_info); */
284 };
285
286
287
288 struct init_process_done_request
289 {
290     struct request_header __header;
291     void*        module;
292     size_t       module_size;
293     void*        entry;
294     void*        name;
295     obj_handle_t exe_file;
296     int          gui;
297     /* VARARG(filename,string); */
298 };
299 struct init_process_done_reply
300 {
301     struct reply_header __header;
302     int          debugged;
303 };
304
305
306
307 struct init_thread_request
308 {
309     struct request_header __header;
310     int          unix_pid;
311     int          unix_tid;
312     void*        teb;
313     void*        entry;
314     int          reply_fd;
315     int          wait_fd;
316 };
317 struct init_thread_reply
318 {
319     struct reply_header __header;
320     process_id_t pid;
321     thread_id_t  tid;
322     int          boot;
323     int          version;
324 };
325
326
327
328 struct terminate_process_request
329 {
330     struct request_header __header;
331     obj_handle_t handle;
332     int          exit_code;
333 };
334 struct terminate_process_reply
335 {
336     struct reply_header __header;
337     int          self;
338 };
339
340
341
342 struct terminate_thread_request
343 {
344     struct request_header __header;
345     obj_handle_t handle;
346     int          exit_code;
347 };
348 struct terminate_thread_reply
349 {
350     struct reply_header __header;
351     int          self;
352     int          last;
353 };
354
355
356
357 struct get_process_info_request
358 {
359     struct request_header __header;
360     obj_handle_t handle;
361 };
362 struct get_process_info_reply
363 {
364     struct reply_header __header;
365     process_id_t pid;
366     int          debugged;
367     int          exit_code;
368     int          priority;
369     int          process_affinity;
370     int          system_affinity;
371 };
372
373
374
375 struct set_process_info_request
376 {
377     struct request_header __header;
378     obj_handle_t handle;
379     int          mask;
380     int          priority;
381     int          affinity;
382 };
383 struct set_process_info_reply
384 {
385     struct reply_header __header;
386 };
387 #define SET_PROCESS_INFO_PRIORITY 0x01
388 #define SET_PROCESS_INFO_AFFINITY 0x02
389
390
391
392 struct get_thread_info_request
393 {
394     struct request_header __header;
395     obj_handle_t handle;
396     thread_id_t  tid_in;
397 };
398 struct get_thread_info_reply
399 {
400     struct reply_header __header;
401     thread_id_t  tid;
402     void*        teb;
403     int          exit_code;
404     int          priority;
405     time_t       creation_time;
406     time_t       exit_time;
407 };
408
409
410
411 struct set_thread_info_request
412 {
413     struct request_header __header;
414     obj_handle_t handle;
415     int          mask;
416     int          priority;
417     int          affinity;
418 };
419 struct set_thread_info_reply
420 {
421     struct reply_header __header;
422 };
423 #define SET_THREAD_INFO_PRIORITY 0x01
424 #define SET_THREAD_INFO_AFFINITY 0x02
425
426
427
428 struct get_dll_info_request
429 {
430     struct request_header __header;
431     obj_handle_t handle;
432     void*        base_address;
433 };
434 struct get_dll_info_reply
435 {
436     struct reply_header __header;
437     size_t       size;
438     void*        entry_point;
439     /* VARARG(filename,string); */
440 };
441
442
443
444 struct suspend_thread_request
445 {
446     struct request_header __header;
447     obj_handle_t handle;
448 };
449 struct suspend_thread_reply
450 {
451     struct reply_header __header;
452     int          count;
453 };
454
455
456
457 struct resume_thread_request
458 {
459     struct request_header __header;
460     obj_handle_t handle;
461 };
462 struct resume_thread_reply
463 {
464     struct reply_header __header;
465     int          count;
466 };
467
468
469
470 struct load_dll_request
471 {
472     struct request_header __header;
473     obj_handle_t handle;
474     void*        base;
475     size_t       size;
476     int          dbg_offset;
477     int          dbg_size;
478     void*        name;
479     /* VARARG(filename,string); */
480 };
481 struct load_dll_reply
482 {
483     struct reply_header __header;
484 };
485
486
487
488 struct unload_dll_request
489 {
490     struct request_header __header;
491     void*        base;
492 };
493 struct unload_dll_reply
494 {
495     struct reply_header __header;
496 };
497
498
499
500 struct queue_apc_request
501 {
502     struct request_header __header;
503     obj_handle_t handle;
504     int          user;
505     void*        func;
506     void*        arg1;
507     void*        arg2;
508     void*        arg3;
509 };
510 struct queue_apc_reply
511 {
512     struct reply_header __header;
513 };
514
515
516
517 struct get_apc_request
518 {
519     struct request_header __header;
520     int          alertable;
521 };
522 struct get_apc_reply
523 {
524     struct reply_header __header;
525     void*        func;
526     int          type;
527     void*        arg1;
528     void*        arg2;
529     void*        arg3;
530 };
531 enum apc_type { APC_NONE, APC_USER, APC_TIMER, APC_ASYNC, APC_ASYNC_IO };
532
533
534
535 struct close_handle_request
536 {
537     struct request_header __header;
538     obj_handle_t handle;
539 };
540 struct close_handle_reply
541 {
542     struct reply_header __header;
543     int          fd;
544 };
545
546
547
548 struct set_handle_info_request
549 {
550     struct request_header __header;
551     obj_handle_t handle;
552     int          flags;
553     int          mask;
554     int          fd;
555 };
556 struct set_handle_info_reply
557 {
558     struct reply_header __header;
559     int          old_flags;
560     int          cur_fd;
561 };
562
563
564
565 struct dup_handle_request
566 {
567     struct request_header __header;
568     obj_handle_t src_process;
569     obj_handle_t src_handle;
570     obj_handle_t dst_process;
571     unsigned int access;
572     int          inherit;
573     int          options;
574 };
575 struct dup_handle_reply
576 {
577     struct reply_header __header;
578     obj_handle_t handle;
579     int          fd;
580 };
581 #define DUP_HANDLE_CLOSE_SOURCE  DUPLICATE_CLOSE_SOURCE
582 #define DUP_HANDLE_SAME_ACCESS   DUPLICATE_SAME_ACCESS
583 #define DUP_HANDLE_MAKE_GLOBAL   0x80000000
584
585
586
587 struct open_process_request
588 {
589     struct request_header __header;
590     process_id_t pid;
591     unsigned int access;
592     int          inherit;
593 };
594 struct open_process_reply
595 {
596     struct reply_header __header;
597     obj_handle_t handle;
598 };
599
600
601
602 struct open_thread_request
603 {
604     struct request_header __header;
605     thread_id_t  tid;
606     unsigned int access;
607     int          inherit;
608 };
609 struct open_thread_reply
610 {
611     struct reply_header __header;
612     obj_handle_t handle;
613 };
614
615
616
617 struct select_request
618 {
619     struct request_header __header;
620     int          flags;
621     void*        cookie;
622     abs_time_t   timeout;
623     /* VARARG(handles,handles); */
624 };
625 struct select_reply
626 {
627     struct reply_header __header;
628 };
629 #define SELECT_ALL           1
630 #define SELECT_ALERTABLE     2
631 #define SELECT_INTERRUPTIBLE 4
632 #define SELECT_TIMEOUT       8
633
634
635
636 struct create_event_request
637 {
638     struct request_header __header;
639     int          manual_reset;
640     int          initial_state;
641     int          inherit;
642     /* VARARG(name,unicode_str); */
643 };
644 struct create_event_reply
645 {
646     struct reply_header __header;
647     obj_handle_t handle;
648 };
649
650
651 struct event_op_request
652 {
653     struct request_header __header;
654     obj_handle_t  handle;
655     int           op;
656 };
657 struct event_op_reply
658 {
659     struct reply_header __header;
660 };
661 enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
662
663
664
665 struct open_event_request
666 {
667     struct request_header __header;
668     unsigned int access;
669     int          inherit;
670     /* VARARG(name,unicode_str); */
671 };
672 struct open_event_reply
673 {
674     struct reply_header __header;
675     obj_handle_t handle;
676 };
677
678
679
680 struct create_mutex_request
681 {
682     struct request_header __header;
683     int          owned;
684     int          inherit;
685     /* VARARG(name,unicode_str); */
686 };
687 struct create_mutex_reply
688 {
689     struct reply_header __header;
690     obj_handle_t handle;
691 };
692
693
694
695 struct release_mutex_request
696 {
697     struct request_header __header;
698     obj_handle_t handle;
699 };
700 struct release_mutex_reply
701 {
702     struct reply_header __header;
703 };
704
705
706
707 struct open_mutex_request
708 {
709     struct request_header __header;
710     unsigned int access;
711     int          inherit;
712     /* VARARG(name,unicode_str); */
713 };
714 struct open_mutex_reply
715 {
716     struct reply_header __header;
717     obj_handle_t handle;
718 };
719
720
721
722 struct create_semaphore_request
723 {
724     struct request_header __header;
725     unsigned int initial;
726     unsigned int max;
727     int          inherit;
728     /* VARARG(name,unicode_str); */
729 };
730 struct create_semaphore_reply
731 {
732     struct reply_header __header;
733     obj_handle_t handle;
734 };
735
736
737
738 struct release_semaphore_request
739 {
740     struct request_header __header;
741     obj_handle_t handle;
742     unsigned int count;
743 };
744 struct release_semaphore_reply
745 {
746     struct reply_header __header;
747     unsigned int prev_count;
748 };
749
750
751
752 struct open_semaphore_request
753 {
754     struct request_header __header;
755     unsigned int access;
756     int          inherit;
757     /* VARARG(name,unicode_str); */
758 };
759 struct open_semaphore_reply
760 {
761     struct reply_header __header;
762     obj_handle_t handle;
763 };
764
765
766
767 struct create_file_request
768 {
769     struct request_header __header;
770     unsigned int access;
771     int          inherit;
772     unsigned int sharing;
773     int          create;
774     unsigned int attrs;
775     int          drive_type;
776     /* VARARG(filename,string); */
777 };
778 struct create_file_reply
779 {
780     struct reply_header __header;
781     obj_handle_t handle;
782 };
783
784
785
786 struct alloc_file_handle_request
787 {
788     struct request_header __header;
789     unsigned int access;
790     int          inherit;
791     int          fd;
792 };
793 struct alloc_file_handle_reply
794 {
795     struct reply_header __header;
796     obj_handle_t handle;
797 };
798
799
800
801 struct get_handle_fd_request
802 {
803     struct request_header __header;
804     obj_handle_t handle;
805     unsigned int access;
806 };
807 struct get_handle_fd_reply
808 {
809     struct reply_header __header;
810     int          fd;
811     int          type;
812     int          flags;
813 };
814 enum fd_type
815 {
816     FD_TYPE_INVALID,
817     FD_TYPE_DEFAULT,
818     FD_TYPE_CONSOLE,
819     FD_TYPE_SOCKET,
820     FD_TYPE_SMB
821 };
822 #define FD_FLAG_OVERLAPPED         0x01
823 #define FD_FLAG_TIMEOUT            0x02
824 #define FD_FLAG_RECV_SHUTDOWN      0x04
825 #define FD_FLAG_SEND_SHUTDOWN      0x08
826
827
828 struct set_file_pointer_request
829 {
830     struct request_header __header;
831     obj_handle_t handle;
832     int          low;
833     int          high;
834     int          whence;
835 };
836 struct set_file_pointer_reply
837 {
838     struct reply_header __header;
839     int          new_low;
840     int          new_high;
841 };
842
843
844
845 struct truncate_file_request
846 {
847     struct request_header __header;
848     obj_handle_t handle;
849 };
850 struct truncate_file_reply
851 {
852     struct reply_header __header;
853 };
854
855
856
857 struct set_file_time_request
858 {
859     struct request_header __header;
860     obj_handle_t handle;
861     time_t       access_time;
862     time_t       write_time;
863 };
864 struct set_file_time_reply
865 {
866     struct reply_header __header;
867 };
868
869
870
871 struct flush_file_request
872 {
873     struct request_header __header;
874     obj_handle_t handle;
875 };
876 struct flush_file_reply
877 {
878     struct reply_header __header;
879 };
880
881
882
883 struct get_file_info_request
884 {
885     struct request_header __header;
886     obj_handle_t handle;
887 };
888 struct get_file_info_reply
889 {
890     struct reply_header __header;
891     int          type;
892     int          attr;
893     time_t       access_time;
894     time_t       write_time;
895     int          size_high;
896     int          size_low;
897     int          links;
898     int          index_high;
899     int          index_low;
900     unsigned int serial;
901 };
902
903
904
905 struct lock_file_request
906 {
907     struct request_header __header;
908     obj_handle_t handle;
909     unsigned int offset_low;
910     unsigned int offset_high;
911     unsigned int count_low;
912     unsigned int count_high;
913     int          shared;
914     int          wait;
915 };
916 struct lock_file_reply
917 {
918     struct reply_header __header;
919     obj_handle_t handle;
920     int          overlapped;
921 };
922
923
924
925 struct unlock_file_request
926 {
927     struct request_header __header;
928     obj_handle_t handle;
929     unsigned int offset_low;
930     unsigned int offset_high;
931     unsigned int count_low;
932     unsigned int count_high;
933 };
934 struct unlock_file_reply
935 {
936     struct reply_header __header;
937 };
938
939
940
941 struct create_pipe_request
942 {
943     struct request_header __header;
944     int          inherit;
945 };
946 struct create_pipe_reply
947 {
948     struct reply_header __header;
949     obj_handle_t handle_read;
950     obj_handle_t handle_write;
951 };
952
953
954
955 struct create_socket_request
956 {
957     struct request_header __header;
958     unsigned int access;
959     int          inherit;
960     int          family;
961     int          type;
962     int          protocol;
963     unsigned int flags;
964 };
965 struct create_socket_reply
966 {
967     struct reply_header __header;
968     obj_handle_t handle;
969 };
970
971
972
973 struct accept_socket_request
974 {
975     struct request_header __header;
976     obj_handle_t lhandle;
977     unsigned int access;
978     int          inherit;
979 };
980 struct accept_socket_reply
981 {
982     struct reply_header __header;
983     obj_handle_t handle;
984 };
985
986
987
988 struct set_socket_event_request
989 {
990     struct request_header __header;
991     obj_handle_t  handle;
992     unsigned int  mask;
993     obj_handle_t  event;
994     user_handle_t window;
995     unsigned int  msg;
996 };
997 struct set_socket_event_reply
998 {
999     struct reply_header __header;
1000 };
1001
1002
1003
1004 struct get_socket_event_request
1005 {
1006     struct request_header __header;
1007     obj_handle_t handle;
1008     int          service;
1009     obj_handle_t c_event;
1010 };
1011 struct get_socket_event_reply
1012 {
1013     struct reply_header __header;
1014     unsigned int mask;
1015     unsigned int pmask;
1016     unsigned int state;
1017     /* VARARG(errors,ints); */
1018 };
1019
1020
1021
1022 struct enable_socket_event_request
1023 {
1024     struct request_header __header;
1025     obj_handle_t handle;
1026     unsigned int mask;
1027     unsigned int sstate;
1028     unsigned int cstate;
1029 };
1030 struct enable_socket_event_reply
1031 {
1032     struct reply_header __header;
1033 };
1034
1035 struct set_socket_deferred_request
1036 {
1037     struct request_header __header;
1038     obj_handle_t handle;
1039     obj_handle_t deferred;
1040 };
1041 struct set_socket_deferred_reply
1042 {
1043     struct reply_header __header;
1044 };
1045
1046
1047 struct alloc_console_request
1048 {
1049     struct request_header __header;
1050     unsigned int access;
1051     int          inherit;
1052     process_id_t pid;
1053 };
1054 struct alloc_console_reply
1055 {
1056     struct reply_header __header;
1057     obj_handle_t handle_in;
1058     obj_handle_t event;
1059 };
1060
1061
1062
1063 struct free_console_request
1064 {
1065     struct request_header __header;
1066 };
1067 struct free_console_reply
1068 {
1069     struct reply_header __header;
1070 };
1071
1072
1073 #define CONSOLE_RENDERER_NONE_EVENT        0x00
1074 #define CONSOLE_RENDERER_TITLE_EVENT       0x01
1075 #define CONSOLE_RENDERER_ACTIVE_SB_EVENT   0x02
1076 #define CONSOLE_RENDERER_SB_RESIZE_EVENT   0x03
1077 #define CONSOLE_RENDERER_UPDATE_EVENT      0x04
1078 #define CONSOLE_RENDERER_CURSOR_POS_EVENT  0x05
1079 #define CONSOLE_RENDERER_CURSOR_GEOM_EVENT 0x06
1080 #define CONSOLE_RENDERER_DISPLAY_EVENT     0x07
1081 #define CONSOLE_RENDERER_EXIT_EVENT        0x08
1082 struct console_renderer_event
1083 {
1084     short event;
1085     union
1086     {
1087         struct update
1088         {
1089             short top;
1090             short bottom;
1091         } update;
1092         struct resize
1093         {
1094             short width;
1095             short height;
1096         } resize;
1097         struct cursor_pos
1098         {
1099             short x;
1100             short y;
1101         } cursor_pos;
1102         struct cursor_geom
1103         {
1104             short visible;
1105             short size;
1106         } cursor_geom;
1107         struct display
1108         {
1109             short left;
1110             short top;
1111             short width;
1112             short height;
1113         } display;
1114     } u;
1115 };
1116
1117
1118 struct get_console_renderer_events_request
1119 {
1120     struct request_header __header;
1121     obj_handle_t handle;
1122 };
1123 struct get_console_renderer_events_reply
1124 {
1125     struct reply_header __header;
1126     /* VARARG(data,bytes); */
1127 };
1128
1129
1130
1131 struct open_console_request
1132 {
1133     struct request_header __header;
1134     int          from;
1135
1136     unsigned int access;
1137     int          inherit;
1138     int          share;
1139 };
1140 struct open_console_reply
1141 {
1142     struct reply_header __header;
1143     obj_handle_t handle;
1144 };
1145
1146
1147
1148 struct get_console_mode_request
1149 {
1150     struct request_header __header;
1151     obj_handle_t handle;
1152 };
1153 struct get_console_mode_reply
1154 {
1155     struct reply_header __header;
1156     int          mode;
1157 };
1158
1159
1160
1161 struct set_console_mode_request
1162 {
1163     struct request_header __header;
1164     obj_handle_t handle;
1165     int          mode;
1166 };
1167 struct set_console_mode_reply
1168 {
1169     struct reply_header __header;
1170 };
1171
1172
1173
1174 struct set_console_input_info_request
1175 {
1176     struct request_header __header;
1177     obj_handle_t handle;
1178     int          mask;
1179     obj_handle_t active_sb;
1180     int          history_mode;
1181     int          history_size;
1182     int          edition_mode;
1183     /* VARARG(title,unicode_str); */
1184 };
1185 struct set_console_input_info_reply
1186 {
1187     struct reply_header __header;
1188 };
1189 #define SET_CONSOLE_INPUT_INFO_ACTIVE_SB        0x01
1190 #define SET_CONSOLE_INPUT_INFO_TITLE            0x02
1191 #define SET_CONSOLE_INPUT_INFO_HISTORY_MODE     0x04
1192 #define SET_CONSOLE_INPUT_INFO_HISTORY_SIZE     0x08
1193 #define SET_CONSOLE_INPUT_INFO_EDITION_MODE     0x10
1194
1195
1196
1197 struct get_console_input_info_request
1198 {
1199     struct request_header __header;
1200     obj_handle_t handle;
1201 };
1202 struct get_console_input_info_reply
1203 {
1204     struct reply_header __header;
1205     int          history_mode;
1206     int          history_size;
1207     int          history_index;
1208     int          edition_mode;
1209     /* VARARG(title,unicode_str); */
1210 };
1211
1212
1213
1214 struct append_console_input_history_request
1215 {
1216     struct request_header __header;
1217     obj_handle_t handle;
1218     /* VARARG(line,unicode_str); */
1219 };
1220 struct append_console_input_history_reply
1221 {
1222     struct reply_header __header;
1223 };
1224
1225
1226
1227 struct get_console_input_history_request
1228 {
1229     struct request_header __header;
1230     obj_handle_t handle;
1231     int          index;
1232 };
1233 struct get_console_input_history_reply
1234 {
1235     struct reply_header __header;
1236     int          total;
1237     /* VARARG(line,unicode_str); */
1238 };
1239
1240
1241
1242 struct create_console_output_request
1243 {
1244     struct request_header __header;
1245     obj_handle_t handle_in;
1246     int          access;
1247     int          share;
1248     int          inherit;
1249 };
1250 struct create_console_output_reply
1251 {
1252     struct reply_header __header;
1253     obj_handle_t handle_out;
1254 };
1255
1256
1257
1258 struct set_console_output_info_request
1259 {
1260     struct request_header __header;
1261     obj_handle_t handle;
1262     int          mask;
1263     short int    cursor_size;
1264     short int    cursor_visible;
1265     short int    cursor_x;
1266     short int    cursor_y;
1267     short int    width;
1268     short int    height;
1269     short int    attr;
1270     short int    win_left;
1271     short int    win_top;
1272     short int    win_right;
1273     short int    win_bottom;
1274     short int    max_width;
1275     short int    max_height;
1276 };
1277 struct set_console_output_info_reply
1278 {
1279     struct reply_header __header;
1280 };
1281 #define SET_CONSOLE_OUTPUT_INFO_CURSOR_GEOM     0x01
1282 #define SET_CONSOLE_OUTPUT_INFO_CURSOR_POS      0x02
1283 #define SET_CONSOLE_OUTPUT_INFO_SIZE            0x04
1284 #define SET_CONSOLE_OUTPUT_INFO_ATTR            0x08
1285 #define SET_CONSOLE_OUTPUT_INFO_DISPLAY_WINDOW  0x10
1286 #define SET_CONSOLE_OUTPUT_INFO_MAX_SIZE        0x20
1287
1288
1289
1290 struct get_console_output_info_request
1291 {
1292     struct request_header __header;
1293     obj_handle_t handle;
1294 };
1295 struct get_console_output_info_reply
1296 {
1297     struct reply_header __header;
1298     short int    cursor_size;
1299     short int    cursor_visible;
1300     short int    cursor_x;
1301     short int    cursor_y;
1302     short int    width;
1303     short int    height;
1304     short int    attr;
1305     short int    win_left;
1306     short int    win_top;
1307     short int    win_right;
1308     short int    win_bottom;
1309     short int    max_width;
1310     short int    max_height;
1311 };
1312
1313
1314 struct write_console_input_request
1315 {
1316     struct request_header __header;
1317     obj_handle_t handle;
1318     /* VARARG(rec,input_records); */
1319 };
1320 struct write_console_input_reply
1321 {
1322     struct reply_header __header;
1323     int          written;
1324 };
1325
1326
1327
1328 struct read_console_input_request
1329 {
1330     struct request_header __header;
1331     obj_handle_t handle;
1332     int          flush;
1333 };
1334 struct read_console_input_reply
1335 {
1336     struct reply_header __header;
1337     int          read;
1338     /* VARARG(rec,input_records); */
1339 };
1340
1341
1342
1343 struct write_console_output_request
1344 {
1345     struct request_header __header;
1346     obj_handle_t handle;
1347     int          x;
1348     int          y;
1349     int          mode;
1350     int          wrap;
1351     /* VARARG(data,bytes); */
1352 };
1353 struct write_console_output_reply
1354 {
1355     struct reply_header __header;
1356     int          written;
1357     int          width;
1358     int          height;
1359 };
1360 enum char_info_mode
1361 {
1362     CHAR_INFO_MODE_TEXT,
1363     CHAR_INFO_MODE_ATTR,
1364     CHAR_INFO_MODE_TEXTATTR,
1365     CHAR_INFO_MODE_TEXTSTDATTR
1366 };
1367
1368
1369
1370 struct fill_console_output_request
1371 {
1372     struct request_header __header;
1373     obj_handle_t handle;
1374     int          x;
1375     int          y;
1376     int          mode;
1377     int          count;
1378     int          wrap;
1379     char_info_t  data;
1380 };
1381 struct fill_console_output_reply
1382 {
1383     struct reply_header __header;
1384     int          written;
1385 };
1386
1387
1388
1389 struct read_console_output_request
1390 {
1391     struct request_header __header;
1392     obj_handle_t handle;
1393     int          x;
1394     int          y;
1395     int          mode;
1396     int          wrap;
1397 };
1398 struct read_console_output_reply
1399 {
1400     struct reply_header __header;
1401     int          width;
1402     int          height;
1403     /* VARARG(data,bytes); */
1404 };
1405
1406
1407
1408 struct move_console_output_request
1409 {
1410     struct request_header __header;
1411     obj_handle_t handle;
1412     short int    x_src;
1413     short int    y_src;
1414     short int    x_dst;
1415     short int    y_dst;
1416     short int    w;
1417     short int    h;
1418 };
1419 struct move_console_output_reply
1420 {
1421     struct reply_header __header;
1422 };
1423
1424
1425
1426 struct send_console_signal_request
1427 {
1428     struct request_header __header;
1429     int          signal;
1430     process_id_t group_id;
1431 };
1432 struct send_console_signal_reply
1433 {
1434     struct reply_header __header;
1435 };
1436
1437
1438
1439 struct create_change_notification_request
1440 {
1441     struct request_header __header;
1442     obj_handle_t handle;
1443     int          subtree;
1444     unsigned int filter;
1445 };
1446 struct create_change_notification_reply
1447 {
1448     struct reply_header __header;
1449     obj_handle_t handle;
1450 };
1451
1452
1453
1454 struct next_change_notification_request
1455 {
1456     struct request_header __header;
1457     obj_handle_t handle;
1458 };
1459 struct next_change_notification_reply
1460 {
1461     struct reply_header __header;
1462 };
1463
1464
1465 struct create_mapping_request
1466 {
1467     struct request_header __header;
1468     int          size_high;
1469     int          size_low;
1470     int          protect;
1471     unsigned int access;
1472     int          inherit;
1473     obj_handle_t file_handle;
1474     /* VARARG(name,unicode_str); */
1475 };
1476 struct create_mapping_reply
1477 {
1478     struct reply_header __header;
1479     obj_handle_t handle;
1480 };
1481
1482 #define VPROT_READ       0x01
1483 #define VPROT_WRITE      0x02
1484 #define VPROT_EXEC       0x04
1485 #define VPROT_WRITECOPY  0x08
1486 #define VPROT_GUARD      0x10
1487 #define VPROT_NOCACHE    0x20
1488 #define VPROT_COMMITTED  0x40
1489 #define VPROT_IMAGE      0x80
1490
1491
1492
1493 struct open_mapping_request
1494 {
1495     struct request_header __header;
1496     unsigned int access;
1497     int          inherit;
1498     /* VARARG(name,unicode_str); */
1499 };
1500 struct open_mapping_reply
1501 {
1502     struct reply_header __header;
1503     obj_handle_t handle;
1504 };
1505
1506
1507
1508 struct get_mapping_info_request
1509 {
1510     struct request_header __header;
1511     obj_handle_t handle;
1512 };
1513 struct get_mapping_info_reply
1514 {
1515     struct reply_header __header;
1516     int          size_high;
1517     int          size_low;
1518     int          protect;
1519     int          header_size;
1520     void*        base;
1521     obj_handle_t shared_file;
1522     int          shared_size;
1523     int          drive_type;
1524 };
1525
1526
1527
1528 struct create_device_request
1529 {
1530     struct request_header __header;
1531     unsigned int access;
1532     int          inherit;
1533     int          id;
1534 };
1535 struct create_device_reply
1536 {
1537     struct reply_header __header;
1538     obj_handle_t handle;
1539 };
1540
1541
1542
1543 struct get_device_id_request
1544 {
1545     struct request_header __header;
1546     obj_handle_t handle;
1547 };
1548 struct get_device_id_reply
1549 {
1550     struct reply_header __header;
1551     int          id;
1552 };
1553
1554
1555 #define SNAP_HEAPLIST   0x00000001
1556 #define SNAP_PROCESS    0x00000002
1557 #define SNAP_THREAD     0x00000004
1558 #define SNAP_MODULE     0x00000008
1559
1560 struct create_snapshot_request
1561 {
1562     struct request_header __header;
1563     int          inherit;
1564     int          flags;
1565     process_id_t pid;
1566 };
1567 struct create_snapshot_reply
1568 {
1569     struct reply_header __header;
1570     obj_handle_t handle;
1571 };
1572
1573
1574
1575 struct next_process_request
1576 {
1577     struct request_header __header;
1578     obj_handle_t handle;
1579     int          reset;
1580 };
1581 struct next_process_reply
1582 {
1583     struct reply_header __header;
1584     int          count;
1585     process_id_t pid;
1586     process_id_t ppid;
1587     void*        heap;
1588     void*        module;
1589     int          threads;
1590     int          priority;
1591     /* VARARG(filename,string); */
1592 };
1593
1594
1595
1596 struct next_thread_request
1597 {
1598     struct request_header __header;
1599     obj_handle_t handle;
1600     int          reset;
1601 };
1602 struct next_thread_reply
1603 {
1604     struct reply_header __header;
1605     int          count;
1606     process_id_t pid;
1607     thread_id_t  tid;
1608     int          base_pri;
1609     int          delta_pri;
1610 };
1611
1612
1613
1614 struct next_module_request
1615 {
1616     struct request_header __header;
1617     obj_handle_t handle;
1618     int          reset;
1619 };
1620 struct next_module_reply
1621 {
1622     struct reply_header __header;
1623     process_id_t pid;
1624     void*        base;
1625     size_t       size;
1626     /* VARARG(filename,string); */
1627 };
1628
1629
1630
1631 struct wait_debug_event_request
1632 {
1633     struct request_header __header;
1634     int           get_handle;
1635 };
1636 struct wait_debug_event_reply
1637 {
1638     struct reply_header __header;
1639     process_id_t  pid;
1640     thread_id_t   tid;
1641     obj_handle_t  wait;
1642     /* VARARG(event,debug_event); */
1643 };
1644
1645
1646
1647 struct queue_exception_event_request
1648 {
1649     struct request_header __header;
1650     int              first;
1651     /* VARARG(record,exc_event); */
1652 };
1653 struct queue_exception_event_reply
1654 {
1655     struct reply_header __header;
1656     obj_handle_t     handle;
1657 };
1658
1659
1660
1661 struct get_exception_status_request
1662 {
1663     struct request_header __header;
1664     obj_handle_t     handle;
1665 };
1666 struct get_exception_status_reply
1667 {
1668     struct reply_header __header;
1669     int              status;
1670     /* VARARG(context,context); */
1671 };
1672
1673
1674
1675 struct output_debug_string_request
1676 {
1677     struct request_header __header;
1678     void*         string;
1679     int           unicode;
1680     int           length;
1681 };
1682 struct output_debug_string_reply
1683 {
1684     struct reply_header __header;
1685 };
1686
1687
1688
1689 struct continue_debug_event_request
1690 {
1691     struct request_header __header;
1692     process_id_t pid;
1693     thread_id_t  tid;
1694     int          status;
1695 };
1696 struct continue_debug_event_reply
1697 {
1698     struct reply_header __header;
1699 };
1700
1701
1702
1703 struct debug_process_request
1704 {
1705     struct request_header __header;
1706     process_id_t pid;
1707     int          attach;
1708 };
1709 struct debug_process_reply
1710 {
1711     struct reply_header __header;
1712 };
1713
1714
1715
1716 struct debug_break_request
1717 {
1718     struct request_header __header;
1719     obj_handle_t handle;
1720 };
1721 struct debug_break_reply
1722 {
1723     struct reply_header __header;
1724     int          self;
1725 };
1726
1727
1728
1729 struct set_debugger_kill_on_exit_request
1730 {
1731     struct request_header __header;
1732     int          kill_on_exit;
1733 };
1734 struct set_debugger_kill_on_exit_reply
1735 {
1736     struct reply_header __header;
1737 };
1738
1739
1740
1741 struct read_process_memory_request
1742 {
1743     struct request_header __header;
1744     obj_handle_t handle;
1745     void*        addr;
1746 };
1747 struct read_process_memory_reply
1748 {
1749     struct reply_header __header;
1750     /* VARARG(data,bytes); */
1751 };
1752
1753
1754
1755 struct write_process_memory_request
1756 {
1757     struct request_header __header;
1758     obj_handle_t handle;
1759     void*        addr;
1760     unsigned int first_mask;
1761     unsigned int last_mask;
1762     /* VARARG(data,bytes); */
1763 };
1764 struct write_process_memory_reply
1765 {
1766     struct reply_header __header;
1767 };
1768
1769
1770
1771 struct create_key_request
1772 {
1773     struct request_header __header;
1774     obj_handle_t parent;
1775     unsigned int access;
1776     unsigned int options;
1777     time_t       modif;
1778     size_t       namelen;
1779     /* VARARG(name,unicode_str,namelen); */
1780     /* VARARG(class,unicode_str); */
1781 };
1782 struct create_key_reply
1783 {
1784     struct reply_header __header;
1785     obj_handle_t hkey;
1786     int          created;
1787 };
1788
1789
1790 struct open_key_request
1791 {
1792     struct request_header __header;
1793     obj_handle_t parent;
1794     unsigned int access;
1795     /* VARARG(name,unicode_str); */
1796 };
1797 struct open_key_reply
1798 {
1799     struct reply_header __header;
1800     obj_handle_t hkey;
1801 };
1802
1803
1804
1805 struct delete_key_request
1806 {
1807     struct request_header __header;
1808     obj_handle_t hkey;
1809 };
1810 struct delete_key_reply
1811 {
1812     struct reply_header __header;
1813 };
1814
1815
1816
1817 struct enum_key_request
1818 {
1819     struct request_header __header;
1820     obj_handle_t hkey;
1821     int          index;
1822     int          info_class;
1823 };
1824 struct enum_key_reply
1825 {
1826     struct reply_header __header;
1827     int          subkeys;
1828     int          max_subkey;
1829     int          max_class;
1830     int          values;
1831     int          max_value;
1832     int          max_data;
1833     time_t       modif;
1834     size_t       total;
1835     size_t       namelen;
1836     /* VARARG(name,unicode_str,namelen); */
1837     /* VARARG(class,unicode_str); */
1838 };
1839
1840
1841
1842 struct set_key_value_request
1843 {
1844     struct request_header __header;
1845     obj_handle_t hkey;
1846     int          type;
1847     size_t       namelen;
1848     /* VARARG(name,unicode_str,namelen); */
1849     /* VARARG(data,bytes); */
1850 };
1851 struct set_key_value_reply
1852 {
1853     struct reply_header __header;
1854 };
1855
1856
1857
1858 struct get_key_value_request
1859 {
1860     struct request_header __header;
1861     obj_handle_t hkey;
1862     /* VARARG(name,unicode_str); */
1863 };
1864 struct get_key_value_reply
1865 {
1866     struct reply_header __header;
1867     int          type;
1868     size_t       total;
1869     /* VARARG(data,bytes); */
1870 };
1871
1872
1873
1874 struct enum_key_value_request
1875 {
1876     struct request_header __header;
1877     obj_handle_t hkey;
1878     int          index;
1879     int          info_class;
1880 };
1881 struct enum_key_value_reply
1882 {
1883     struct reply_header __header;
1884     int          type;
1885     size_t       total;
1886     size_t       namelen;
1887     /* VARARG(name,unicode_str,namelen); */
1888     /* VARARG(data,bytes); */
1889 };
1890
1891
1892
1893 struct delete_key_value_request
1894 {
1895     struct request_header __header;
1896     obj_handle_t hkey;
1897     /* VARARG(name,unicode_str); */
1898 };
1899 struct delete_key_value_reply
1900 {
1901     struct reply_header __header;
1902 };
1903
1904
1905
1906 struct load_registry_request
1907 {
1908     struct request_header __header;
1909     obj_handle_t hkey;
1910     obj_handle_t file;
1911     /* VARARG(name,unicode_str); */
1912 };
1913 struct load_registry_reply
1914 {
1915     struct reply_header __header;
1916 };
1917
1918
1919
1920 struct save_registry_request
1921 {
1922     struct request_header __header;
1923     obj_handle_t hkey;
1924     obj_handle_t file;
1925 };
1926 struct save_registry_reply
1927 {
1928     struct reply_header __header;
1929 };
1930
1931
1932
1933 struct save_registry_atexit_request
1934 {
1935     struct request_header __header;
1936     obj_handle_t hkey;
1937     /* VARARG(file,string); */
1938 };
1939 struct save_registry_atexit_reply
1940 {
1941     struct reply_header __header;
1942 };
1943
1944
1945
1946 struct set_registry_levels_request
1947 {
1948     struct request_header __header;
1949     int          current;
1950     int          saving;
1951     int          period;
1952 };
1953 struct set_registry_levels_reply
1954 {
1955     struct reply_header __header;
1956 };
1957
1958
1959 struct set_registry_notification_request
1960 {
1961     struct request_header __header;
1962     obj_handle_t hkey;
1963     obj_handle_t event;
1964     int          subtree;
1965     unsigned int filter;
1966 };
1967 struct set_registry_notification_reply
1968 {
1969     struct reply_header __header;
1970 };
1971
1972
1973
1974 struct create_timer_request
1975 {
1976     struct request_header __header;
1977     int          inherit;
1978     int          manual;
1979     /* VARARG(name,unicode_str); */
1980 };
1981 struct create_timer_reply
1982 {
1983     struct reply_header __header;
1984     obj_handle_t handle;
1985 };
1986
1987
1988
1989 struct open_timer_request
1990 {
1991     struct request_header __header;
1992     unsigned int access;
1993     int          inherit;
1994     /* VARARG(name,unicode_str); */
1995 };
1996 struct open_timer_reply
1997 {
1998     struct reply_header __header;
1999     obj_handle_t handle;
2000 };
2001
2002
2003 struct set_timer_request
2004 {
2005     struct request_header __header;
2006     obj_handle_t handle;
2007     abs_time_t   expire;
2008     int          period;
2009     void*        callback;
2010     void*        arg;
2011 };
2012 struct set_timer_reply
2013 {
2014     struct reply_header __header;
2015 };
2016
2017
2018 struct cancel_timer_request
2019 {
2020     struct request_header __header;
2021     obj_handle_t handle;
2022 };
2023 struct cancel_timer_reply
2024 {
2025     struct reply_header __header;
2026 };
2027
2028
2029
2030 struct get_thread_context_request
2031 {
2032     struct request_header __header;
2033     obj_handle_t handle;
2034     unsigned int flags;
2035 };
2036 struct get_thread_context_reply
2037 {
2038     struct reply_header __header;
2039     /* VARARG(context,context); */
2040 };
2041
2042
2043
2044 struct set_thread_context_request
2045 {
2046     struct request_header __header;
2047     obj_handle_t handle;
2048     unsigned int flags;
2049     /* VARARG(context,context); */
2050 };
2051 struct set_thread_context_reply
2052 {
2053     struct reply_header __header;
2054 };
2055
2056
2057
2058 struct get_selector_entry_request
2059 {
2060     struct request_header __header;
2061     obj_handle_t  handle;
2062     int           entry;
2063 };
2064 struct get_selector_entry_reply
2065 {
2066     struct reply_header __header;
2067     unsigned int  base;
2068     unsigned int  limit;
2069     unsigned char flags;
2070 };
2071
2072
2073
2074 struct add_atom_request
2075 {
2076     struct request_header __header;
2077     int           local;
2078     /* VARARG(name,unicode_str); */
2079 };
2080 struct add_atom_reply
2081 {
2082     struct reply_header __header;
2083     atom_t        atom;
2084 };
2085
2086
2087
2088 struct delete_atom_request
2089 {
2090     struct request_header __header;
2091     atom_t        atom;
2092     int           local;
2093 };
2094 struct delete_atom_reply
2095 {
2096     struct reply_header __header;
2097 };
2098
2099
2100
2101 struct find_atom_request
2102 {
2103     struct request_header __header;
2104     int          local;
2105     /* VARARG(name,unicode_str); */
2106 };
2107 struct find_atom_reply
2108 {
2109     struct reply_header __header;
2110     atom_t       atom;
2111 };
2112
2113
2114
2115 struct get_atom_name_request
2116 {
2117     struct request_header __header;
2118     atom_t       atom;
2119     int          local;
2120 };
2121 struct get_atom_name_reply
2122 {
2123     struct reply_header __header;
2124     int          count;
2125     /* VARARG(name,unicode_str); */
2126 };
2127
2128
2129
2130 struct init_atom_table_request
2131 {
2132     struct request_header __header;
2133     int          entries;
2134 };
2135 struct init_atom_table_reply
2136 {
2137     struct reply_header __header;
2138 };
2139
2140
2141
2142 struct get_msg_queue_request
2143 {
2144     struct request_header __header;
2145 };
2146 struct get_msg_queue_reply
2147 {
2148     struct reply_header __header;
2149     obj_handle_t handle;
2150 };
2151
2152
2153
2154 struct set_queue_mask_request
2155 {
2156     struct request_header __header;
2157     unsigned int wake_mask;
2158     unsigned int changed_mask;
2159     int          skip_wait;
2160 };
2161 struct set_queue_mask_reply
2162 {
2163     struct reply_header __header;
2164     unsigned int wake_bits;
2165     unsigned int changed_bits;
2166 };
2167
2168
2169
2170 struct get_queue_status_request
2171 {
2172     struct request_header __header;
2173     int          clear;
2174 };
2175 struct get_queue_status_reply
2176 {
2177     struct reply_header __header;
2178     unsigned int wake_bits;
2179     unsigned int changed_bits;
2180 };
2181
2182
2183
2184 struct wait_input_idle_request
2185 {
2186     struct request_header __header;
2187     obj_handle_t handle;
2188     int          timeout;
2189 };
2190 struct wait_input_idle_reply
2191 {
2192     struct reply_header __header;
2193     obj_handle_t event;
2194 };
2195
2196
2197
2198 struct send_message_request
2199 {
2200     struct request_header __header;
2201     thread_id_t     id;
2202     int             type;
2203     user_handle_t   win;
2204     unsigned int    msg;
2205     unsigned int    wparam;
2206     unsigned int    lparam;
2207     int             x;
2208     int             y;
2209     unsigned int    time;
2210     unsigned int    info;
2211     int             timeout;
2212     /* VARARG(data,bytes); */
2213 };
2214 struct send_message_reply
2215 {
2216     struct reply_header __header;
2217 };
2218
2219 enum message_type
2220 {
2221     MSG_ASCII,
2222     MSG_UNICODE,
2223     MSG_NOTIFY,
2224     MSG_CALLBACK,
2225     MSG_OTHER_PROCESS,
2226     MSG_POSTED,
2227     MSG_HARDWARE
2228 };
2229
2230
2231
2232 struct get_message_request
2233 {
2234     struct request_header __header;
2235     int             flags;
2236     user_handle_t   get_win;
2237     unsigned int    get_first;
2238     unsigned int    get_last;
2239 };
2240 struct get_message_reply
2241 {
2242     struct reply_header __header;
2243     int             type;
2244     user_handle_t   win;
2245     unsigned int    msg;
2246     unsigned int    wparam;
2247     unsigned int    lparam;
2248     int             x;
2249     int             y;
2250     unsigned int    time;
2251     unsigned int    info;
2252     size_t          total;
2253     /* VARARG(data,bytes); */
2254 };
2255 #define GET_MSG_REMOVE      1
2256 #define GET_MSG_SENT_ONLY   2
2257
2258
2259 struct reply_message_request
2260 {
2261     struct request_header __header;
2262     int             type;
2263     unsigned int    result;
2264     int             remove;
2265     /* VARARG(data,bytes); */
2266 };
2267 struct reply_message_reply
2268 {
2269     struct reply_header __header;
2270 };
2271
2272
2273
2274 struct get_message_reply_request
2275 {
2276     struct request_header __header;
2277     int             cancel;
2278 };
2279 struct get_message_reply_reply
2280 {
2281     struct reply_header __header;
2282     unsigned int    result;
2283     /* VARARG(data,bytes); */
2284 };
2285
2286
2287
2288 struct set_win_timer_request
2289 {
2290     struct request_header __header;
2291     user_handle_t   win;
2292     unsigned int    msg;
2293     unsigned int    id;
2294     unsigned int    rate;
2295     unsigned int    lparam;
2296 };
2297 struct set_win_timer_reply
2298 {
2299     struct reply_header __header;
2300 };
2301
2302
2303
2304 struct kill_win_timer_request
2305 {
2306     struct request_header __header;
2307     user_handle_t   win;
2308     unsigned int    msg;
2309     unsigned int    id;
2310 };
2311 struct kill_win_timer_reply
2312 {
2313     struct reply_header __header;
2314 };
2315
2316
2317
2318 struct create_serial_request
2319 {
2320     struct request_header __header;
2321     unsigned int access;
2322     int          inherit;
2323     unsigned int attributes;
2324     unsigned int sharing;
2325     /* VARARG(name,string); */
2326 };
2327 struct create_serial_reply
2328 {
2329     struct reply_header __header;
2330     obj_handle_t handle;
2331 };
2332
2333
2334
2335 struct get_serial_info_request
2336 {
2337     struct request_header __header;
2338     obj_handle_t handle;
2339 };
2340 struct get_serial_info_reply
2341 {
2342     struct reply_header __header;
2343     unsigned int readinterval;
2344     unsigned int readconst;
2345     unsigned int readmult;
2346     unsigned int writeconst;
2347     unsigned int writemult;
2348     unsigned int eventmask;
2349     unsigned int commerror;
2350 };
2351
2352
2353
2354 struct set_serial_info_request
2355 {
2356     struct request_header __header;
2357     obj_handle_t handle;
2358     int          flags;
2359     unsigned int readinterval;
2360     unsigned int readconst;
2361     unsigned int readmult;
2362     unsigned int writeconst;
2363     unsigned int writemult;
2364     unsigned int eventmask;
2365     unsigned int commerror;
2366 };
2367 struct set_serial_info_reply
2368 {
2369     struct reply_header __header;
2370 };
2371 #define SERIALINFO_SET_TIMEOUTS  0x01
2372 #define SERIALINFO_SET_MASK      0x02
2373 #define SERIALINFO_SET_ERROR     0x04
2374
2375
2376
2377 struct register_async_request
2378 {
2379     struct request_header __header;
2380     obj_handle_t handle;
2381     int          type;
2382     void*        overlapped;
2383     int          count;
2384     unsigned int status;
2385 };
2386 struct register_async_reply
2387 {
2388     struct reply_header __header;
2389 };
2390 #define ASYNC_TYPE_NONE  0x00
2391 #define ASYNC_TYPE_READ  0x01
2392 #define ASYNC_TYPE_WRITE 0x02
2393 #define ASYNC_TYPE_WAIT  0x03
2394
2395
2396
2397 struct create_named_pipe_request
2398 {
2399     struct request_header __header;
2400     unsigned int   openmode;
2401     unsigned int   pipemode;
2402     unsigned int   maxinstances;
2403     unsigned int   outsize;
2404     unsigned int   insize;
2405     unsigned int   timeout;
2406     /* VARARG(name,unicode_str); */
2407 };
2408 struct create_named_pipe_reply
2409 {
2410     struct reply_header __header;
2411     obj_handle_t   handle;
2412 };
2413
2414
2415
2416 struct open_named_pipe_request
2417 {
2418     struct request_header __header;
2419     unsigned int   access;
2420     /* VARARG(name,unicode_str); */
2421 };
2422 struct open_named_pipe_reply
2423 {
2424     struct reply_header __header;
2425     obj_handle_t   handle;
2426 };
2427
2428
2429
2430 struct connect_named_pipe_request
2431 {
2432     struct request_header __header;
2433     obj_handle_t   handle;
2434     void*          overlapped;
2435     void*          func;
2436 };
2437 struct connect_named_pipe_reply
2438 {
2439     struct reply_header __header;
2440 };
2441
2442
2443
2444 struct wait_named_pipe_request
2445 {
2446     struct request_header __header;
2447     unsigned int   timeout;
2448     void*          overlapped;
2449     void*          func;
2450     /* VARARG(name,unicode_str); */
2451 };
2452 struct wait_named_pipe_reply
2453 {
2454     struct reply_header __header;
2455 };
2456
2457
2458
2459 struct disconnect_named_pipe_request
2460 {
2461     struct request_header __header;
2462     obj_handle_t   handle;
2463 };
2464 struct disconnect_named_pipe_reply
2465 {
2466     struct reply_header __header;
2467 };
2468
2469
2470 struct get_named_pipe_info_request
2471 {
2472     struct request_header __header;
2473     obj_handle_t   handle;
2474 };
2475 struct get_named_pipe_info_reply
2476 {
2477     struct reply_header __header;
2478     unsigned int   flags;
2479     unsigned int   maxinstances;
2480     unsigned int   outsize;
2481     unsigned int   insize;
2482 };
2483
2484
2485 struct create_smb_request
2486 {
2487     struct request_header __header;
2488     int            fd;
2489     unsigned int   tree_id;
2490     unsigned int   user_id;
2491     unsigned int   file_id;
2492     unsigned int   dialect;
2493 };
2494 struct create_smb_reply
2495 {
2496     struct reply_header __header;
2497     obj_handle_t   handle;
2498 };
2499
2500
2501 struct get_smb_info_request
2502 {
2503     struct request_header __header;
2504     obj_handle_t   handle;
2505     unsigned int   flags;
2506     unsigned int   offset;
2507 };
2508 struct get_smb_info_reply
2509 {
2510     struct reply_header __header;
2511     unsigned int   tree_id;
2512     unsigned int   user_id;
2513     unsigned int   dialect;
2514     unsigned int   file_id;
2515     unsigned int   offset;
2516 };
2517 #define SMBINFO_SET_OFFSET    0x01
2518
2519
2520
2521 struct create_window_request
2522 {
2523     struct request_header __header;
2524     user_handle_t  parent;
2525     user_handle_t  owner;
2526     atom_t         atom;
2527 };
2528 struct create_window_reply
2529 {
2530     struct reply_header __header;
2531     user_handle_t  handle;
2532 };
2533
2534
2535
2536 struct link_window_request
2537 {
2538     struct request_header __header;
2539     user_handle_t  handle;
2540     user_handle_t  parent;
2541     user_handle_t  previous;
2542 };
2543 struct link_window_reply
2544 {
2545     struct reply_header __header;
2546     user_handle_t  full_parent;
2547 };
2548
2549
2550
2551 struct destroy_window_request
2552 {
2553     struct request_header __header;
2554     user_handle_t  handle;
2555 };
2556 struct destroy_window_reply
2557 {
2558     struct reply_header __header;
2559 };
2560
2561
2562
2563 struct set_window_owner_request
2564 {
2565     struct request_header __header;
2566     user_handle_t  handle;
2567     user_handle_t  owner;
2568 };
2569 struct set_window_owner_reply
2570 {
2571     struct reply_header __header;
2572     user_handle_t  full_owner;
2573     user_handle_t  prev_owner;
2574 };
2575
2576
2577
2578 struct get_window_info_request
2579 {
2580     struct request_header __header;
2581     user_handle_t  handle;
2582 };
2583 struct get_window_info_reply
2584 {
2585     struct reply_header __header;
2586     user_handle_t  full_handle;
2587     user_handle_t  last_active;
2588     process_id_t   pid;
2589     thread_id_t    tid;
2590     atom_t         atom;
2591 };
2592
2593
2594
2595 struct set_window_info_request
2596 {
2597     struct request_header __header;
2598     user_handle_t  handle;
2599     unsigned int   flags;
2600     unsigned int   style;
2601     unsigned int   ex_style;
2602     unsigned int   id;
2603     void*          instance;
2604     void*          user_data;
2605 };
2606 struct set_window_info_reply
2607 {
2608     struct reply_header __header;
2609     unsigned int   old_style;
2610     unsigned int   old_ex_style;
2611     unsigned int   old_id;
2612     void*          old_instance;
2613     void*          old_user_data;
2614 };
2615 #define SET_WIN_STYLE     0x01
2616 #define SET_WIN_EXSTYLE   0x02
2617 #define SET_WIN_ID        0x04
2618 #define SET_WIN_INSTANCE  0x08
2619 #define SET_WIN_USERDATA  0x10
2620
2621
2622
2623 struct get_window_parents_request
2624 {
2625     struct request_header __header;
2626     user_handle_t  handle;
2627 };
2628 struct get_window_parents_reply
2629 {
2630     struct reply_header __header;
2631     int            count;
2632     /* VARARG(parents,user_handles); */
2633 };
2634
2635
2636
2637 struct get_window_children_request
2638 {
2639     struct request_header __header;
2640     user_handle_t  parent;
2641     atom_t         atom;
2642     thread_id_t    tid;
2643 };
2644 struct get_window_children_reply
2645 {
2646     struct reply_header __header;
2647     int            count;
2648     /* VARARG(children,user_handles); */
2649 };
2650
2651
2652
2653 struct get_window_tree_request
2654 {
2655     struct request_header __header;
2656     user_handle_t  handle;
2657 };
2658 struct get_window_tree_reply
2659 {
2660     struct reply_header __header;
2661     user_handle_t  parent;
2662     user_handle_t  owner;
2663     user_handle_t  next_sibling;
2664     user_handle_t  prev_sibling;
2665     user_handle_t  first_sibling;
2666     user_handle_t  last_sibling;
2667     user_handle_t  first_child;
2668     user_handle_t  last_child;
2669 };
2670
2671
2672 struct set_window_rectangles_request
2673 {
2674     struct request_header __header;
2675     user_handle_t  handle;
2676     rectangle_t    window;
2677     rectangle_t    client;
2678 };
2679 struct set_window_rectangles_reply
2680 {
2681     struct reply_header __header;
2682 };
2683
2684
2685
2686 struct get_window_rectangles_request
2687 {
2688     struct request_header __header;
2689     user_handle_t  handle;
2690 };
2691 struct get_window_rectangles_reply
2692 {
2693     struct reply_header __header;
2694     rectangle_t    window;
2695     rectangle_t    client;
2696 };
2697
2698
2699
2700 struct get_window_text_request
2701 {
2702     struct request_header __header;
2703     user_handle_t  handle;
2704 };
2705 struct get_window_text_reply
2706 {
2707     struct reply_header __header;
2708     /* VARARG(text,unicode_str); */
2709 };
2710
2711
2712
2713 struct set_window_text_request
2714 {
2715     struct request_header __header;
2716     user_handle_t  handle;
2717     /* VARARG(text,unicode_str); */
2718 };
2719 struct set_window_text_reply
2720 {
2721     struct reply_header __header;
2722 };
2723
2724
2725
2726 struct inc_window_paint_count_request
2727 {
2728     struct request_header __header;
2729     user_handle_t  handle;
2730     int             incr;
2731 };
2732 struct inc_window_paint_count_reply
2733 {
2734     struct reply_header __header;
2735 };
2736
2737
2738
2739 struct get_windows_offset_request
2740 {
2741     struct request_header __header;
2742     user_handle_t  from;
2743     user_handle_t  to;
2744 };
2745 struct get_windows_offset_reply
2746 {
2747     struct reply_header __header;
2748     int            x;
2749     int            y;
2750 };
2751
2752
2753
2754 struct set_window_property_request
2755 {
2756     struct request_header __header;
2757     user_handle_t  window;
2758     atom_t         atom;
2759     int            string;
2760     obj_handle_t   handle;
2761 };
2762 struct set_window_property_reply
2763 {
2764     struct reply_header __header;
2765 };
2766
2767
2768
2769 struct remove_window_property_request
2770 {
2771     struct request_header __header;
2772     user_handle_t  window;
2773     atom_t         atom;
2774 };
2775 struct remove_window_property_reply
2776 {
2777     struct reply_header __header;
2778     obj_handle_t   handle;
2779 };
2780
2781
2782
2783 struct get_window_property_request
2784 {
2785     struct request_header __header;
2786     user_handle_t  window;
2787     atom_t         atom;
2788 };
2789 struct get_window_property_reply
2790 {
2791     struct reply_header __header;
2792     obj_handle_t   handle;
2793 };
2794
2795
2796
2797 struct get_window_properties_request
2798 {
2799     struct request_header __header;
2800     user_handle_t  window;
2801 };
2802 struct get_window_properties_reply
2803 {
2804     struct reply_header __header;
2805     int            total;
2806     /* VARARG(props,properties); */
2807 };
2808
2809
2810
2811 struct attach_thread_input_request
2812 {
2813     struct request_header __header;
2814     thread_id_t    tid_from;
2815     thread_id_t    tid_to;
2816     int            attach;
2817 };
2818 struct attach_thread_input_reply
2819 {
2820     struct reply_header __header;
2821 };
2822
2823
2824
2825 struct get_thread_input_request
2826 {
2827     struct request_header __header;
2828     thread_id_t    tid;
2829 };
2830 struct get_thread_input_reply
2831 {
2832     struct reply_header __header;
2833     user_handle_t  focus;
2834     user_handle_t  capture;
2835     user_handle_t  active;
2836     user_handle_t  foreground;
2837     user_handle_t  menu_owner;
2838     user_handle_t  move_size;
2839     user_handle_t  caret;
2840     rectangle_t    rect;
2841 };
2842
2843
2844 struct get_key_state_request
2845 {
2846     struct request_header __header;
2847     thread_id_t    tid;
2848     int            key;
2849 };
2850 struct get_key_state_reply
2851 {
2852     struct reply_header __header;
2853     unsigned char  state;
2854     /* VARARG(keystate,bytes); */
2855 };
2856
2857
2858 struct set_key_state_request
2859 {
2860     struct request_header __header;
2861     thread_id_t    tid;
2862     /* VARARG(keystate,bytes); */
2863 };
2864 struct set_key_state_reply
2865 {
2866     struct reply_header __header;
2867 };
2868
2869
2870 struct set_foreground_window_request
2871 {
2872     struct request_header __header;
2873     user_handle_t  handle;
2874 };
2875 struct set_foreground_window_reply
2876 {
2877     struct reply_header __header;
2878     user_handle_t  previous;
2879     int            send_msg_old;
2880     int            send_msg_new;
2881 };
2882
2883
2884 struct set_focus_window_request
2885 {
2886     struct request_header __header;
2887     user_handle_t  handle;
2888 };
2889 struct set_focus_window_reply
2890 {
2891     struct reply_header __header;
2892     user_handle_t  previous;
2893 };
2894
2895
2896 struct set_active_window_request
2897 {
2898     struct request_header __header;
2899     user_handle_t  handle;
2900 };
2901 struct set_active_window_reply
2902 {
2903     struct reply_header __header;
2904     user_handle_t  previous;
2905 };
2906
2907
2908 struct set_capture_window_request
2909 {
2910     struct request_header __header;
2911     user_handle_t  handle;
2912     unsigned int   flags;
2913 };
2914 struct set_capture_window_reply
2915 {
2916     struct reply_header __header;
2917     user_handle_t  previous;
2918     user_handle_t  full_handle;
2919 };
2920 #define CAPTURE_MENU     0x01
2921 #define CAPTURE_MOVESIZE 0x02
2922
2923
2924
2925 struct set_caret_window_request
2926 {
2927     struct request_header __header;
2928     user_handle_t  handle;
2929     int            width;
2930     int            height;
2931 };
2932 struct set_caret_window_reply
2933 {
2934     struct reply_header __header;
2935     user_handle_t  previous;
2936     rectangle_t    old_rect;
2937     int            old_hide;
2938     int            old_state;
2939 };
2940
2941
2942
2943 struct set_caret_info_request
2944 {
2945     struct request_header __header;
2946     unsigned int   flags;
2947     user_handle_t  handle;
2948     int            x;
2949     int            y;
2950     int            hide;
2951     int            state;
2952 };
2953 struct set_caret_info_reply
2954 {
2955     struct reply_header __header;
2956     user_handle_t  full_handle;
2957     rectangle_t    old_rect;
2958     int            old_hide;
2959     int            old_state;
2960 };
2961 #define SET_CARET_POS        0x01
2962 #define SET_CARET_HIDE       0x02
2963 #define SET_CARET_STATE      0x04
2964
2965
2966
2967 struct set_hook_request
2968 {
2969     struct request_header __header;
2970     int            id;
2971     thread_id_t    tid;
2972     void*          proc;
2973     int            unicode;
2974     /* VARARG(module,unicode_str); */
2975 };
2976 struct set_hook_reply
2977 {
2978     struct reply_header __header;
2979     user_handle_t  handle;
2980 };
2981
2982
2983
2984 struct remove_hook_request
2985 {
2986     struct request_header __header;
2987     user_handle_t  handle;
2988     int            id;
2989     void*          proc;
2990 };
2991 struct remove_hook_reply
2992 {
2993     struct reply_header __header;
2994 };
2995
2996
2997
2998 struct start_hook_chain_request
2999 {
3000     struct request_header __header;
3001     int            id;
3002 };
3003 struct start_hook_chain_reply
3004 {
3005     struct reply_header __header;
3006     user_handle_t  handle;
3007     void*          proc;
3008     int            unicode;
3009     /* VARARG(module,unicode_str); */
3010 };
3011
3012
3013
3014 struct finish_hook_chain_request
3015 {
3016     struct request_header __header;
3017     int            id;
3018 };
3019 struct finish_hook_chain_reply
3020 {
3021     struct reply_header __header;
3022 };
3023
3024
3025
3026 struct get_next_hook_request
3027 {
3028     struct request_header __header;
3029     user_handle_t  handle;
3030 };
3031 struct get_next_hook_reply
3032 {
3033     struct reply_header __header;
3034     user_handle_t  next;
3035     int            id;
3036     void*          proc;
3037     int            prev_unicode;
3038     int            next_unicode;
3039     /* VARARG(module,unicode_str); */
3040 };
3041
3042
3043 enum request
3044 {
3045     REQ_new_process,
3046     REQ_get_new_process_info,
3047     REQ_new_thread,
3048     REQ_boot_done,
3049     REQ_init_process,
3050     REQ_get_startup_info,
3051     REQ_init_process_done,
3052     REQ_init_thread,
3053     REQ_terminate_process,
3054     REQ_terminate_thread,
3055     REQ_get_process_info,
3056     REQ_set_process_info,
3057     REQ_get_thread_info,
3058     REQ_set_thread_info,
3059     REQ_get_dll_info,
3060     REQ_suspend_thread,
3061     REQ_resume_thread,
3062     REQ_load_dll,
3063     REQ_unload_dll,
3064     REQ_queue_apc,
3065     REQ_get_apc,
3066     REQ_close_handle,
3067     REQ_set_handle_info,
3068     REQ_dup_handle,
3069     REQ_open_process,
3070     REQ_open_thread,
3071     REQ_select,
3072     REQ_create_event,
3073     REQ_event_op,
3074     REQ_open_event,
3075     REQ_create_mutex,
3076     REQ_release_mutex,
3077     REQ_open_mutex,
3078     REQ_create_semaphore,
3079     REQ_release_semaphore,
3080     REQ_open_semaphore,
3081     REQ_create_file,
3082     REQ_alloc_file_handle,
3083     REQ_get_handle_fd,
3084     REQ_set_file_pointer,
3085     REQ_truncate_file,
3086     REQ_set_file_time,
3087     REQ_flush_file,
3088     REQ_get_file_info,
3089     REQ_lock_file,
3090     REQ_unlock_file,
3091     REQ_create_pipe,
3092     REQ_create_socket,
3093     REQ_accept_socket,
3094     REQ_set_socket_event,
3095     REQ_get_socket_event,
3096     REQ_enable_socket_event,
3097     REQ_set_socket_deferred,
3098     REQ_alloc_console,
3099     REQ_free_console,
3100     REQ_get_console_renderer_events,
3101     REQ_open_console,
3102     REQ_get_console_mode,
3103     REQ_set_console_mode,
3104     REQ_set_console_input_info,
3105     REQ_get_console_input_info,
3106     REQ_append_console_input_history,
3107     REQ_get_console_input_history,
3108     REQ_create_console_output,
3109     REQ_set_console_output_info,
3110     REQ_get_console_output_info,
3111     REQ_write_console_input,
3112     REQ_read_console_input,
3113     REQ_write_console_output,
3114     REQ_fill_console_output,
3115     REQ_read_console_output,
3116     REQ_move_console_output,
3117     REQ_send_console_signal,
3118     REQ_create_change_notification,
3119     REQ_next_change_notification,
3120     REQ_create_mapping,
3121     REQ_open_mapping,
3122     REQ_get_mapping_info,
3123     REQ_create_device,
3124     REQ_get_device_id,
3125     REQ_create_snapshot,
3126     REQ_next_process,
3127     REQ_next_thread,
3128     REQ_next_module,
3129     REQ_wait_debug_event,
3130     REQ_queue_exception_event,
3131     REQ_get_exception_status,
3132     REQ_output_debug_string,
3133     REQ_continue_debug_event,
3134     REQ_debug_process,
3135     REQ_debug_break,
3136     REQ_set_debugger_kill_on_exit,
3137     REQ_read_process_memory,
3138     REQ_write_process_memory,
3139     REQ_create_key,
3140     REQ_open_key,
3141     REQ_delete_key,
3142     REQ_enum_key,
3143     REQ_set_key_value,
3144     REQ_get_key_value,
3145     REQ_enum_key_value,
3146     REQ_delete_key_value,
3147     REQ_load_registry,
3148     REQ_save_registry,
3149     REQ_save_registry_atexit,
3150     REQ_set_registry_levels,
3151     REQ_set_registry_notification,
3152     REQ_create_timer,
3153     REQ_open_timer,
3154     REQ_set_timer,
3155     REQ_cancel_timer,
3156     REQ_get_thread_context,
3157     REQ_set_thread_context,
3158     REQ_get_selector_entry,
3159     REQ_add_atom,
3160     REQ_delete_atom,
3161     REQ_find_atom,
3162     REQ_get_atom_name,
3163     REQ_init_atom_table,
3164     REQ_get_msg_queue,
3165     REQ_set_queue_mask,
3166     REQ_get_queue_status,
3167     REQ_wait_input_idle,
3168     REQ_send_message,
3169     REQ_get_message,
3170     REQ_reply_message,
3171     REQ_get_message_reply,
3172     REQ_set_win_timer,
3173     REQ_kill_win_timer,
3174     REQ_create_serial,
3175     REQ_get_serial_info,
3176     REQ_set_serial_info,
3177     REQ_register_async,
3178     REQ_create_named_pipe,
3179     REQ_open_named_pipe,
3180     REQ_connect_named_pipe,
3181     REQ_wait_named_pipe,
3182     REQ_disconnect_named_pipe,
3183     REQ_get_named_pipe_info,
3184     REQ_create_smb,
3185     REQ_get_smb_info,
3186     REQ_create_window,
3187     REQ_link_window,
3188     REQ_destroy_window,
3189     REQ_set_window_owner,
3190     REQ_get_window_info,
3191     REQ_set_window_info,
3192     REQ_get_window_parents,
3193     REQ_get_window_children,
3194     REQ_get_window_tree,
3195     REQ_set_window_rectangles,
3196     REQ_get_window_rectangles,
3197     REQ_get_window_text,
3198     REQ_set_window_text,
3199     REQ_inc_window_paint_count,
3200     REQ_get_windows_offset,
3201     REQ_set_window_property,
3202     REQ_remove_window_property,
3203     REQ_get_window_property,
3204     REQ_get_window_properties,
3205     REQ_attach_thread_input,
3206     REQ_get_thread_input,
3207     REQ_get_key_state,
3208     REQ_set_key_state,
3209     REQ_set_foreground_window,
3210     REQ_set_focus_window,
3211     REQ_set_active_window,
3212     REQ_set_capture_window,
3213     REQ_set_caret_window,
3214     REQ_set_caret_info,
3215     REQ_set_hook,
3216     REQ_remove_hook,
3217     REQ_start_hook_chain,
3218     REQ_finish_hook_chain,
3219     REQ_get_next_hook,
3220     REQ_NB_REQUESTS
3221 };
3222
3223 union generic_request
3224 {
3225     struct request_max_size max_size;
3226     struct request_header request_header;
3227     struct new_process_request new_process_request;
3228     struct get_new_process_info_request get_new_process_info_request;
3229     struct new_thread_request new_thread_request;
3230     struct boot_done_request boot_done_request;
3231     struct init_process_request init_process_request;
3232     struct get_startup_info_request get_startup_info_request;
3233     struct init_process_done_request init_process_done_request;
3234     struct init_thread_request init_thread_request;
3235     struct terminate_process_request terminate_process_request;
3236     struct terminate_thread_request terminate_thread_request;
3237     struct get_process_info_request get_process_info_request;
3238     struct set_process_info_request set_process_info_request;
3239     struct get_thread_info_request get_thread_info_request;
3240     struct set_thread_info_request set_thread_info_request;
3241     struct get_dll_info_request get_dll_info_request;
3242     struct suspend_thread_request suspend_thread_request;
3243     struct resume_thread_request resume_thread_request;
3244     struct load_dll_request load_dll_request;
3245     struct unload_dll_request unload_dll_request;
3246     struct queue_apc_request queue_apc_request;
3247     struct get_apc_request get_apc_request;
3248     struct close_handle_request close_handle_request;
3249     struct set_handle_info_request set_handle_info_request;
3250     struct dup_handle_request dup_handle_request;
3251     struct open_process_request open_process_request;
3252     struct open_thread_request open_thread_request;
3253     struct select_request select_request;
3254     struct create_event_request create_event_request;
3255     struct event_op_request event_op_request;
3256     struct open_event_request open_event_request;
3257     struct create_mutex_request create_mutex_request;
3258     struct release_mutex_request release_mutex_request;
3259     struct open_mutex_request open_mutex_request;
3260     struct create_semaphore_request create_semaphore_request;
3261     struct release_semaphore_request release_semaphore_request;
3262     struct open_semaphore_request open_semaphore_request;
3263     struct create_file_request create_file_request;
3264     struct alloc_file_handle_request alloc_file_handle_request;
3265     struct get_handle_fd_request get_handle_fd_request;
3266     struct set_file_pointer_request set_file_pointer_request;
3267     struct truncate_file_request truncate_file_request;
3268     struct set_file_time_request set_file_time_request;
3269     struct flush_file_request flush_file_request;
3270     struct get_file_info_request get_file_info_request;
3271     struct lock_file_request lock_file_request;
3272     struct unlock_file_request unlock_file_request;
3273     struct create_pipe_request create_pipe_request;
3274     struct create_socket_request create_socket_request;
3275     struct accept_socket_request accept_socket_request;
3276     struct set_socket_event_request set_socket_event_request;
3277     struct get_socket_event_request get_socket_event_request;
3278     struct enable_socket_event_request enable_socket_event_request;
3279     struct set_socket_deferred_request set_socket_deferred_request;
3280     struct alloc_console_request alloc_console_request;
3281     struct free_console_request free_console_request;
3282     struct get_console_renderer_events_request get_console_renderer_events_request;
3283     struct open_console_request open_console_request;
3284     struct get_console_mode_request get_console_mode_request;
3285     struct set_console_mode_request set_console_mode_request;
3286     struct set_console_input_info_request set_console_input_info_request;
3287     struct get_console_input_info_request get_console_input_info_request;
3288     struct append_console_input_history_request append_console_input_history_request;
3289     struct get_console_input_history_request get_console_input_history_request;
3290     struct create_console_output_request create_console_output_request;
3291     struct set_console_output_info_request set_console_output_info_request;
3292     struct get_console_output_info_request get_console_output_info_request;
3293     struct write_console_input_request write_console_input_request;
3294     struct read_console_input_request read_console_input_request;
3295     struct write_console_output_request write_console_output_request;
3296     struct fill_console_output_request fill_console_output_request;
3297     struct read_console_output_request read_console_output_request;
3298     struct move_console_output_request move_console_output_request;
3299     struct send_console_signal_request send_console_signal_request;
3300     struct create_change_notification_request create_change_notification_request;
3301     struct next_change_notification_request next_change_notification_request;
3302     struct create_mapping_request create_mapping_request;
3303     struct open_mapping_request open_mapping_request;
3304     struct get_mapping_info_request get_mapping_info_request;
3305     struct create_device_request create_device_request;
3306     struct get_device_id_request get_device_id_request;
3307     struct create_snapshot_request create_snapshot_request;
3308     struct next_process_request next_process_request;
3309     struct next_thread_request next_thread_request;
3310     struct next_module_request next_module_request;
3311     struct wait_debug_event_request wait_debug_event_request;
3312     struct queue_exception_event_request queue_exception_event_request;
3313     struct get_exception_status_request get_exception_status_request;
3314     struct output_debug_string_request output_debug_string_request;
3315     struct continue_debug_event_request continue_debug_event_request;
3316     struct debug_process_request debug_process_request;
3317     struct debug_break_request debug_break_request;
3318     struct set_debugger_kill_on_exit_request set_debugger_kill_on_exit_request;
3319     struct read_process_memory_request read_process_memory_request;
3320     struct write_process_memory_request write_process_memory_request;
3321     struct create_key_request create_key_request;
3322     struct open_key_request open_key_request;
3323     struct delete_key_request delete_key_request;
3324     struct enum_key_request enum_key_request;
3325     struct set_key_value_request set_key_value_request;
3326     struct get_key_value_request get_key_value_request;
3327     struct enum_key_value_request enum_key_value_request;
3328     struct delete_key_value_request delete_key_value_request;
3329     struct load_registry_request load_registry_request;
3330     struct save_registry_request save_registry_request;
3331     struct save_registry_atexit_request save_registry_atexit_request;
3332     struct set_registry_levels_request set_registry_levels_request;
3333     struct set_registry_notification_request set_registry_notification_request;
3334     struct create_timer_request create_timer_request;
3335     struct open_timer_request open_timer_request;
3336     struct set_timer_request set_timer_request;
3337     struct cancel_timer_request cancel_timer_request;
3338     struct get_thread_context_request get_thread_context_request;
3339     struct set_thread_context_request set_thread_context_request;
3340     struct get_selector_entry_request get_selector_entry_request;
3341     struct add_atom_request add_atom_request;
3342     struct delete_atom_request delete_atom_request;
3343     struct find_atom_request find_atom_request;
3344     struct get_atom_name_request get_atom_name_request;
3345     struct init_atom_table_request init_atom_table_request;
3346     struct get_msg_queue_request get_msg_queue_request;
3347     struct set_queue_mask_request set_queue_mask_request;
3348     struct get_queue_status_request get_queue_status_request;
3349     struct wait_input_idle_request wait_input_idle_request;
3350     struct send_message_request send_message_request;
3351     struct get_message_request get_message_request;
3352     struct reply_message_request reply_message_request;
3353     struct get_message_reply_request get_message_reply_request;
3354     struct set_win_timer_request set_win_timer_request;
3355     struct kill_win_timer_request kill_win_timer_request;
3356     struct create_serial_request create_serial_request;
3357     struct get_serial_info_request get_serial_info_request;
3358     struct set_serial_info_request set_serial_info_request;
3359     struct register_async_request register_async_request;
3360     struct create_named_pipe_request create_named_pipe_request;
3361     struct open_named_pipe_request open_named_pipe_request;
3362     struct connect_named_pipe_request connect_named_pipe_request;
3363     struct wait_named_pipe_request wait_named_pipe_request;
3364     struct disconnect_named_pipe_request disconnect_named_pipe_request;
3365     struct get_named_pipe_info_request get_named_pipe_info_request;
3366     struct create_smb_request create_smb_request;
3367     struct get_smb_info_request get_smb_info_request;
3368     struct create_window_request create_window_request;
3369     struct link_window_request link_window_request;
3370     struct destroy_window_request destroy_window_request;
3371     struct set_window_owner_request set_window_owner_request;
3372     struct get_window_info_request get_window_info_request;
3373     struct set_window_info_request set_window_info_request;
3374     struct get_window_parents_request get_window_parents_request;
3375     struct get_window_children_request get_window_children_request;
3376     struct get_window_tree_request get_window_tree_request;
3377     struct set_window_rectangles_request set_window_rectangles_request;
3378     struct get_window_rectangles_request get_window_rectangles_request;
3379     struct get_window_text_request get_window_text_request;
3380     struct set_window_text_request set_window_text_request;
3381     struct inc_window_paint_count_request inc_window_paint_count_request;
3382     struct get_windows_offset_request get_windows_offset_request;
3383     struct set_window_property_request set_window_property_request;
3384     struct remove_window_property_request remove_window_property_request;
3385     struct get_window_property_request get_window_property_request;
3386     struct get_window_properties_request get_window_properties_request;
3387     struct attach_thread_input_request attach_thread_input_request;
3388     struct get_thread_input_request get_thread_input_request;
3389     struct get_key_state_request get_key_state_request;
3390     struct set_key_state_request set_key_state_request;
3391     struct set_foreground_window_request set_foreground_window_request;
3392     struct set_focus_window_request set_focus_window_request;
3393     struct set_active_window_request set_active_window_request;
3394     struct set_capture_window_request set_capture_window_request;
3395     struct set_caret_window_request set_caret_window_request;
3396     struct set_caret_info_request set_caret_info_request;
3397     struct set_hook_request set_hook_request;
3398     struct remove_hook_request remove_hook_request;
3399     struct start_hook_chain_request start_hook_chain_request;
3400     struct finish_hook_chain_request finish_hook_chain_request;
3401     struct get_next_hook_request get_next_hook_request;
3402 };
3403 union generic_reply
3404 {
3405     struct request_max_size max_size;
3406     struct reply_header reply_header;
3407     struct new_process_reply new_process_reply;
3408     struct get_new_process_info_reply get_new_process_info_reply;
3409     struct new_thread_reply new_thread_reply;
3410     struct boot_done_reply boot_done_reply;
3411     struct init_process_reply init_process_reply;
3412     struct get_startup_info_reply get_startup_info_reply;
3413     struct init_process_done_reply init_process_done_reply;
3414     struct init_thread_reply init_thread_reply;
3415     struct terminate_process_reply terminate_process_reply;
3416     struct terminate_thread_reply terminate_thread_reply;
3417     struct get_process_info_reply get_process_info_reply;
3418     struct set_process_info_reply set_process_info_reply;
3419     struct get_thread_info_reply get_thread_info_reply;
3420     struct set_thread_info_reply set_thread_info_reply;
3421     struct get_dll_info_reply get_dll_info_reply;
3422     struct suspend_thread_reply suspend_thread_reply;
3423     struct resume_thread_reply resume_thread_reply;
3424     struct load_dll_reply load_dll_reply;
3425     struct unload_dll_reply unload_dll_reply;
3426     struct queue_apc_reply queue_apc_reply;
3427     struct get_apc_reply get_apc_reply;
3428     struct close_handle_reply close_handle_reply;
3429     struct set_handle_info_reply set_handle_info_reply;
3430     struct dup_handle_reply dup_handle_reply;
3431     struct open_process_reply open_process_reply;
3432     struct open_thread_reply open_thread_reply;
3433     struct select_reply select_reply;
3434     struct create_event_reply create_event_reply;
3435     struct event_op_reply event_op_reply;
3436     struct open_event_reply open_event_reply;
3437     struct create_mutex_reply create_mutex_reply;
3438     struct release_mutex_reply release_mutex_reply;
3439     struct open_mutex_reply open_mutex_reply;
3440     struct create_semaphore_reply create_semaphore_reply;
3441     struct release_semaphore_reply release_semaphore_reply;
3442     struct open_semaphore_reply open_semaphore_reply;
3443     struct create_file_reply create_file_reply;
3444     struct alloc_file_handle_reply alloc_file_handle_reply;
3445     struct get_handle_fd_reply get_handle_fd_reply;
3446     struct set_file_pointer_reply set_file_pointer_reply;
3447     struct truncate_file_reply truncate_file_reply;
3448     struct set_file_time_reply set_file_time_reply;
3449     struct flush_file_reply flush_file_reply;
3450     struct get_file_info_reply get_file_info_reply;
3451     struct lock_file_reply lock_file_reply;
3452     struct unlock_file_reply unlock_file_reply;
3453     struct create_pipe_reply create_pipe_reply;
3454     struct create_socket_reply create_socket_reply;
3455     struct accept_socket_reply accept_socket_reply;
3456     struct set_socket_event_reply set_socket_event_reply;
3457     struct get_socket_event_reply get_socket_event_reply;
3458     struct enable_socket_event_reply enable_socket_event_reply;
3459     struct set_socket_deferred_reply set_socket_deferred_reply;
3460     struct alloc_console_reply alloc_console_reply;
3461     struct free_console_reply free_console_reply;
3462     struct get_console_renderer_events_reply get_console_renderer_events_reply;
3463     struct open_console_reply open_console_reply;
3464     struct get_console_mode_reply get_console_mode_reply;
3465     struct set_console_mode_reply set_console_mode_reply;
3466     struct set_console_input_info_reply set_console_input_info_reply;
3467     struct get_console_input_info_reply get_console_input_info_reply;
3468     struct append_console_input_history_reply append_console_input_history_reply;
3469     struct get_console_input_history_reply get_console_input_history_reply;
3470     struct create_console_output_reply create_console_output_reply;
3471     struct set_console_output_info_reply set_console_output_info_reply;
3472     struct get_console_output_info_reply get_console_output_info_reply;
3473     struct write_console_input_reply write_console_input_reply;
3474     struct read_console_input_reply read_console_input_reply;
3475     struct write_console_output_reply write_console_output_reply;
3476     struct fill_console_output_reply fill_console_output_reply;
3477     struct read_console_output_reply read_console_output_reply;
3478     struct move_console_output_reply move_console_output_reply;
3479     struct send_console_signal_reply send_console_signal_reply;
3480     struct create_change_notification_reply create_change_notification_reply;
3481     struct next_change_notification_reply next_change_notification_reply;
3482     struct create_mapping_reply create_mapping_reply;
3483     struct open_mapping_reply open_mapping_reply;
3484     struct get_mapping_info_reply get_mapping_info_reply;
3485     struct create_device_reply create_device_reply;
3486     struct get_device_id_reply get_device_id_reply;
3487     struct create_snapshot_reply create_snapshot_reply;
3488     struct next_process_reply next_process_reply;
3489     struct next_thread_reply next_thread_reply;
3490     struct next_module_reply next_module_reply;
3491     struct wait_debug_event_reply wait_debug_event_reply;
3492     struct queue_exception_event_reply queue_exception_event_reply;
3493     struct get_exception_status_reply get_exception_status_reply;
3494     struct output_debug_string_reply output_debug_string_reply;
3495     struct continue_debug_event_reply continue_debug_event_reply;
3496     struct debug_process_reply debug_process_reply;
3497     struct debug_break_reply debug_break_reply;
3498     struct set_debugger_kill_on_exit_reply set_debugger_kill_on_exit_reply;
3499     struct read_process_memory_reply read_process_memory_reply;
3500     struct write_process_memory_reply write_process_memory_reply;
3501     struct create_key_reply create_key_reply;
3502     struct open_key_reply open_key_reply;
3503     struct delete_key_reply delete_key_reply;
3504     struct enum_key_reply enum_key_reply;
3505     struct set_key_value_reply set_key_value_reply;
3506     struct get_key_value_reply get_key_value_reply;
3507     struct enum_key_value_reply enum_key_value_reply;
3508     struct delete_key_value_reply delete_key_value_reply;
3509     struct load_registry_reply load_registry_reply;
3510     struct save_registry_reply save_registry_reply;
3511     struct save_registry_atexit_reply save_registry_atexit_reply;
3512     struct set_registry_levels_reply set_registry_levels_reply;
3513     struct set_registry_notification_reply set_registry_notification_reply;
3514     struct create_timer_reply create_timer_reply;
3515     struct open_timer_reply open_timer_reply;
3516     struct set_timer_reply set_timer_reply;
3517     struct cancel_timer_reply cancel_timer_reply;
3518     struct get_thread_context_reply get_thread_context_reply;
3519     struct set_thread_context_reply set_thread_context_reply;
3520     struct get_selector_entry_reply get_selector_entry_reply;
3521     struct add_atom_reply add_atom_reply;
3522     struct delete_atom_reply delete_atom_reply;
3523     struct find_atom_reply find_atom_reply;
3524     struct get_atom_name_reply get_atom_name_reply;
3525     struct init_atom_table_reply init_atom_table_reply;
3526     struct get_msg_queue_reply get_msg_queue_reply;
3527     struct set_queue_mask_reply set_queue_mask_reply;
3528     struct get_queue_status_reply get_queue_status_reply;
3529     struct wait_input_idle_reply wait_input_idle_reply;
3530     struct send_message_reply send_message_reply;
3531     struct get_message_reply get_message_reply;
3532     struct reply_message_reply reply_message_reply;
3533     struct get_message_reply_reply get_message_reply_reply;
3534     struct set_win_timer_reply set_win_timer_reply;
3535     struct kill_win_timer_reply kill_win_timer_reply;
3536     struct create_serial_reply create_serial_reply;
3537     struct get_serial_info_reply get_serial_info_reply;
3538     struct set_serial_info_reply set_serial_info_reply;
3539     struct register_async_reply register_async_reply;
3540     struct create_named_pipe_reply create_named_pipe_reply;
3541     struct open_named_pipe_reply open_named_pipe_reply;
3542     struct connect_named_pipe_reply connect_named_pipe_reply;
3543     struct wait_named_pipe_reply wait_named_pipe_reply;
3544     struct disconnect_named_pipe_reply disconnect_named_pipe_reply;
3545     struct get_named_pipe_info_reply get_named_pipe_info_reply;
3546     struct create_smb_reply create_smb_reply;
3547     struct get_smb_info_reply get_smb_info_reply;
3548     struct create_window_reply create_window_reply;
3549     struct link_window_reply link_window_reply;
3550     struct destroy_window_reply destroy_window_reply;
3551     struct set_window_owner_reply set_window_owner_reply;
3552     struct get_window_info_reply get_window_info_reply;
3553     struct set_window_info_reply set_window_info_reply;
3554     struct get_window_parents_reply get_window_parents_reply;
3555     struct get_window_children_reply get_window_children_reply;
3556     struct get_window_tree_reply get_window_tree_reply;
3557     struct set_window_rectangles_reply set_window_rectangles_reply;
3558     struct get_window_rectangles_reply get_window_rectangles_reply;
3559     struct get_window_text_reply get_window_text_reply;
3560     struct set_window_text_reply set_window_text_reply;
3561     struct inc_window_paint_count_reply inc_window_paint_count_reply;
3562     struct get_windows_offset_reply get_windows_offset_reply;
3563     struct set_window_property_reply set_window_property_reply;
3564     struct remove_window_property_reply remove_window_property_reply;
3565     struct get_window_property_reply get_window_property_reply;
3566     struct get_window_properties_reply get_window_properties_reply;
3567     struct attach_thread_input_reply attach_thread_input_reply;
3568     struct get_thread_input_reply get_thread_input_reply;
3569     struct get_key_state_reply get_key_state_reply;
3570     struct set_key_state_reply set_key_state_reply;
3571     struct set_foreground_window_reply set_foreground_window_reply;
3572     struct set_focus_window_reply set_focus_window_reply;
3573     struct set_active_window_reply set_active_window_reply;
3574     struct set_capture_window_reply set_capture_window_reply;
3575     struct set_caret_window_reply set_caret_window_reply;
3576     struct set_caret_info_reply set_caret_info_reply;
3577     struct set_hook_reply set_hook_reply;
3578     struct remove_hook_reply remove_hook_reply;
3579     struct start_hook_chain_reply start_hook_chain_reply;
3580     struct finish_hook_chain_reply finish_hook_chain_reply;
3581     struct get_next_hook_reply get_next_hook_reply;
3582 };
3583
3584 #define SERVER_PROTOCOL_VERSION 105
3585
3586 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */