server: Remove the no longer needed exe_file parameter in the
[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 <stdarg.h>
12 #include <stdlib.h>
13 #include <time.h>
14
15 #include <windef.h>
16 #include <winbase.h>
17
18 struct request_header
19 {
20     int          req;
21     size_t       request_size;
22     size_t       reply_size;
23 };
24
25 struct reply_header
26 {
27     unsigned int error;
28     size_t       reply_size;
29 };
30
31
32
33 struct request_max_size
34 {
35     int pad[16];
36 };
37
38 typedef void *obj_handle_t;
39 typedef void *user_handle_t;
40 typedef unsigned short atom_t;
41 typedef unsigned int process_id_t;
42 typedef unsigned int thread_id_t;
43
44 #define FIRST_USER_HANDLE 0x0020
45 #define LAST_USER_HANDLE  0xffef
46
47
48
49 struct debug_event_exception
50 {
51     EXCEPTION_RECORD record;
52     int              first;
53 };
54 struct debug_event_create_thread
55 {
56     obj_handle_t handle;
57     void        *teb;
58     void        *start;
59 };
60 struct debug_event_create_process
61 {
62     obj_handle_t file;
63     obj_handle_t process;
64     obj_handle_t thread;
65     void        *base;
66     int          dbg_offset;
67     int          dbg_size;
68     void        *teb;
69     void        *start;
70     void        *name;
71     int          unicode;
72 };
73 struct debug_event_exit
74 {
75     int          exit_code;
76 };
77 struct debug_event_load_dll
78 {
79     obj_handle_t handle;
80     void        *base;
81     int          dbg_offset;
82     int          dbg_size;
83     void        *name;
84     int          unicode;
85 };
86 struct debug_event_unload_dll
87 {
88     void       *base;
89 };
90 struct debug_event_output_string
91 {
92     void       *string;
93     int         unicode;
94     int         length;
95 };
96 struct debug_event_rip_info
97 {
98     int         error;
99     int         type;
100 };
101 union debug_event_data
102 {
103     struct debug_event_exception      exception;
104     struct debug_event_create_thread  create_thread;
105     struct debug_event_create_process create_process;
106     struct debug_event_exit           exit;
107     struct debug_event_load_dll       load_dll;
108     struct debug_event_unload_dll     unload_dll;
109     struct debug_event_output_string  output_string;
110     struct debug_event_rip_info       rip_info;
111 };
112
113
114 typedef struct
115 {
116     int                      code;
117     union debug_event_data   info;
118 } debug_event_t;
119
120
121 struct send_fd
122 {
123     thread_id_t tid;
124     int         fd;
125 };
126
127
128 struct wake_up_reply
129 {
130     void *cookie;
131     int   signaled;
132 };
133
134
135 typedef struct
136 {
137     int            sec;
138     int            usec;
139 } abs_time_t;
140
141
142 typedef struct
143 {
144     atom_t         atom;
145     short          string;
146     obj_handle_t   handle;
147 } property_data_t;
148
149
150 typedef struct
151 {
152     int  left;
153     int  top;
154     int  right;
155     int  bottom;
156 } rectangle_t;
157
158
159 typedef struct
160 {
161     WCHAR          ch;
162     unsigned short attr;
163 } char_info_t;
164
165 #define MAX_ACL_LEN 65535
166
167 struct security_descriptor
168 {
169     unsigned int control;
170     size_t owner_len;
171     size_t group_len;
172     size_t sacl_len;
173     size_t dacl_len;
174
175
176
177
178 };
179
180
181
182
183
184 struct new_process_request
185 {
186     struct request_header __header;
187     int          inherit_all;
188     unsigned int create_flags;
189     int          unix_pid;
190     obj_handle_t exe_file;
191     obj_handle_t hstdin;
192     obj_handle_t hstdout;
193     obj_handle_t hstderr;
194     /* VARARG(info,startup_info); */
195     /* VARARG(env,unicode_str); */
196 };
197 struct new_process_reply
198 {
199     struct reply_header __header;
200     obj_handle_t info;
201 };
202
203
204
205 struct get_new_process_info_request
206 {
207     struct request_header __header;
208     obj_handle_t info;
209     unsigned int process_access;
210     unsigned int process_attr;
211     unsigned int thread_access;
212     unsigned int thread_attr;
213 };
214 struct get_new_process_info_reply
215 {
216     struct reply_header __header;
217     process_id_t pid;
218     obj_handle_t phandle;
219     thread_id_t  tid;
220     obj_handle_t thandle;
221     int          success;
222 };
223
224
225
226 struct new_thread_request
227 {
228     struct request_header __header;
229     unsigned int access;
230     unsigned int attributes;
231     int          suspend;
232     int          request_fd;
233 };
234 struct new_thread_reply
235 {
236     struct reply_header __header;
237     thread_id_t  tid;
238     obj_handle_t handle;
239 };
240
241
242
243 struct get_startup_info_request
244 {
245     struct request_header __header;
246 };
247 struct get_startup_info_reply
248 {
249     struct reply_header __header;
250     obj_handle_t exe_file;
251     obj_handle_t hstdin;
252     obj_handle_t hstdout;
253     obj_handle_t hstderr;
254     /* VARARG(info,startup_info); */
255     /* VARARG(env,unicode_str); */
256 };
257
258
259
260 struct init_process_done_request
261 {
262     struct request_header __header;
263     void*        module;
264     size_t       module_size;
265     void*        entry;
266     void*        name;
267     int          gui;
268     /* VARARG(filename,unicode_str); */
269 };
270 struct init_process_done_reply
271 {
272     struct reply_header __header;
273 };
274
275
276
277 struct init_thread_request
278 {
279     struct request_header __header;
280     int          unix_pid;
281     int          unix_tid;
282     void*        teb;
283     void*        peb;
284     void*        entry;
285     void*        ldt_copy;
286     int          reply_fd;
287     int          wait_fd;
288     int          debug_level;
289 };
290 struct init_thread_reply
291 {
292     struct reply_header __header;
293     process_id_t pid;
294     thread_id_t  tid;
295     size_t       info_size;
296     time_t       server_start;
297     int          version;
298 };
299
300
301
302 struct terminate_process_request
303 {
304     struct request_header __header;
305     obj_handle_t handle;
306     int          exit_code;
307 };
308 struct terminate_process_reply
309 {
310     struct reply_header __header;
311     int          self;
312 };
313
314
315
316 struct terminate_thread_request
317 {
318     struct request_header __header;
319     obj_handle_t handle;
320     int          exit_code;
321 };
322 struct terminate_thread_reply
323 {
324     struct reply_header __header;
325     int          self;
326     int          last;
327 };
328
329
330
331 struct get_process_info_request
332 {
333     struct request_header __header;
334     obj_handle_t handle;
335 };
336 struct get_process_info_reply
337 {
338     struct reply_header __header;
339     process_id_t pid;
340     process_id_t ppid;
341     int          exit_code;
342     int          priority;
343     int          affinity;
344     void*        peb;
345 };
346
347
348
349 struct set_process_info_request
350 {
351     struct request_header __header;
352     obj_handle_t handle;
353     int          mask;
354     int          priority;
355     int          affinity;
356 };
357 struct set_process_info_reply
358 {
359     struct reply_header __header;
360 };
361 #define SET_PROCESS_INFO_PRIORITY 0x01
362 #define SET_PROCESS_INFO_AFFINITY 0x02
363
364
365
366 struct get_thread_info_request
367 {
368     struct request_header __header;
369     obj_handle_t handle;
370     thread_id_t  tid_in;
371 };
372 struct get_thread_info_reply
373 {
374     struct reply_header __header;
375     process_id_t pid;
376     thread_id_t  tid;
377     void*        teb;
378     int          exit_code;
379     int          priority;
380     int          affinity;
381     time_t       creation_time;
382     time_t       exit_time;
383 };
384
385
386
387 struct set_thread_info_request
388 {
389     struct request_header __header;
390     obj_handle_t handle;
391     int          mask;
392     int          priority;
393     int          affinity;
394     obj_handle_t token;
395 };
396 struct set_thread_info_reply
397 {
398     struct reply_header __header;
399 };
400 #define SET_THREAD_INFO_PRIORITY 0x01
401 #define SET_THREAD_INFO_AFFINITY 0x02
402 #define SET_THREAD_INFO_TOKEN    0x04
403
404
405
406 struct get_dll_info_request
407 {
408     struct request_header __header;
409     obj_handle_t handle;
410     void*        base_address;
411 };
412 struct get_dll_info_reply
413 {
414     struct reply_header __header;
415     size_t       size;
416     void*        entry_point;
417     /* VARARG(filename,unicode_str); */
418 };
419
420
421
422 struct suspend_thread_request
423 {
424     struct request_header __header;
425     obj_handle_t handle;
426 };
427 struct suspend_thread_reply
428 {
429     struct reply_header __header;
430     int          count;
431 };
432
433
434
435 struct resume_thread_request
436 {
437     struct request_header __header;
438     obj_handle_t handle;
439 };
440 struct resume_thread_reply
441 {
442     struct reply_header __header;
443     int          count;
444 };
445
446
447
448 struct load_dll_request
449 {
450     struct request_header __header;
451     obj_handle_t handle;
452     void*        base;
453     size_t       size;
454     int          dbg_offset;
455     int          dbg_size;
456     void*        name;
457     /* VARARG(filename,unicode_str); */
458 };
459 struct load_dll_reply
460 {
461     struct reply_header __header;
462 };
463
464
465
466 struct unload_dll_request
467 {
468     struct request_header __header;
469     void*        base;
470 };
471 struct unload_dll_reply
472 {
473     struct reply_header __header;
474 };
475
476
477
478 struct queue_apc_request
479 {
480     struct request_header __header;
481     obj_handle_t handle;
482     int          user;
483     void*        func;
484     void*        arg1;
485     void*        arg2;
486     void*        arg3;
487 };
488 struct queue_apc_reply
489 {
490     struct reply_header __header;
491 };
492
493
494
495 struct get_apc_request
496 {
497     struct request_header __header;
498     int          alertable;
499 };
500 struct get_apc_reply
501 {
502     struct reply_header __header;
503     void*        func;
504     int          type;
505     void*        arg1;
506     void*        arg2;
507     void*        arg3;
508 };
509 enum apc_type { APC_NONE, APC_USER, APC_TIMER, APC_ASYNC_IO };
510
511
512
513 struct close_handle_request
514 {
515     struct request_header __header;
516     obj_handle_t handle;
517 };
518 struct close_handle_reply
519 {
520     struct reply_header __header;
521     int          fd;
522 };
523
524
525
526 struct set_handle_info_request
527 {
528     struct request_header __header;
529     obj_handle_t handle;
530     int          flags;
531     int          mask;
532 };
533 struct set_handle_info_reply
534 {
535     struct reply_header __header;
536     int          old_flags;
537 };
538
539
540
541 struct dup_handle_request
542 {
543     struct request_header __header;
544     obj_handle_t src_process;
545     obj_handle_t src_handle;
546     obj_handle_t dst_process;
547     unsigned int access;
548     unsigned int attributes;
549     unsigned int options;
550 };
551 struct dup_handle_reply
552 {
553     struct reply_header __header;
554     obj_handle_t handle;
555     int          fd;
556 };
557 #define DUP_HANDLE_CLOSE_SOURCE  DUPLICATE_CLOSE_SOURCE
558 #define DUP_HANDLE_SAME_ACCESS   DUPLICATE_SAME_ACCESS
559 #define DUP_HANDLE_MAKE_GLOBAL   0x80000000
560
561
562
563 struct open_process_request
564 {
565     struct request_header __header;
566     process_id_t pid;
567     unsigned int access;
568     unsigned int attributes;
569 };
570 struct open_process_reply
571 {
572     struct reply_header __header;
573     obj_handle_t handle;
574 };
575
576
577
578 struct open_thread_request
579 {
580     struct request_header __header;
581     thread_id_t  tid;
582     unsigned int access;
583     unsigned int attributes;
584 };
585 struct open_thread_reply
586 {
587     struct reply_header __header;
588     obj_handle_t handle;
589 };
590
591
592
593 struct select_request
594 {
595     struct request_header __header;
596     int          flags;
597     void*        cookie;
598     obj_handle_t signal;
599     abs_time_t   timeout;
600     /* VARARG(handles,handles); */
601 };
602 struct select_reply
603 {
604     struct reply_header __header;
605 };
606 #define SELECT_ALL           1
607 #define SELECT_ALERTABLE     2
608 #define SELECT_INTERRUPTIBLE 4
609 #define SELECT_TIMEOUT       8
610
611
612
613 struct create_event_request
614 {
615     struct request_header __header;
616     unsigned int access;
617     unsigned int attributes;
618     obj_handle_t rootdir;
619     int          manual_reset;
620     int          initial_state;
621     /* VARARG(name,unicode_str); */
622 };
623 struct create_event_reply
624 {
625     struct reply_header __header;
626     obj_handle_t handle;
627 };
628
629
630 struct event_op_request
631 {
632     struct request_header __header;
633     obj_handle_t  handle;
634     int           op;
635 };
636 struct event_op_reply
637 {
638     struct reply_header __header;
639 };
640 enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
641
642
643
644 struct open_event_request
645 {
646     struct request_header __header;
647     unsigned int access;
648     unsigned int attributes;
649     obj_handle_t rootdir;
650     /* VARARG(name,unicode_str); */
651 };
652 struct open_event_reply
653 {
654     struct reply_header __header;
655     obj_handle_t handle;
656 };
657
658
659
660 struct create_mutex_request
661 {
662     struct request_header __header;
663     unsigned int access;
664     unsigned int attributes;
665     obj_handle_t rootdir;
666     int          owned;
667     /* VARARG(name,unicode_str); */
668 };
669 struct create_mutex_reply
670 {
671     struct reply_header __header;
672     obj_handle_t handle;
673 };
674
675
676
677 struct release_mutex_request
678 {
679     struct request_header __header;
680     obj_handle_t handle;
681 };
682 struct release_mutex_reply
683 {
684     struct reply_header __header;
685     unsigned int prev_count;
686 };
687
688
689
690 struct open_mutex_request
691 {
692     struct request_header __header;
693     unsigned int access;
694     unsigned int attributes;
695     obj_handle_t rootdir;
696     /* VARARG(name,unicode_str); */
697 };
698 struct open_mutex_reply
699 {
700     struct reply_header __header;
701     obj_handle_t handle;
702 };
703
704
705
706 struct create_semaphore_request
707 {
708     struct request_header __header;
709     unsigned int access;
710     unsigned int attributes;
711     obj_handle_t rootdir;
712     unsigned int initial;
713     unsigned int max;
714     /* VARARG(name,unicode_str); */
715 };
716 struct create_semaphore_reply
717 {
718     struct reply_header __header;
719     obj_handle_t handle;
720 };
721
722
723
724 struct release_semaphore_request
725 {
726     struct request_header __header;
727     obj_handle_t handle;
728     unsigned int count;
729 };
730 struct release_semaphore_reply
731 {
732     struct reply_header __header;
733     unsigned int prev_count;
734 };
735
736
737
738 struct open_semaphore_request
739 {
740     struct request_header __header;
741     unsigned int access;
742     unsigned int attributes;
743     obj_handle_t rootdir;
744     /* VARARG(name,unicode_str); */
745 };
746 struct open_semaphore_reply
747 {
748     struct reply_header __header;
749     obj_handle_t handle;
750 };
751
752
753
754 struct create_file_request
755 {
756     struct request_header __header;
757     unsigned int access;
758     unsigned int attributes;
759     unsigned int sharing;
760     int          create;
761     unsigned int options;
762     unsigned int attrs;
763     /* VARARG(filename,string); */
764 };
765 struct create_file_reply
766 {
767     struct reply_header __header;
768     obj_handle_t handle;
769 };
770
771
772
773 struct open_file_object_request
774 {
775     struct request_header __header;
776     unsigned int access;
777     unsigned int attributes;
778     obj_handle_t rootdir;
779     unsigned int sharing;
780     /* VARARG(filename,unicode_str); */
781 };
782 struct open_file_object_reply
783 {
784     struct reply_header __header;
785     obj_handle_t handle;
786 };
787
788
789
790 struct alloc_file_handle_request
791 {
792     struct request_header __header;
793     unsigned int access;
794     unsigned int attributes;
795     int          fd;
796 };
797 struct alloc_file_handle_reply
798 {
799     struct reply_header __header;
800     obj_handle_t handle;
801 };
802
803
804
805 struct get_handle_fd_request
806 {
807     struct request_header __header;
808     obj_handle_t handle;
809     unsigned int access;
810 };
811 struct get_handle_fd_reply
812 {
813     struct reply_header __header;
814     int          fd;
815     int          removable;
816     int          flags;
817 };
818 #define FD_FLAG_OVERLAPPED         0x01
819 #define FD_FLAG_TIMEOUT            0x02
820 #define FD_FLAG_RECV_SHUTDOWN      0x04
821 #define FD_FLAG_SEND_SHUTDOWN      0x08
822 #define FD_FLAG_AVAILABLE          0x10 /* in overlap read/write operation,
823                                          * only handle available data (don't wait) */
824
825
826 struct set_handle_fd_request
827 {
828     struct request_header __header;
829     obj_handle_t handle;
830     int          fd;
831     int          removable;
832 };
833 struct set_handle_fd_reply
834 {
835     struct reply_header __header;
836     int          cur_fd;
837 };
838
839
840
841 struct flush_file_request
842 {
843     struct request_header __header;
844     obj_handle_t handle;
845 };
846 struct flush_file_reply
847 {
848     struct reply_header __header;
849     obj_handle_t event;
850 };
851
852
853
854 struct lock_file_request
855 {
856     struct request_header __header;
857     obj_handle_t handle;
858     unsigned int offset_low;
859     unsigned int offset_high;
860     unsigned int count_low;
861     unsigned int count_high;
862     int          shared;
863     int          wait;
864 };
865 struct lock_file_reply
866 {
867     struct reply_header __header;
868     obj_handle_t handle;
869     int          overlapped;
870 };
871
872
873
874 struct unlock_file_request
875 {
876     struct request_header __header;
877     obj_handle_t handle;
878     unsigned int offset_low;
879     unsigned int offset_high;
880     unsigned int count_low;
881     unsigned int count_high;
882 };
883 struct unlock_file_reply
884 {
885     struct reply_header __header;
886 };
887
888
889
890 struct unmount_device_request
891 {
892     struct request_header __header;
893     obj_handle_t handle;
894 };
895 struct unmount_device_reply
896 {
897     struct reply_header __header;
898 };
899
900
901
902 struct create_socket_request
903 {
904     struct request_header __header;
905     unsigned int access;
906     unsigned int attributes;
907     int          family;
908     int          type;
909     int          protocol;
910     unsigned int flags;
911 };
912 struct create_socket_reply
913 {
914     struct reply_header __header;
915     obj_handle_t handle;
916 };
917
918
919
920 struct accept_socket_request
921 {
922     struct request_header __header;
923     obj_handle_t lhandle;
924     unsigned int access;
925     unsigned int attributes;
926 };
927 struct accept_socket_reply
928 {
929     struct reply_header __header;
930     obj_handle_t handle;
931 };
932
933
934
935 struct set_socket_event_request
936 {
937     struct request_header __header;
938     obj_handle_t  handle;
939     unsigned int  mask;
940     obj_handle_t  event;
941     user_handle_t window;
942     unsigned int  msg;
943 };
944 struct set_socket_event_reply
945 {
946     struct reply_header __header;
947 };
948
949
950
951 struct get_socket_event_request
952 {
953     struct request_header __header;
954     obj_handle_t handle;
955     int          service;
956     obj_handle_t c_event;
957 };
958 struct get_socket_event_reply
959 {
960     struct reply_header __header;
961     unsigned int mask;
962     unsigned int pmask;
963     unsigned int state;
964     /* VARARG(errors,ints); */
965 };
966
967
968
969 struct enable_socket_event_request
970 {
971     struct request_header __header;
972     obj_handle_t handle;
973     unsigned int mask;
974     unsigned int sstate;
975     unsigned int cstate;
976 };
977 struct enable_socket_event_reply
978 {
979     struct reply_header __header;
980 };
981
982 struct set_socket_deferred_request
983 {
984     struct request_header __header;
985     obj_handle_t handle;
986     obj_handle_t deferred;
987 };
988 struct set_socket_deferred_reply
989 {
990     struct reply_header __header;
991 };
992
993
994 struct alloc_console_request
995 {
996     struct request_header __header;
997     unsigned int access;
998     unsigned int attributes;
999     process_id_t pid;
1000 };
1001 struct alloc_console_reply
1002 {
1003     struct reply_header __header;
1004     obj_handle_t handle_in;
1005     obj_handle_t event;
1006 };
1007
1008
1009
1010 struct free_console_request
1011 {
1012     struct request_header __header;
1013 };
1014 struct free_console_reply
1015 {
1016     struct reply_header __header;
1017 };
1018
1019
1020 #define CONSOLE_RENDERER_NONE_EVENT        0x00
1021 #define CONSOLE_RENDERER_TITLE_EVENT       0x01
1022 #define CONSOLE_RENDERER_ACTIVE_SB_EVENT   0x02
1023 #define CONSOLE_RENDERER_SB_RESIZE_EVENT   0x03
1024 #define CONSOLE_RENDERER_UPDATE_EVENT      0x04
1025 #define CONSOLE_RENDERER_CURSOR_POS_EVENT  0x05
1026 #define CONSOLE_RENDERER_CURSOR_GEOM_EVENT 0x06
1027 #define CONSOLE_RENDERER_DISPLAY_EVENT     0x07
1028 #define CONSOLE_RENDERER_EXIT_EVENT        0x08
1029 struct console_renderer_event
1030 {
1031     short event;
1032     union
1033     {
1034         struct update
1035         {
1036             short top;
1037             short bottom;
1038         } update;
1039         struct resize
1040         {
1041             short width;
1042             short height;
1043         } resize;
1044         struct cursor_pos
1045         {
1046             short x;
1047             short y;
1048         } cursor_pos;
1049         struct cursor_geom
1050         {
1051             short visible;
1052             short size;
1053         } cursor_geom;
1054         struct display
1055         {
1056             short left;
1057             short top;
1058             short width;
1059             short height;
1060         } display;
1061     } u;
1062 };
1063
1064
1065 struct get_console_renderer_events_request
1066 {
1067     struct request_header __header;
1068     obj_handle_t handle;
1069 };
1070 struct get_console_renderer_events_reply
1071 {
1072     struct reply_header __header;
1073     /* VARARG(data,bytes); */
1074 };
1075
1076
1077
1078 struct open_console_request
1079 {
1080     struct request_header __header;
1081     int          from;
1082
1083     unsigned int access;
1084     unsigned int attributes;
1085     int          share;
1086 };
1087 struct open_console_reply
1088 {
1089     struct reply_header __header;
1090     obj_handle_t handle;
1091 };
1092
1093
1094
1095 struct get_console_wait_event_request
1096 {
1097     struct request_header __header;
1098 };
1099 struct get_console_wait_event_reply
1100 {
1101     struct reply_header __header;
1102     obj_handle_t handle;
1103 };
1104
1105
1106 struct get_console_mode_request
1107 {
1108     struct request_header __header;
1109     obj_handle_t handle;
1110 };
1111 struct get_console_mode_reply
1112 {
1113     struct reply_header __header;
1114     int          mode;
1115 };
1116
1117
1118
1119 struct set_console_mode_request
1120 {
1121     struct request_header __header;
1122     obj_handle_t handle;
1123     int          mode;
1124 };
1125 struct set_console_mode_reply
1126 {
1127     struct reply_header __header;
1128 };
1129
1130
1131
1132 struct set_console_input_info_request
1133 {
1134     struct request_header __header;
1135     obj_handle_t handle;
1136     int          mask;
1137     obj_handle_t active_sb;
1138     int          history_mode;
1139     int          history_size;
1140     int          edition_mode;
1141     /* VARARG(title,unicode_str); */
1142 };
1143 struct set_console_input_info_reply
1144 {
1145     struct reply_header __header;
1146 };
1147 #define SET_CONSOLE_INPUT_INFO_ACTIVE_SB        0x01
1148 #define SET_CONSOLE_INPUT_INFO_TITLE            0x02
1149 #define SET_CONSOLE_INPUT_INFO_HISTORY_MODE     0x04
1150 #define SET_CONSOLE_INPUT_INFO_HISTORY_SIZE     0x08
1151 #define SET_CONSOLE_INPUT_INFO_EDITION_MODE     0x10
1152
1153
1154
1155 struct get_console_input_info_request
1156 {
1157     struct request_header __header;
1158     obj_handle_t handle;
1159 };
1160 struct get_console_input_info_reply
1161 {
1162     struct reply_header __header;
1163     int          history_mode;
1164     int          history_size;
1165     int          history_index;
1166     int          edition_mode;
1167     /* VARARG(title,unicode_str); */
1168 };
1169
1170
1171
1172 struct append_console_input_history_request
1173 {
1174     struct request_header __header;
1175     obj_handle_t handle;
1176     /* VARARG(line,unicode_str); */
1177 };
1178 struct append_console_input_history_reply
1179 {
1180     struct reply_header __header;
1181 };
1182
1183
1184
1185 struct get_console_input_history_request
1186 {
1187     struct request_header __header;
1188     obj_handle_t handle;
1189     int          index;
1190 };
1191 struct get_console_input_history_reply
1192 {
1193     struct reply_header __header;
1194     int          total;
1195     /* VARARG(line,unicode_str); */
1196 };
1197
1198
1199
1200 struct create_console_output_request
1201 {
1202     struct request_header __header;
1203     obj_handle_t handle_in;
1204     unsigned int access;
1205     unsigned int attributes;
1206     unsigned int share;
1207 };
1208 struct create_console_output_reply
1209 {
1210     struct reply_header __header;
1211     obj_handle_t handle_out;
1212 };
1213
1214
1215
1216 struct set_console_output_info_request
1217 {
1218     struct request_header __header;
1219     obj_handle_t handle;
1220     int          mask;
1221     short int    cursor_size;
1222     short int    cursor_visible;
1223     short int    cursor_x;
1224     short int    cursor_y;
1225     short int    width;
1226     short int    height;
1227     short int    attr;
1228     short int    win_left;
1229     short int    win_top;
1230     short int    win_right;
1231     short int    win_bottom;
1232     short int    max_width;
1233     short int    max_height;
1234 };
1235 struct set_console_output_info_reply
1236 {
1237     struct reply_header __header;
1238 };
1239 #define SET_CONSOLE_OUTPUT_INFO_CURSOR_GEOM     0x01
1240 #define SET_CONSOLE_OUTPUT_INFO_CURSOR_POS      0x02
1241 #define SET_CONSOLE_OUTPUT_INFO_SIZE            0x04
1242 #define SET_CONSOLE_OUTPUT_INFO_ATTR            0x08
1243 #define SET_CONSOLE_OUTPUT_INFO_DISPLAY_WINDOW  0x10
1244 #define SET_CONSOLE_OUTPUT_INFO_MAX_SIZE        0x20
1245
1246
1247
1248 struct get_console_output_info_request
1249 {
1250     struct request_header __header;
1251     obj_handle_t handle;
1252 };
1253 struct get_console_output_info_reply
1254 {
1255     struct reply_header __header;
1256     short int    cursor_size;
1257     short int    cursor_visible;
1258     short int    cursor_x;
1259     short int    cursor_y;
1260     short int    width;
1261     short int    height;
1262     short int    attr;
1263     short int    win_left;
1264     short int    win_top;
1265     short int    win_right;
1266     short int    win_bottom;
1267     short int    max_width;
1268     short int    max_height;
1269 };
1270
1271
1272 struct write_console_input_request
1273 {
1274     struct request_header __header;
1275     obj_handle_t handle;
1276     /* VARARG(rec,input_records); */
1277 };
1278 struct write_console_input_reply
1279 {
1280     struct reply_header __header;
1281     int          written;
1282 };
1283
1284
1285
1286 struct read_console_input_request
1287 {
1288     struct request_header __header;
1289     obj_handle_t handle;
1290     int          flush;
1291 };
1292 struct read_console_input_reply
1293 {
1294     struct reply_header __header;
1295     int          read;
1296     /* VARARG(rec,input_records); */
1297 };
1298
1299
1300
1301 struct write_console_output_request
1302 {
1303     struct request_header __header;
1304     obj_handle_t handle;
1305     int          x;
1306     int          y;
1307     int          mode;
1308     int          wrap;
1309     /* VARARG(data,bytes); */
1310 };
1311 struct write_console_output_reply
1312 {
1313     struct reply_header __header;
1314     int          written;
1315     int          width;
1316     int          height;
1317 };
1318 enum char_info_mode
1319 {
1320     CHAR_INFO_MODE_TEXT,
1321     CHAR_INFO_MODE_ATTR,
1322     CHAR_INFO_MODE_TEXTATTR,
1323     CHAR_INFO_MODE_TEXTSTDATTR
1324 };
1325
1326
1327
1328 struct fill_console_output_request
1329 {
1330     struct request_header __header;
1331     obj_handle_t handle;
1332     int          x;
1333     int          y;
1334     int          mode;
1335     int          count;
1336     int          wrap;
1337     char_info_t  data;
1338 };
1339 struct fill_console_output_reply
1340 {
1341     struct reply_header __header;
1342     int          written;
1343 };
1344
1345
1346
1347 struct read_console_output_request
1348 {
1349     struct request_header __header;
1350     obj_handle_t handle;
1351     int          x;
1352     int          y;
1353     int          mode;
1354     int          wrap;
1355 };
1356 struct read_console_output_reply
1357 {
1358     struct reply_header __header;
1359     int          width;
1360     int          height;
1361     /* VARARG(data,bytes); */
1362 };
1363
1364
1365
1366 struct move_console_output_request
1367 {
1368     struct request_header __header;
1369     obj_handle_t handle;
1370     short int    x_src;
1371     short int    y_src;
1372     short int    x_dst;
1373     short int    y_dst;
1374     short int    w;
1375     short int    h;
1376 };
1377 struct move_console_output_reply
1378 {
1379     struct reply_header __header;
1380 };
1381
1382
1383
1384 struct send_console_signal_request
1385 {
1386     struct request_header __header;
1387     int          signal;
1388     process_id_t group_id;
1389 };
1390 struct send_console_signal_reply
1391 {
1392     struct reply_header __header;
1393 };
1394
1395
1396
1397 struct read_directory_changes_request
1398 {
1399     struct request_header __header;
1400     obj_handle_t handle;
1401     obj_handle_t event;
1402     unsigned int filter;
1403     int          want_data;
1404     void*        io_apc;
1405     void*        io_sb;
1406     void*        io_user;
1407 };
1408 struct read_directory_changes_reply
1409 {
1410     struct reply_header __header;
1411 };
1412
1413
1414 struct read_change_request
1415 {
1416     struct request_header __header;
1417     obj_handle_t handle;
1418 };
1419 struct read_change_reply
1420 {
1421     struct reply_header __header;
1422     int          action;
1423     /* VARARG(name,string); */
1424 };
1425
1426
1427
1428 struct create_mapping_request
1429 {
1430     struct request_header __header;
1431     unsigned int access;
1432     unsigned int attributes;
1433     obj_handle_t rootdir;
1434     int          size_high;
1435     int          size_low;
1436     int          protect;
1437     obj_handle_t file_handle;
1438     /* VARARG(name,unicode_str); */
1439 };
1440 struct create_mapping_reply
1441 {
1442     struct reply_header __header;
1443     obj_handle_t handle;
1444 };
1445
1446 #define VPROT_READ       0x01
1447 #define VPROT_WRITE      0x02
1448 #define VPROT_EXEC       0x04
1449 #define VPROT_WRITECOPY  0x08
1450 #define VPROT_GUARD      0x10
1451 #define VPROT_NOCACHE    0x20
1452 #define VPROT_COMMITTED  0x40
1453 #define VPROT_IMAGE      0x80
1454
1455
1456
1457 struct open_mapping_request
1458 {
1459     struct request_header __header;
1460     unsigned int access;
1461     unsigned int attributes;
1462     obj_handle_t rootdir;
1463     /* VARARG(name,unicode_str); */
1464 };
1465 struct open_mapping_reply
1466 {
1467     struct reply_header __header;
1468     obj_handle_t handle;
1469 };
1470
1471
1472
1473 struct get_mapping_info_request
1474 {
1475     struct request_header __header;
1476     obj_handle_t handle;
1477 };
1478 struct get_mapping_info_reply
1479 {
1480     struct reply_header __header;
1481     int          size_high;
1482     int          size_low;
1483     int          protect;
1484     int          header_size;
1485     void*        base;
1486     obj_handle_t shared_file;
1487     int          shared_size;
1488 };
1489
1490
1491 #define SNAP_HEAPLIST   0x00000001
1492 #define SNAP_PROCESS    0x00000002
1493 #define SNAP_THREAD     0x00000004
1494 #define SNAP_MODULE     0x00000008
1495
1496 struct create_snapshot_request
1497 {
1498     struct request_header __header;
1499     unsigned int attributes;
1500     int          flags;
1501     process_id_t pid;
1502 };
1503 struct create_snapshot_reply
1504 {
1505     struct reply_header __header;
1506     obj_handle_t handle;
1507 };
1508
1509
1510
1511 struct next_process_request
1512 {
1513     struct request_header __header;
1514     obj_handle_t handle;
1515     int          reset;
1516 };
1517 struct next_process_reply
1518 {
1519     struct reply_header __header;
1520     int          count;
1521     process_id_t pid;
1522     process_id_t ppid;
1523     void*        heap;
1524     void*        module;
1525     int          threads;
1526     int          priority;
1527     int          handles;
1528     /* VARARG(filename,unicode_str); */
1529 };
1530
1531
1532
1533 struct next_thread_request
1534 {
1535     struct request_header __header;
1536     obj_handle_t handle;
1537     int          reset;
1538 };
1539 struct next_thread_reply
1540 {
1541     struct reply_header __header;
1542     int          count;
1543     process_id_t pid;
1544     thread_id_t  tid;
1545     int          base_pri;
1546     int          delta_pri;
1547 };
1548
1549
1550
1551 struct next_module_request
1552 {
1553     struct request_header __header;
1554     obj_handle_t handle;
1555     int          reset;
1556 };
1557 struct next_module_reply
1558 {
1559     struct reply_header __header;
1560     process_id_t pid;
1561     void*        base;
1562     size_t       size;
1563     /* VARARG(filename,unicode_str); */
1564 };
1565
1566
1567
1568 struct wait_debug_event_request
1569 {
1570     struct request_header __header;
1571     int           get_handle;
1572 };
1573 struct wait_debug_event_reply
1574 {
1575     struct reply_header __header;
1576     process_id_t  pid;
1577     thread_id_t   tid;
1578     obj_handle_t  wait;
1579     /* VARARG(event,debug_event); */
1580 };
1581
1582
1583
1584 struct queue_exception_event_request
1585 {
1586     struct request_header __header;
1587     int              first;
1588     /* VARARG(record,exc_event); */
1589 };
1590 struct queue_exception_event_reply
1591 {
1592     struct reply_header __header;
1593     obj_handle_t     handle;
1594 };
1595
1596
1597
1598 struct get_exception_status_request
1599 {
1600     struct request_header __header;
1601     obj_handle_t     handle;
1602 };
1603 struct get_exception_status_reply
1604 {
1605     struct reply_header __header;
1606     /* VARARG(context,context); */
1607 };
1608
1609
1610
1611 struct output_debug_string_request
1612 {
1613     struct request_header __header;
1614     void*         string;
1615     int           unicode;
1616     int           length;
1617 };
1618 struct output_debug_string_reply
1619 {
1620     struct reply_header __header;
1621 };
1622
1623
1624
1625 struct continue_debug_event_request
1626 {
1627     struct request_header __header;
1628     process_id_t pid;
1629     thread_id_t  tid;
1630     int          status;
1631 };
1632 struct continue_debug_event_reply
1633 {
1634     struct reply_header __header;
1635 };
1636
1637
1638
1639 struct debug_process_request
1640 {
1641     struct request_header __header;
1642     process_id_t pid;
1643     int          attach;
1644 };
1645 struct debug_process_reply
1646 {
1647     struct reply_header __header;
1648 };
1649
1650
1651
1652 struct debug_break_request
1653 {
1654     struct request_header __header;
1655     obj_handle_t handle;
1656 };
1657 struct debug_break_reply
1658 {
1659     struct reply_header __header;
1660     int          self;
1661 };
1662
1663
1664
1665 struct set_debugger_kill_on_exit_request
1666 {
1667     struct request_header __header;
1668     int          kill_on_exit;
1669 };
1670 struct set_debugger_kill_on_exit_reply
1671 {
1672     struct reply_header __header;
1673 };
1674
1675
1676
1677 struct read_process_memory_request
1678 {
1679     struct request_header __header;
1680     obj_handle_t handle;
1681     void*        addr;
1682 };
1683 struct read_process_memory_reply
1684 {
1685     struct reply_header __header;
1686     /* VARARG(data,bytes); */
1687 };
1688
1689
1690
1691 struct write_process_memory_request
1692 {
1693     struct request_header __header;
1694     obj_handle_t handle;
1695     void*        addr;
1696     unsigned int first_mask;
1697     unsigned int last_mask;
1698     /* VARARG(data,bytes); */
1699 };
1700 struct write_process_memory_reply
1701 {
1702     struct reply_header __header;
1703 };
1704
1705
1706
1707 struct create_key_request
1708 {
1709     struct request_header __header;
1710     obj_handle_t parent;
1711     unsigned int access;
1712     unsigned int attributes;
1713     unsigned int options;
1714     time_t       modif;
1715     size_t       namelen;
1716     /* VARARG(name,unicode_str,namelen); */
1717     /* VARARG(class,unicode_str); */
1718 };
1719 struct create_key_reply
1720 {
1721     struct reply_header __header;
1722     obj_handle_t hkey;
1723     int          created;
1724 };
1725
1726
1727 struct open_key_request
1728 {
1729     struct request_header __header;
1730     obj_handle_t parent;
1731     unsigned int access;
1732     unsigned int attributes;
1733     /* VARARG(name,unicode_str); */
1734 };
1735 struct open_key_reply
1736 {
1737     struct reply_header __header;
1738     obj_handle_t hkey;
1739 };
1740
1741
1742
1743 struct delete_key_request
1744 {
1745     struct request_header __header;
1746     obj_handle_t hkey;
1747 };
1748 struct delete_key_reply
1749 {
1750     struct reply_header __header;
1751 };
1752
1753
1754
1755 struct flush_key_request
1756 {
1757     struct request_header __header;
1758     obj_handle_t hkey;
1759 };
1760 struct flush_key_reply
1761 {
1762     struct reply_header __header;
1763 };
1764
1765
1766
1767 struct enum_key_request
1768 {
1769     struct request_header __header;
1770     obj_handle_t hkey;
1771     int          index;
1772     int          info_class;
1773 };
1774 struct enum_key_reply
1775 {
1776     struct reply_header __header;
1777     int          subkeys;
1778     int          max_subkey;
1779     int          max_class;
1780     int          values;
1781     int          max_value;
1782     int          max_data;
1783     time_t       modif;
1784     size_t       total;
1785     size_t       namelen;
1786     /* VARARG(name,unicode_str,namelen); */
1787     /* VARARG(class,unicode_str); */
1788 };
1789
1790
1791
1792 struct set_key_value_request
1793 {
1794     struct request_header __header;
1795     obj_handle_t hkey;
1796     int          type;
1797     size_t       namelen;
1798     /* VARARG(name,unicode_str,namelen); */
1799     /* VARARG(data,bytes); */
1800 };
1801 struct set_key_value_reply
1802 {
1803     struct reply_header __header;
1804 };
1805
1806
1807
1808 struct get_key_value_request
1809 {
1810     struct request_header __header;
1811     obj_handle_t hkey;
1812     /* VARARG(name,unicode_str); */
1813 };
1814 struct get_key_value_reply
1815 {
1816     struct reply_header __header;
1817     int          type;
1818     size_t       total;
1819     /* VARARG(data,bytes); */
1820 };
1821
1822
1823
1824 struct enum_key_value_request
1825 {
1826     struct request_header __header;
1827     obj_handle_t hkey;
1828     int          index;
1829     int          info_class;
1830 };
1831 struct enum_key_value_reply
1832 {
1833     struct reply_header __header;
1834     int          type;
1835     size_t       total;
1836     size_t       namelen;
1837     /* VARARG(name,unicode_str,namelen); */
1838     /* VARARG(data,bytes); */
1839 };
1840
1841
1842
1843 struct delete_key_value_request
1844 {
1845     struct request_header __header;
1846     obj_handle_t hkey;
1847     /* VARARG(name,unicode_str); */
1848 };
1849 struct delete_key_value_reply
1850 {
1851     struct reply_header __header;
1852 };
1853
1854
1855
1856 struct load_registry_request
1857 {
1858     struct request_header __header;
1859     obj_handle_t hkey;
1860     obj_handle_t file;
1861     /* VARARG(name,unicode_str); */
1862 };
1863 struct load_registry_reply
1864 {
1865     struct reply_header __header;
1866 };
1867
1868
1869
1870 struct unload_registry_request
1871 {
1872     struct request_header __header;
1873     obj_handle_t hkey;
1874 };
1875 struct unload_registry_reply
1876 {
1877     struct reply_header __header;
1878 };
1879
1880
1881
1882 struct save_registry_request
1883 {
1884     struct request_header __header;
1885     obj_handle_t hkey;
1886     obj_handle_t file;
1887 };
1888 struct save_registry_reply
1889 {
1890     struct reply_header __header;
1891 };
1892
1893
1894
1895 struct set_registry_notification_request
1896 {
1897     struct request_header __header;
1898     obj_handle_t hkey;
1899     obj_handle_t event;
1900     int          subtree;
1901     unsigned int filter;
1902 };
1903 struct set_registry_notification_reply
1904 {
1905     struct reply_header __header;
1906 };
1907
1908
1909
1910 struct create_timer_request
1911 {
1912     struct request_header __header;
1913     unsigned int access;
1914     unsigned int attributes;
1915     obj_handle_t rootdir;
1916     int          manual;
1917     /* VARARG(name,unicode_str); */
1918 };
1919 struct create_timer_reply
1920 {
1921     struct reply_header __header;
1922     obj_handle_t handle;
1923 };
1924
1925
1926
1927 struct open_timer_request
1928 {
1929     struct request_header __header;
1930     unsigned int access;
1931     unsigned int attributes;
1932     obj_handle_t rootdir;
1933     /* VARARG(name,unicode_str); */
1934 };
1935 struct open_timer_reply
1936 {
1937     struct reply_header __header;
1938     obj_handle_t handle;
1939 };
1940
1941
1942 struct set_timer_request
1943 {
1944     struct request_header __header;
1945     obj_handle_t handle;
1946     abs_time_t   expire;
1947     int          period;
1948     void*        callback;
1949     void*        arg;
1950 };
1951 struct set_timer_reply
1952 {
1953     struct reply_header __header;
1954     int          signaled;
1955 };
1956
1957
1958 struct cancel_timer_request
1959 {
1960     struct request_header __header;
1961     obj_handle_t handle;
1962 };
1963 struct cancel_timer_reply
1964 {
1965     struct reply_header __header;
1966      int         signaled;
1967 };
1968
1969
1970 struct get_timer_info_request
1971 {
1972     struct request_header __header;
1973     obj_handle_t handle;
1974 };
1975 struct get_timer_info_reply
1976 {
1977     struct reply_header __header;
1978     abs_time_t   when;
1979     int          signaled;
1980 };
1981
1982
1983
1984 struct get_thread_context_request
1985 {
1986     struct request_header __header;
1987     obj_handle_t handle;
1988     unsigned int flags;
1989     int          suspend;
1990 };
1991 struct get_thread_context_reply
1992 {
1993     struct reply_header __header;
1994     int          self;
1995     /* VARARG(context,context); */
1996 };
1997
1998
1999
2000 struct set_thread_context_request
2001 {
2002     struct request_header __header;
2003     obj_handle_t handle;
2004     unsigned int flags;
2005     int          suspend;
2006     /* VARARG(context,context); */
2007 };
2008 struct set_thread_context_reply
2009 {
2010     struct reply_header __header;
2011     int          self;
2012 };
2013
2014
2015
2016 struct get_selector_entry_request
2017 {
2018     struct request_header __header;
2019     obj_handle_t  handle;
2020     int           entry;
2021 };
2022 struct get_selector_entry_reply
2023 {
2024     struct reply_header __header;
2025     unsigned int  base;
2026     unsigned int  limit;
2027     unsigned char flags;
2028 };
2029
2030
2031
2032 struct add_atom_request
2033 {
2034     struct request_header __header;
2035     obj_handle_t  table;
2036     /* VARARG(name,unicode_str); */
2037 };
2038 struct add_atom_reply
2039 {
2040     struct reply_header __header;
2041     atom_t        atom;
2042 };
2043
2044
2045
2046 struct delete_atom_request
2047 {
2048     struct request_header __header;
2049     obj_handle_t  table;
2050     atom_t        atom;
2051 };
2052 struct delete_atom_reply
2053 {
2054     struct reply_header __header;
2055 };
2056
2057
2058
2059 struct find_atom_request
2060 {
2061     struct request_header __header;
2062     obj_handle_t table;
2063     /* VARARG(name,unicode_str); */
2064 };
2065 struct find_atom_reply
2066 {
2067     struct reply_header __header;
2068     atom_t       atom;
2069 };
2070
2071
2072
2073 struct get_atom_information_request
2074 {
2075     struct request_header __header;
2076     obj_handle_t table;
2077     atom_t       atom;
2078 };
2079 struct get_atom_information_reply
2080 {
2081     struct reply_header __header;
2082     int          count;
2083     int          pinned;
2084     size_t       total;
2085     /* VARARG(name,unicode_str); */
2086 };
2087
2088
2089
2090 struct set_atom_information_request
2091 {
2092     struct request_header __header;
2093     obj_handle_t table;
2094     atom_t       atom;
2095     int          pinned;
2096 };
2097 struct set_atom_information_reply
2098 {
2099     struct reply_header __header;
2100 };
2101
2102
2103
2104 struct empty_atom_table_request
2105 {
2106     struct request_header __header;
2107     obj_handle_t table;
2108     int          if_pinned;
2109 };
2110 struct empty_atom_table_reply
2111 {
2112     struct reply_header __header;
2113 };
2114
2115
2116
2117 struct init_atom_table_request
2118 {
2119     struct request_header __header;
2120     int          entries;
2121 };
2122 struct init_atom_table_reply
2123 {
2124     struct reply_header __header;
2125     obj_handle_t table;
2126 };
2127
2128
2129
2130 struct get_msg_queue_request
2131 {
2132     struct request_header __header;
2133 };
2134 struct get_msg_queue_reply
2135 {
2136     struct reply_header __header;
2137     obj_handle_t handle;
2138 };
2139
2140
2141
2142 struct set_queue_mask_request
2143 {
2144     struct request_header __header;
2145     unsigned int wake_mask;
2146     unsigned int changed_mask;
2147     int          skip_wait;
2148 };
2149 struct set_queue_mask_reply
2150 {
2151     struct reply_header __header;
2152     unsigned int wake_bits;
2153     unsigned int changed_bits;
2154 };
2155
2156
2157
2158 struct get_queue_status_request
2159 {
2160     struct request_header __header;
2161     int          clear;
2162 };
2163 struct get_queue_status_reply
2164 {
2165     struct reply_header __header;
2166     unsigned int wake_bits;
2167     unsigned int changed_bits;
2168 };
2169
2170
2171
2172 struct wait_input_idle_request
2173 {
2174     struct request_header __header;
2175     obj_handle_t handle;
2176     int          timeout;
2177 };
2178 struct wait_input_idle_reply
2179 {
2180     struct reply_header __header;
2181     obj_handle_t event;
2182 };
2183
2184
2185
2186 struct send_message_request
2187 {
2188     struct request_header __header;
2189     thread_id_t     id;
2190     int             type;
2191     int             flags;
2192     user_handle_t   win;
2193     unsigned int    msg;
2194     unsigned int    wparam;
2195     unsigned int    lparam;
2196     int             x;
2197     int             y;
2198     unsigned int    time;
2199     unsigned int    info;
2200     int             timeout;
2201     void*           callback;
2202     /* VARARG(data,bytes); */
2203 };
2204 struct send_message_reply
2205 {
2206     struct reply_header __header;
2207 };
2208
2209 struct post_quit_message_request
2210 {
2211     struct request_header __header;
2212     int             exit_code;
2213 };
2214 struct post_quit_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_CALLBACK_RESULT,
2226     MSG_OTHER_PROCESS,
2227     MSG_POSTED,
2228     MSG_HARDWARE,
2229     MSG_WINEVENT
2230 };
2231 #define SEND_MSG_ABORT_IF_HUNG  0x01
2232
2233
2234
2235 struct get_message_request
2236 {
2237     struct request_header __header;
2238     int             flags;
2239     user_handle_t   get_win;
2240     unsigned int    get_first;
2241     unsigned int    get_last;
2242     unsigned int    hw_id;
2243 };
2244 struct get_message_reply
2245 {
2246     struct reply_header __header;
2247     int             type;
2248     user_handle_t   win;
2249     unsigned int    msg;
2250     unsigned int    wparam;
2251     unsigned int    lparam;
2252     int             x;
2253     int             y;
2254     user_handle_t   hook;
2255     void*           hook_proc;
2256     unsigned int    time;
2257     unsigned int    info;
2258     unsigned int    hw_id;
2259     unsigned int    active_hooks;
2260     size_t          total;
2261     /* VARARG(data,bytes); */
2262 };
2263 #define GET_MSG_REMOVE      1
2264 #define GET_MSG_SENT_ONLY   2
2265
2266
2267 struct reply_message_request
2268 {
2269     struct request_header __header;
2270     unsigned int    result;
2271     int             remove;
2272     /* VARARG(data,bytes); */
2273 };
2274 struct reply_message_reply
2275 {
2276     struct reply_header __header;
2277 };
2278
2279
2280
2281 struct accept_hardware_message_request
2282 {
2283     struct request_header __header;
2284     unsigned int    hw_id;
2285     int             remove;
2286     user_handle_t   new_win;
2287 };
2288 struct accept_hardware_message_reply
2289 {
2290     struct reply_header __header;
2291 };
2292
2293
2294
2295 struct get_message_reply_request
2296 {
2297     struct request_header __header;
2298     int             cancel;
2299 };
2300 struct get_message_reply_reply
2301 {
2302     struct reply_header __header;
2303     unsigned int    result;
2304     /* VARARG(data,bytes); */
2305 };
2306
2307
2308
2309 struct set_win_timer_request
2310 {
2311     struct request_header __header;
2312     user_handle_t   win;
2313     unsigned int    msg;
2314     unsigned int    id;
2315     unsigned int    rate;
2316     unsigned int    lparam;
2317 };
2318 struct set_win_timer_reply
2319 {
2320     struct reply_header __header;
2321     unsigned int    id;
2322 };
2323
2324
2325
2326 struct kill_win_timer_request
2327 {
2328     struct request_header __header;
2329     user_handle_t   win;
2330     unsigned int    msg;
2331     unsigned int    id;
2332 };
2333 struct kill_win_timer_reply
2334 {
2335     struct reply_header __header;
2336 };
2337
2338
2339
2340 struct get_serial_info_request
2341 {
2342     struct request_header __header;
2343     obj_handle_t handle;
2344 };
2345 struct get_serial_info_reply
2346 {
2347     struct reply_header __header;
2348     unsigned int readinterval;
2349     unsigned int readconst;
2350     unsigned int readmult;
2351     unsigned int writeconst;
2352     unsigned int writemult;
2353     unsigned int eventmask;
2354     unsigned int commerror;
2355 };
2356
2357
2358
2359 struct set_serial_info_request
2360 {
2361     struct request_header __header;
2362     obj_handle_t handle;
2363     int          flags;
2364     unsigned int readinterval;
2365     unsigned int readconst;
2366     unsigned int readmult;
2367     unsigned int writeconst;
2368     unsigned int writemult;
2369     unsigned int eventmask;
2370     unsigned int commerror;
2371 };
2372 struct set_serial_info_reply
2373 {
2374     struct reply_header __header;
2375 };
2376 #define SERIALINFO_SET_TIMEOUTS  0x01
2377 #define SERIALINFO_SET_MASK      0x02
2378 #define SERIALINFO_SET_ERROR     0x04
2379
2380
2381
2382 struct register_async_request
2383 {
2384     struct request_header __header;
2385     obj_handle_t handle;
2386     int          type;
2387     void*        io_apc;
2388     void*        io_sb;
2389     void*        io_user;
2390     int          count;
2391 };
2392 struct register_async_reply
2393 {
2394     struct reply_header __header;
2395 };
2396 #define ASYNC_TYPE_READ  0x01
2397 #define ASYNC_TYPE_WRITE 0x02
2398 #define ASYNC_TYPE_WAIT  0x03
2399
2400
2401
2402 struct cancel_async_request
2403 {
2404     struct request_header __header;
2405     obj_handle_t handle;
2406 };
2407 struct cancel_async_reply
2408 {
2409     struct reply_header __header;
2410 };
2411
2412
2413
2414 struct create_named_pipe_request
2415 {
2416     struct request_header __header;
2417     unsigned int   access;
2418     unsigned int   attributes;
2419     obj_handle_t   rootdir;
2420     unsigned int   options;
2421     unsigned int   flags;
2422     unsigned int   maxinstances;
2423     unsigned int   outsize;
2424     unsigned int   insize;
2425     unsigned int   timeout;
2426     /* VARARG(name,unicode_str); */
2427 };
2428 struct create_named_pipe_reply
2429 {
2430     struct reply_header __header;
2431     obj_handle_t   handle;
2432 };
2433
2434
2435 #define NAMED_PIPE_MESSAGE_STREAM_WRITE 0x0001
2436 #define NAMED_PIPE_MESSAGE_STREAM_READ  0x0002
2437 #define NAMED_PIPE_NONBLOCKING_MODE     0x0004
2438
2439
2440
2441 struct open_named_pipe_request
2442 {
2443     struct request_header __header;
2444     unsigned int   access;
2445     unsigned int   attributes;
2446     obj_handle_t   rootdir;
2447     unsigned int   flags;
2448     /* VARARG(name,unicode_str); */
2449 };
2450 struct open_named_pipe_reply
2451 {
2452     struct reply_header __header;
2453     obj_handle_t   handle;
2454 };
2455
2456
2457
2458 struct connect_named_pipe_request
2459 {
2460     struct request_header __header;
2461     obj_handle_t   handle;
2462     obj_handle_t   event;
2463     void*          func;
2464 };
2465 struct connect_named_pipe_reply
2466 {
2467     struct reply_header __header;
2468 };
2469
2470
2471
2472 struct wait_named_pipe_request
2473 {
2474     struct request_header __header;
2475     obj_handle_t   handle;
2476     unsigned int   timeout;
2477     obj_handle_t   event;
2478     void*          func;
2479     /* VARARG(name,unicode_str); */
2480 };
2481 struct wait_named_pipe_reply
2482 {
2483     struct reply_header __header;
2484 };
2485
2486
2487
2488 struct disconnect_named_pipe_request
2489 {
2490     struct request_header __header;
2491     obj_handle_t   handle;
2492 };
2493 struct disconnect_named_pipe_reply
2494 {
2495     struct reply_header __header;
2496     int            fd;
2497 };
2498
2499
2500 struct get_named_pipe_info_request
2501 {
2502     struct request_header __header;
2503     obj_handle_t   handle;
2504 };
2505 struct get_named_pipe_info_reply
2506 {
2507     struct reply_header __header;
2508     unsigned int   flags;
2509     unsigned int   maxinstances;
2510     unsigned int   outsize;
2511     unsigned int   insize;
2512 };
2513
2514
2515
2516 struct create_window_request
2517 {
2518     struct request_header __header;
2519     user_handle_t  parent;
2520     user_handle_t  owner;
2521     atom_t         atom;
2522     void*          instance;
2523 };
2524 struct create_window_reply
2525 {
2526     struct reply_header __header;
2527     user_handle_t  handle;
2528     int            extra;
2529     void*          class_ptr;
2530 };
2531
2532
2533
2534 struct destroy_window_request
2535 {
2536     struct request_header __header;
2537     user_handle_t  handle;
2538 };
2539 struct destroy_window_reply
2540 {
2541     struct reply_header __header;
2542 };
2543
2544
2545
2546 struct get_desktop_window_request
2547 {
2548     struct request_header __header;
2549 };
2550 struct get_desktop_window_reply
2551 {
2552     struct reply_header __header;
2553     user_handle_t  handle;
2554 };
2555
2556
2557
2558 struct set_window_owner_request
2559 {
2560     struct request_header __header;
2561     user_handle_t  handle;
2562     user_handle_t  owner;
2563 };
2564 struct set_window_owner_reply
2565 {
2566     struct reply_header __header;
2567     user_handle_t  full_owner;
2568     user_handle_t  prev_owner;
2569 };
2570
2571
2572
2573 struct get_window_info_request
2574 {
2575     struct request_header __header;
2576     user_handle_t  handle;
2577 };
2578 struct get_window_info_reply
2579 {
2580     struct reply_header __header;
2581     user_handle_t  full_handle;
2582     user_handle_t  last_active;
2583     process_id_t   pid;
2584     thread_id_t    tid;
2585     atom_t         atom;
2586     int            is_unicode;
2587 };
2588
2589
2590
2591 struct set_window_info_request
2592 {
2593     struct request_header __header;
2594     user_handle_t  handle;
2595     unsigned int   flags;
2596     unsigned int   style;
2597     unsigned int   ex_style;
2598     unsigned int   id;
2599     void*          instance;
2600     int            is_unicode;
2601     void*          user_data;
2602     int            extra_offset;
2603     size_t         extra_size;
2604     unsigned int   extra_value;
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     unsigned int   old_extra_value;
2615 };
2616 #define SET_WIN_STYLE     0x01
2617 #define SET_WIN_EXSTYLE   0x02
2618 #define SET_WIN_ID        0x04
2619 #define SET_WIN_INSTANCE  0x08
2620 #define SET_WIN_USERDATA  0x10
2621 #define SET_WIN_EXTRA     0x20
2622 #define SET_WIN_UNICODE   0x40
2623
2624
2625
2626 struct set_parent_request
2627 {
2628     struct request_header __header;
2629     user_handle_t  handle;
2630     user_handle_t  parent;
2631 };
2632 struct set_parent_reply
2633 {
2634     struct reply_header __header;
2635     user_handle_t  old_parent;
2636     user_handle_t  full_parent;
2637 };
2638
2639
2640
2641 struct get_window_parents_request
2642 {
2643     struct request_header __header;
2644     user_handle_t  handle;
2645 };
2646 struct get_window_parents_reply
2647 {
2648     struct reply_header __header;
2649     int            count;
2650     /* VARARG(parents,user_handles); */
2651 };
2652
2653
2654
2655 struct get_window_children_request
2656 {
2657     struct request_header __header;
2658     user_handle_t  parent;
2659     atom_t         atom;
2660     thread_id_t    tid;
2661 };
2662 struct get_window_children_reply
2663 {
2664     struct reply_header __header;
2665     int            count;
2666     /* VARARG(children,user_handles); */
2667 };
2668
2669
2670
2671 struct get_window_children_from_point_request
2672 {
2673     struct request_header __header;
2674     user_handle_t  parent;
2675     int            x;
2676     int            y;
2677 };
2678 struct get_window_children_from_point_reply
2679 {
2680     struct reply_header __header;
2681     int            count;
2682     /* VARARG(children,user_handles); */
2683 };
2684
2685
2686
2687 struct get_window_tree_request
2688 {
2689     struct request_header __header;
2690     user_handle_t  handle;
2691 };
2692 struct get_window_tree_reply
2693 {
2694     struct reply_header __header;
2695     user_handle_t  parent;
2696     user_handle_t  owner;
2697     user_handle_t  next_sibling;
2698     user_handle_t  prev_sibling;
2699     user_handle_t  first_sibling;
2700     user_handle_t  last_sibling;
2701     user_handle_t  first_child;
2702     user_handle_t  last_child;
2703 };
2704
2705
2706 struct set_window_pos_request
2707 {
2708     struct request_header __header;
2709     user_handle_t  handle;
2710     user_handle_t  previous;
2711     unsigned int   flags;
2712     rectangle_t    window;
2713     rectangle_t    client;
2714     /* VARARG(valid,rectangles); */
2715 };
2716 struct set_window_pos_reply
2717 {
2718     struct reply_header __header;
2719     unsigned int   new_style;
2720 };
2721
2722
2723
2724 struct get_window_rectangles_request
2725 {
2726     struct request_header __header;
2727     user_handle_t  handle;
2728 };
2729 struct get_window_rectangles_reply
2730 {
2731     struct reply_header __header;
2732     rectangle_t    window;
2733     rectangle_t    visible;
2734     rectangle_t    client;
2735 };
2736
2737
2738
2739 struct get_window_text_request
2740 {
2741     struct request_header __header;
2742     user_handle_t  handle;
2743 };
2744 struct get_window_text_reply
2745 {
2746     struct reply_header __header;
2747     /* VARARG(text,unicode_str); */
2748 };
2749
2750
2751
2752 struct set_window_text_request
2753 {
2754     struct request_header __header;
2755     user_handle_t  handle;
2756     /* VARARG(text,unicode_str); */
2757 };
2758 struct set_window_text_reply
2759 {
2760     struct reply_header __header;
2761 };
2762
2763
2764
2765 struct get_windows_offset_request
2766 {
2767     struct request_header __header;
2768     user_handle_t  from;
2769     user_handle_t  to;
2770 };
2771 struct get_windows_offset_reply
2772 {
2773     struct reply_header __header;
2774     int            x;
2775     int            y;
2776 };
2777
2778
2779
2780 struct get_visible_region_request
2781 {
2782     struct request_header __header;
2783     user_handle_t  window;
2784     unsigned int   flags;
2785 };
2786 struct get_visible_region_reply
2787 {
2788     struct reply_header __header;
2789     user_handle_t  top_win;
2790     int            top_org_x;
2791     int            top_org_y;
2792     int            win_org_x;
2793     int            win_org_y;
2794     size_t         total_size;
2795     /* VARARG(region,rectangles); */
2796 };
2797
2798
2799
2800 struct get_window_region_request
2801 {
2802     struct request_header __header;
2803     user_handle_t  window;
2804 };
2805 struct get_window_region_reply
2806 {
2807     struct reply_header __header;
2808     size_t         total_size;
2809     /* VARARG(region,rectangles); */
2810 };
2811
2812
2813
2814 struct set_window_region_request
2815 {
2816     struct request_header __header;
2817     user_handle_t  window;
2818     /* VARARG(region,rectangles); */
2819 };
2820 struct set_window_region_reply
2821 {
2822     struct reply_header __header;
2823 };
2824
2825
2826
2827 struct get_update_region_request
2828 {
2829     struct request_header __header;
2830     user_handle_t  window;
2831     user_handle_t  from_child;
2832     unsigned int   flags;
2833 };
2834 struct get_update_region_reply
2835 {
2836     struct reply_header __header;
2837     user_handle_t  child;
2838     unsigned int   flags;
2839     size_t         total_size;
2840     /* VARARG(region,rectangles); */
2841 };
2842 #define UPDATE_NONCLIENT       0x01
2843 #define UPDATE_ERASE           0x02
2844 #define UPDATE_PAINT           0x04
2845 #define UPDATE_INTERNALPAINT   0x08
2846 #define UPDATE_ALLCHILDREN     0x10
2847 #define UPDATE_NOCHILDREN      0x20
2848 #define UPDATE_NOREGION        0x40
2849
2850
2851
2852 struct update_window_zorder_request
2853 {
2854     struct request_header __header;
2855     user_handle_t  window;
2856     rectangle_t    rect;
2857 };
2858 struct update_window_zorder_reply
2859 {
2860     struct reply_header __header;
2861 };
2862
2863
2864
2865 struct redraw_window_request
2866 {
2867     struct request_header __header;
2868     user_handle_t  window;
2869     unsigned int   flags;
2870     /* VARARG(region,rectangles); */
2871 };
2872 struct redraw_window_reply
2873 {
2874     struct reply_header __header;
2875 };
2876
2877
2878
2879 struct set_window_property_request
2880 {
2881     struct request_header __header;
2882     user_handle_t  window;
2883     atom_t         atom;
2884     obj_handle_t   handle;
2885     /* VARARG(name,unicode_str); */
2886 };
2887 struct set_window_property_reply
2888 {
2889     struct reply_header __header;
2890 };
2891
2892
2893
2894 struct remove_window_property_request
2895 {
2896     struct request_header __header;
2897     user_handle_t  window;
2898     atom_t         atom;
2899     /* VARARG(name,unicode_str); */
2900 };
2901 struct remove_window_property_reply
2902 {
2903     struct reply_header __header;
2904     obj_handle_t   handle;
2905 };
2906
2907
2908
2909 struct get_window_property_request
2910 {
2911     struct request_header __header;
2912     user_handle_t  window;
2913     atom_t         atom;
2914     /* VARARG(name,unicode_str); */
2915 };
2916 struct get_window_property_reply
2917 {
2918     struct reply_header __header;
2919     obj_handle_t   handle;
2920 };
2921
2922
2923
2924 struct get_window_properties_request
2925 {
2926     struct request_header __header;
2927     user_handle_t  window;
2928 };
2929 struct get_window_properties_reply
2930 {
2931     struct reply_header __header;
2932     int            total;
2933     /* VARARG(props,properties); */
2934 };
2935
2936
2937
2938 struct create_winstation_request
2939 {
2940     struct request_header __header;
2941     unsigned int flags;
2942     unsigned int access;
2943     unsigned int attributes;
2944     /* VARARG(name,unicode_str); */
2945 };
2946 struct create_winstation_reply
2947 {
2948     struct reply_header __header;
2949     obj_handle_t handle;
2950 };
2951
2952
2953
2954 struct open_winstation_request
2955 {
2956     struct request_header __header;
2957     unsigned int access;
2958     unsigned int attributes;
2959     /* VARARG(name,unicode_str); */
2960 };
2961 struct open_winstation_reply
2962 {
2963     struct reply_header __header;
2964     obj_handle_t handle;
2965 };
2966
2967
2968
2969 struct close_winstation_request
2970 {
2971     struct request_header __header;
2972     obj_handle_t handle;
2973 };
2974 struct close_winstation_reply
2975 {
2976     struct reply_header __header;
2977 };
2978
2979
2980
2981 struct get_process_winstation_request
2982 {
2983     struct request_header __header;
2984 };
2985 struct get_process_winstation_reply
2986 {
2987     struct reply_header __header;
2988     obj_handle_t handle;
2989 };
2990
2991
2992
2993 struct set_process_winstation_request
2994 {
2995     struct request_header __header;
2996     obj_handle_t handle;
2997 };
2998 struct set_process_winstation_reply
2999 {
3000     struct reply_header __header;
3001 };
3002
3003
3004
3005 struct create_desktop_request
3006 {
3007     struct request_header __header;
3008     unsigned int flags;
3009     unsigned int access;
3010     unsigned int attributes;
3011     /* VARARG(name,unicode_str); */
3012 };
3013 struct create_desktop_reply
3014 {
3015     struct reply_header __header;
3016     obj_handle_t handle;
3017 };
3018
3019
3020
3021 struct open_desktop_request
3022 {
3023     struct request_header __header;
3024     unsigned int flags;
3025     unsigned int access;
3026     unsigned int attributes;
3027     /* VARARG(name,unicode_str); */
3028 };
3029 struct open_desktop_reply
3030 {
3031     struct reply_header __header;
3032     obj_handle_t handle;
3033 };
3034
3035
3036
3037 struct close_desktop_request
3038 {
3039     struct request_header __header;
3040     obj_handle_t handle;
3041 };
3042 struct close_desktop_reply
3043 {
3044     struct reply_header __header;
3045 };
3046
3047
3048
3049 struct get_thread_desktop_request
3050 {
3051     struct request_header __header;
3052     thread_id_t  tid;
3053 };
3054 struct get_thread_desktop_reply
3055 {
3056     struct reply_header __header;
3057     obj_handle_t handle;
3058 };
3059
3060
3061
3062 struct set_thread_desktop_request
3063 {
3064     struct request_header __header;
3065     obj_handle_t handle;
3066 };
3067 struct set_thread_desktop_reply
3068 {
3069     struct reply_header __header;
3070 };
3071
3072
3073
3074 struct set_user_object_info_request
3075 {
3076     struct request_header __header;
3077     obj_handle_t handle;
3078     unsigned int flags;
3079     unsigned int obj_flags;
3080 };
3081 struct set_user_object_info_reply
3082 {
3083     struct reply_header __header;
3084     int          is_desktop;
3085     unsigned int old_obj_flags;
3086     /* VARARG(name,unicode_str); */
3087 };
3088 #define SET_USER_OBJECT_FLAGS 1
3089
3090
3091
3092 struct attach_thread_input_request
3093 {
3094     struct request_header __header;
3095     thread_id_t    tid_from;
3096     thread_id_t    tid_to;
3097     int            attach;
3098 };
3099 struct attach_thread_input_reply
3100 {
3101     struct reply_header __header;
3102 };
3103
3104
3105
3106 struct get_thread_input_request
3107 {
3108     struct request_header __header;
3109     thread_id_t    tid;
3110 };
3111 struct get_thread_input_reply
3112 {
3113     struct reply_header __header;
3114     user_handle_t  focus;
3115     user_handle_t  capture;
3116     user_handle_t  active;
3117     user_handle_t  foreground;
3118     user_handle_t  menu_owner;
3119     user_handle_t  move_size;
3120     user_handle_t  caret;
3121     rectangle_t    rect;
3122 };
3123
3124
3125
3126 struct get_last_input_time_request
3127 {
3128     struct request_header __header;
3129 };
3130 struct get_last_input_time_reply
3131 {
3132     struct reply_header __header;
3133     unsigned int time;
3134 };
3135
3136
3137
3138 struct get_key_state_request
3139 {
3140     struct request_header __header;
3141     thread_id_t    tid;
3142     int            key;
3143 };
3144 struct get_key_state_reply
3145 {
3146     struct reply_header __header;
3147     unsigned char  state;
3148     /* VARARG(keystate,bytes); */
3149 };
3150
3151
3152 struct set_key_state_request
3153 {
3154     struct request_header __header;
3155     thread_id_t    tid;
3156     /* VARARG(keystate,bytes); */
3157 };
3158 struct set_key_state_reply
3159 {
3160     struct reply_header __header;
3161 };
3162
3163
3164 struct set_foreground_window_request
3165 {
3166     struct request_header __header;
3167     user_handle_t  handle;
3168 };
3169 struct set_foreground_window_reply
3170 {
3171     struct reply_header __header;
3172     user_handle_t  previous;
3173     int            send_msg_old;
3174     int            send_msg_new;
3175 };
3176
3177
3178 struct set_focus_window_request
3179 {
3180     struct request_header __header;
3181     user_handle_t  handle;
3182 };
3183 struct set_focus_window_reply
3184 {
3185     struct reply_header __header;
3186     user_handle_t  previous;
3187 };
3188
3189
3190 struct set_active_window_request
3191 {
3192     struct request_header __header;
3193     user_handle_t  handle;
3194 };
3195 struct set_active_window_reply
3196 {
3197     struct reply_header __header;
3198     user_handle_t  previous;
3199 };
3200
3201
3202 struct set_capture_window_request
3203 {
3204     struct request_header __header;
3205     user_handle_t  handle;
3206     unsigned int   flags;
3207 };
3208 struct set_capture_window_reply
3209 {
3210     struct reply_header __header;
3211     user_handle_t  previous;
3212     user_handle_t  full_handle;
3213 };
3214 #define CAPTURE_MENU     0x01
3215 #define CAPTURE_MOVESIZE 0x02
3216
3217
3218
3219 struct set_caret_window_request
3220 {
3221     struct request_header __header;
3222     user_handle_t  handle;
3223     int            width;
3224     int            height;
3225 };
3226 struct set_caret_window_reply
3227 {
3228     struct reply_header __header;
3229     user_handle_t  previous;
3230     rectangle_t    old_rect;
3231     int            old_hide;
3232     int            old_state;
3233 };
3234
3235
3236
3237 struct set_caret_info_request
3238 {
3239     struct request_header __header;
3240     unsigned int   flags;
3241     user_handle_t  handle;
3242     int            x;
3243     int            y;
3244     int            hide;
3245     int            state;
3246 };
3247 struct set_caret_info_reply
3248 {
3249     struct reply_header __header;
3250     user_handle_t  full_handle;
3251     rectangle_t    old_rect;
3252     int            old_hide;
3253     int            old_state;
3254 };
3255 #define SET_CARET_POS        0x01
3256 #define SET_CARET_HIDE       0x02
3257 #define SET_CARET_STATE      0x04
3258
3259
3260
3261 struct set_hook_request
3262 {
3263     struct request_header __header;
3264     int            id;
3265     process_id_t   pid;
3266     thread_id_t    tid;
3267     int            event_min;
3268     int            event_max;
3269     int            flags;
3270     void*          proc;
3271     int            unicode;
3272     /* VARARG(module,unicode_str); */
3273 };
3274 struct set_hook_reply
3275 {
3276     struct reply_header __header;
3277     user_handle_t  handle;
3278     unsigned int   active_hooks;
3279 };
3280
3281
3282
3283 struct remove_hook_request
3284 {
3285     struct request_header __header;
3286     user_handle_t  handle;
3287     int            id;
3288     void*          proc;
3289 };
3290 struct remove_hook_reply
3291 {
3292     struct reply_header __header;
3293     unsigned int   active_hooks;
3294 };
3295
3296
3297
3298 struct start_hook_chain_request
3299 {
3300     struct request_header __header;
3301     int            id;
3302     int            event;
3303     user_handle_t  window;
3304     int            object_id;
3305     int            child_id;
3306 };
3307 struct start_hook_chain_reply
3308 {
3309     struct reply_header __header;
3310     user_handle_t  handle;
3311     process_id_t   pid;
3312     thread_id_t    tid;
3313     void*          proc;
3314     int            unicode;
3315     unsigned int   active_hooks;
3316     /* VARARG(module,unicode_str); */
3317 };
3318
3319
3320
3321 struct finish_hook_chain_request
3322 {
3323     struct request_header __header;
3324     int            id;
3325 };
3326 struct finish_hook_chain_reply
3327 {
3328     struct reply_header __header;
3329 };
3330
3331
3332
3333 struct get_next_hook_request
3334 {
3335     struct request_header __header;
3336     user_handle_t  handle;
3337     int            event;
3338     user_handle_t  window;
3339     int            object_id;
3340     int            child_id;
3341 };
3342 struct get_next_hook_reply
3343 {
3344     struct reply_header __header;
3345     user_handle_t  next;
3346     int            id;
3347     process_id_t   pid;
3348     thread_id_t    tid;
3349     void*          proc;
3350     int            prev_unicode;
3351     int            next_unicode;
3352     /* VARARG(module,unicode_str); */
3353 };
3354
3355
3356
3357 struct create_class_request
3358 {
3359     struct request_header __header;
3360     int            local;
3361     atom_t         atom;
3362     unsigned int   style;
3363     void*          instance;
3364     int            extra;
3365     int            win_extra;
3366     void*          client_ptr;
3367 };
3368 struct create_class_reply
3369 {
3370     struct reply_header __header;
3371 };
3372
3373
3374
3375 struct destroy_class_request
3376 {
3377     struct request_header __header;
3378     atom_t         atom;
3379     void*          instance;
3380 };
3381 struct destroy_class_reply
3382 {
3383     struct reply_header __header;
3384     void*          client_ptr;
3385 };
3386
3387
3388
3389 struct set_class_info_request
3390 {
3391     struct request_header __header;
3392     user_handle_t  window;
3393     unsigned int   flags;
3394     atom_t         atom;
3395     unsigned int   style;
3396     int            win_extra;
3397     void*          instance;
3398     int            extra_offset;
3399     size_t         extra_size;
3400     unsigned int   extra_value;
3401 };
3402 struct set_class_info_reply
3403 {
3404     struct reply_header __header;
3405     atom_t         old_atom;
3406     unsigned int   old_style;
3407     int            old_extra;
3408     int            old_win_extra;
3409     void*          old_instance;
3410     unsigned int   old_extra_value;
3411 };
3412 #define SET_CLASS_ATOM      0x0001
3413 #define SET_CLASS_STYLE     0x0002
3414 #define SET_CLASS_WINEXTRA  0x0004
3415 #define SET_CLASS_INSTANCE  0x0008
3416 #define SET_CLASS_EXTRA     0x0010
3417
3418
3419
3420 struct set_clipboard_info_request
3421 {
3422     struct request_header __header;
3423     unsigned int   flags;
3424     user_handle_t  clipboard;
3425     user_handle_t  owner;
3426     user_handle_t  viewer;
3427     unsigned int   seqno;
3428 };
3429 struct set_clipboard_info_reply
3430 {
3431     struct reply_header __header;
3432     unsigned int   flags;
3433     user_handle_t  old_clipboard;
3434     user_handle_t  old_owner;
3435     user_handle_t  old_viewer;
3436     unsigned int   seqno;
3437 };
3438
3439 #define SET_CB_OPEN      0x001
3440 #define SET_CB_OWNER     0x002
3441 #define SET_CB_VIEWER    0x004
3442 #define SET_CB_SEQNO     0x008
3443 #define SET_CB_RELOWNER  0x010
3444 #define SET_CB_CLOSE     0x020
3445 #define CB_OPEN          0x040
3446 #define CB_OWNER         0x080
3447 #define CB_PROCESS       0x100
3448
3449
3450
3451 struct open_token_request
3452 {
3453     struct request_header __header;
3454     obj_handle_t   handle;
3455     unsigned int   access;
3456     unsigned int   attributes;
3457     unsigned int   flags;
3458 };
3459 struct open_token_reply
3460 {
3461     struct reply_header __header;
3462     obj_handle_t   token;
3463 };
3464 #define OPEN_TOKEN_THREAD   1
3465 #define OPEN_TOKEN_AS_SELF  2
3466
3467
3468
3469 struct set_global_windows_request
3470 {
3471     struct request_header __header;
3472     unsigned int   flags;
3473     user_handle_t  shell_window;
3474     user_handle_t  shell_listview;
3475     user_handle_t  progman_window;
3476     user_handle_t  taskman_window;
3477 };
3478 struct set_global_windows_reply
3479 {
3480     struct reply_header __header;
3481     user_handle_t  old_shell_window;
3482     user_handle_t  old_shell_listview;
3483     user_handle_t  old_progman_window;
3484     user_handle_t  old_taskman_window;
3485 };
3486 #define SET_GLOBAL_SHELL_WINDOWS   0x01
3487 #define SET_GLOBAL_PROGMAN_WINDOW  0x02
3488 #define SET_GLOBAL_TASKMAN_WINDOW  0x04
3489
3490
3491 struct adjust_token_privileges_request
3492 {
3493     struct request_header __header;
3494     obj_handle_t  handle;
3495     int           disable_all;
3496     int           get_modified_state;
3497     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3498 };
3499 struct adjust_token_privileges_reply
3500 {
3501     struct reply_header __header;
3502     unsigned int  len;
3503     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3504 };
3505
3506
3507 struct get_token_privileges_request
3508 {
3509     struct request_header __header;
3510     obj_handle_t  handle;
3511 };
3512 struct get_token_privileges_reply
3513 {
3514     struct reply_header __header;
3515     unsigned int  len;
3516     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3517 };
3518
3519
3520 struct check_token_privileges_request
3521 {
3522     struct request_header __header;
3523     obj_handle_t  handle;
3524     int           all_required;
3525     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3526 };
3527 struct check_token_privileges_reply
3528 {
3529     struct reply_header __header;
3530     int           has_privileges;
3531     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3532 };
3533
3534 struct duplicate_token_request
3535 {
3536     struct request_header __header;
3537     obj_handle_t  handle;
3538     unsigned int  access;
3539     unsigned int  attributes;
3540     int           primary;
3541     int           impersonation_level;
3542 };
3543 struct duplicate_token_reply
3544 {
3545     struct reply_header __header;
3546     obj_handle_t  new_handle;
3547 };
3548
3549 struct access_check_request
3550 {
3551     struct request_header __header;
3552     obj_handle_t    handle;
3553     unsigned int    desired_access;
3554     unsigned int    mapping_read;
3555     unsigned int    mapping_write;
3556     unsigned int    mapping_execute;
3557     unsigned int    mapping_all;
3558     /* VARARG(sd,security_descriptor); */
3559 };
3560 struct access_check_reply
3561 {
3562     struct reply_header __header;
3563     unsigned int    access_granted;
3564     unsigned int    access_status;
3565     unsigned int    privileges_len;
3566     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3567 };
3568
3569 struct get_token_user_request
3570 {
3571     struct request_header __header;
3572     obj_handle_t    handle;
3573 };
3574 struct get_token_user_reply
3575 {
3576     struct reply_header __header;
3577     size_t          user_len;
3578     /* VARARG(user,SID); */
3579 };
3580
3581
3582 struct create_mailslot_request
3583 {
3584     struct request_header __header;
3585     unsigned int   access;
3586     unsigned int   attributes;
3587     obj_handle_t   rootdir;
3588     unsigned int   max_msgsize;
3589     int            read_timeout;
3590     /* VARARG(name,unicode_str); */
3591 };
3592 struct create_mailslot_reply
3593 {
3594     struct reply_header __header;
3595     obj_handle_t   handle;
3596 };
3597
3598
3599
3600 struct open_mailslot_request
3601 {
3602     struct request_header __header;
3603     unsigned int   access;
3604     unsigned int   attributes;
3605     obj_handle_t   rootdir;
3606     unsigned int   sharing;
3607     /* VARARG(name,unicode_str); */
3608 };
3609 struct open_mailslot_reply
3610 {
3611     struct reply_header __header;
3612     obj_handle_t   handle;
3613 };
3614
3615
3616
3617 struct set_mailslot_info_request
3618 {
3619     struct request_header __header;
3620     obj_handle_t   handle;
3621     unsigned int   flags;
3622     int            read_timeout;
3623 };
3624 struct set_mailslot_info_reply
3625 {
3626     struct reply_header __header;
3627     unsigned int   max_msgsize;
3628     int            read_timeout;
3629     unsigned int   msg_count;
3630     unsigned int   next_msgsize;
3631 };
3632 #define MAILSLOT_SET_READ_TIMEOUT  1
3633
3634
3635
3636 struct create_directory_request
3637 {
3638     struct request_header __header;
3639     unsigned int   access;
3640     unsigned int   attributes;
3641     obj_handle_t   rootdir;
3642     /* VARARG(directory_name,unicode_str); */
3643 };
3644 struct create_directory_reply
3645 {
3646     struct reply_header __header;
3647     obj_handle_t   handle;
3648 };
3649
3650
3651
3652 struct open_directory_request
3653 {
3654     struct request_header __header;
3655     unsigned int   access;
3656     unsigned int   attributes;
3657     obj_handle_t   rootdir;
3658     /* VARARG(directory_name,unicode_str); */
3659 };
3660 struct open_directory_reply
3661 {
3662     struct reply_header __header;
3663     obj_handle_t   handle;
3664 };
3665
3666
3667
3668 struct create_symlink_request
3669 {
3670     struct request_header __header;
3671     unsigned int   access;
3672     unsigned int   attributes;
3673     obj_handle_t   rootdir;
3674     size_t         name_len;
3675     /* VARARG(name,unicode_str,name_len); */
3676     /* VARARG(target_name,unicode_str); */
3677 };
3678 struct create_symlink_reply
3679 {
3680     struct reply_header __header;
3681     obj_handle_t   handle;
3682 };
3683
3684
3685
3686 struct open_symlink_request
3687 {
3688     struct request_header __header;
3689     unsigned int   access;
3690     unsigned int   attributes;
3691     obj_handle_t   rootdir;
3692     /* VARARG(name,unicode_str); */
3693 };
3694 struct open_symlink_reply
3695 {
3696     struct reply_header __header;
3697     obj_handle_t   handle;
3698 };
3699
3700
3701
3702 struct query_symlink_request
3703 {
3704     struct request_header __header;
3705     obj_handle_t   handle;
3706 };
3707 struct query_symlink_reply
3708 {
3709     struct reply_header __header;
3710     /* VARARG(target_name,unicode_str); */
3711 };
3712
3713
3714 enum request
3715 {
3716     REQ_new_process,
3717     REQ_get_new_process_info,
3718     REQ_new_thread,
3719     REQ_get_startup_info,
3720     REQ_init_process_done,
3721     REQ_init_thread,
3722     REQ_terminate_process,
3723     REQ_terminate_thread,
3724     REQ_get_process_info,
3725     REQ_set_process_info,
3726     REQ_get_thread_info,
3727     REQ_set_thread_info,
3728     REQ_get_dll_info,
3729     REQ_suspend_thread,
3730     REQ_resume_thread,
3731     REQ_load_dll,
3732     REQ_unload_dll,
3733     REQ_queue_apc,
3734     REQ_get_apc,
3735     REQ_close_handle,
3736     REQ_set_handle_info,
3737     REQ_dup_handle,
3738     REQ_open_process,
3739     REQ_open_thread,
3740     REQ_select,
3741     REQ_create_event,
3742     REQ_event_op,
3743     REQ_open_event,
3744     REQ_create_mutex,
3745     REQ_release_mutex,
3746     REQ_open_mutex,
3747     REQ_create_semaphore,
3748     REQ_release_semaphore,
3749     REQ_open_semaphore,
3750     REQ_create_file,
3751     REQ_open_file_object,
3752     REQ_alloc_file_handle,
3753     REQ_get_handle_fd,
3754     REQ_set_handle_fd,
3755     REQ_flush_file,
3756     REQ_lock_file,
3757     REQ_unlock_file,
3758     REQ_unmount_device,
3759     REQ_create_socket,
3760     REQ_accept_socket,
3761     REQ_set_socket_event,
3762     REQ_get_socket_event,
3763     REQ_enable_socket_event,
3764     REQ_set_socket_deferred,
3765     REQ_alloc_console,
3766     REQ_free_console,
3767     REQ_get_console_renderer_events,
3768     REQ_open_console,
3769     REQ_get_console_wait_event,
3770     REQ_get_console_mode,
3771     REQ_set_console_mode,
3772     REQ_set_console_input_info,
3773     REQ_get_console_input_info,
3774     REQ_append_console_input_history,
3775     REQ_get_console_input_history,
3776     REQ_create_console_output,
3777     REQ_set_console_output_info,
3778     REQ_get_console_output_info,
3779     REQ_write_console_input,
3780     REQ_read_console_input,
3781     REQ_write_console_output,
3782     REQ_fill_console_output,
3783     REQ_read_console_output,
3784     REQ_move_console_output,
3785     REQ_send_console_signal,
3786     REQ_read_directory_changes,
3787     REQ_read_change,
3788     REQ_create_mapping,
3789     REQ_open_mapping,
3790     REQ_get_mapping_info,
3791     REQ_create_snapshot,
3792     REQ_next_process,
3793     REQ_next_thread,
3794     REQ_next_module,
3795     REQ_wait_debug_event,
3796     REQ_queue_exception_event,
3797     REQ_get_exception_status,
3798     REQ_output_debug_string,
3799     REQ_continue_debug_event,
3800     REQ_debug_process,
3801     REQ_debug_break,
3802     REQ_set_debugger_kill_on_exit,
3803     REQ_read_process_memory,
3804     REQ_write_process_memory,
3805     REQ_create_key,
3806     REQ_open_key,
3807     REQ_delete_key,
3808     REQ_flush_key,
3809     REQ_enum_key,
3810     REQ_set_key_value,
3811     REQ_get_key_value,
3812     REQ_enum_key_value,
3813     REQ_delete_key_value,
3814     REQ_load_registry,
3815     REQ_unload_registry,
3816     REQ_save_registry,
3817     REQ_set_registry_notification,
3818     REQ_create_timer,
3819     REQ_open_timer,
3820     REQ_set_timer,
3821     REQ_cancel_timer,
3822     REQ_get_timer_info,
3823     REQ_get_thread_context,
3824     REQ_set_thread_context,
3825     REQ_get_selector_entry,
3826     REQ_add_atom,
3827     REQ_delete_atom,
3828     REQ_find_atom,
3829     REQ_get_atom_information,
3830     REQ_set_atom_information,
3831     REQ_empty_atom_table,
3832     REQ_init_atom_table,
3833     REQ_get_msg_queue,
3834     REQ_set_queue_mask,
3835     REQ_get_queue_status,
3836     REQ_wait_input_idle,
3837     REQ_send_message,
3838     REQ_post_quit_message,
3839     REQ_get_message,
3840     REQ_reply_message,
3841     REQ_accept_hardware_message,
3842     REQ_get_message_reply,
3843     REQ_set_win_timer,
3844     REQ_kill_win_timer,
3845     REQ_get_serial_info,
3846     REQ_set_serial_info,
3847     REQ_register_async,
3848     REQ_cancel_async,
3849     REQ_create_named_pipe,
3850     REQ_open_named_pipe,
3851     REQ_connect_named_pipe,
3852     REQ_wait_named_pipe,
3853     REQ_disconnect_named_pipe,
3854     REQ_get_named_pipe_info,
3855     REQ_create_window,
3856     REQ_destroy_window,
3857     REQ_get_desktop_window,
3858     REQ_set_window_owner,
3859     REQ_get_window_info,
3860     REQ_set_window_info,
3861     REQ_set_parent,
3862     REQ_get_window_parents,
3863     REQ_get_window_children,
3864     REQ_get_window_children_from_point,
3865     REQ_get_window_tree,
3866     REQ_set_window_pos,
3867     REQ_get_window_rectangles,
3868     REQ_get_window_text,
3869     REQ_set_window_text,
3870     REQ_get_windows_offset,
3871     REQ_get_visible_region,
3872     REQ_get_window_region,
3873     REQ_set_window_region,
3874     REQ_get_update_region,
3875     REQ_update_window_zorder,
3876     REQ_redraw_window,
3877     REQ_set_window_property,
3878     REQ_remove_window_property,
3879     REQ_get_window_property,
3880     REQ_get_window_properties,
3881     REQ_create_winstation,
3882     REQ_open_winstation,
3883     REQ_close_winstation,
3884     REQ_get_process_winstation,
3885     REQ_set_process_winstation,
3886     REQ_create_desktop,
3887     REQ_open_desktop,
3888     REQ_close_desktop,
3889     REQ_get_thread_desktop,
3890     REQ_set_thread_desktop,
3891     REQ_set_user_object_info,
3892     REQ_attach_thread_input,
3893     REQ_get_thread_input,
3894     REQ_get_last_input_time,
3895     REQ_get_key_state,
3896     REQ_set_key_state,
3897     REQ_set_foreground_window,
3898     REQ_set_focus_window,
3899     REQ_set_active_window,
3900     REQ_set_capture_window,
3901     REQ_set_caret_window,
3902     REQ_set_caret_info,
3903     REQ_set_hook,
3904     REQ_remove_hook,
3905     REQ_start_hook_chain,
3906     REQ_finish_hook_chain,
3907     REQ_get_next_hook,
3908     REQ_create_class,
3909     REQ_destroy_class,
3910     REQ_set_class_info,
3911     REQ_set_clipboard_info,
3912     REQ_open_token,
3913     REQ_set_global_windows,
3914     REQ_adjust_token_privileges,
3915     REQ_get_token_privileges,
3916     REQ_check_token_privileges,
3917     REQ_duplicate_token,
3918     REQ_access_check,
3919     REQ_get_token_user,
3920     REQ_create_mailslot,
3921     REQ_open_mailslot,
3922     REQ_set_mailslot_info,
3923     REQ_create_directory,
3924     REQ_open_directory,
3925     REQ_create_symlink,
3926     REQ_open_symlink,
3927     REQ_query_symlink,
3928     REQ_NB_REQUESTS
3929 };
3930
3931 union generic_request
3932 {
3933     struct request_max_size max_size;
3934     struct request_header request_header;
3935     struct new_process_request new_process_request;
3936     struct get_new_process_info_request get_new_process_info_request;
3937     struct new_thread_request new_thread_request;
3938     struct get_startup_info_request get_startup_info_request;
3939     struct init_process_done_request init_process_done_request;
3940     struct init_thread_request init_thread_request;
3941     struct terminate_process_request terminate_process_request;
3942     struct terminate_thread_request terminate_thread_request;
3943     struct get_process_info_request get_process_info_request;
3944     struct set_process_info_request set_process_info_request;
3945     struct get_thread_info_request get_thread_info_request;
3946     struct set_thread_info_request set_thread_info_request;
3947     struct get_dll_info_request get_dll_info_request;
3948     struct suspend_thread_request suspend_thread_request;
3949     struct resume_thread_request resume_thread_request;
3950     struct load_dll_request load_dll_request;
3951     struct unload_dll_request unload_dll_request;
3952     struct queue_apc_request queue_apc_request;
3953     struct get_apc_request get_apc_request;
3954     struct close_handle_request close_handle_request;
3955     struct set_handle_info_request set_handle_info_request;
3956     struct dup_handle_request dup_handle_request;
3957     struct open_process_request open_process_request;
3958     struct open_thread_request open_thread_request;
3959     struct select_request select_request;
3960     struct create_event_request create_event_request;
3961     struct event_op_request event_op_request;
3962     struct open_event_request open_event_request;
3963     struct create_mutex_request create_mutex_request;
3964     struct release_mutex_request release_mutex_request;
3965     struct open_mutex_request open_mutex_request;
3966     struct create_semaphore_request create_semaphore_request;
3967     struct release_semaphore_request release_semaphore_request;
3968     struct open_semaphore_request open_semaphore_request;
3969     struct create_file_request create_file_request;
3970     struct open_file_object_request open_file_object_request;
3971     struct alloc_file_handle_request alloc_file_handle_request;
3972     struct get_handle_fd_request get_handle_fd_request;
3973     struct set_handle_fd_request set_handle_fd_request;
3974     struct flush_file_request flush_file_request;
3975     struct lock_file_request lock_file_request;
3976     struct unlock_file_request unlock_file_request;
3977     struct unmount_device_request unmount_device_request;
3978     struct create_socket_request create_socket_request;
3979     struct accept_socket_request accept_socket_request;
3980     struct set_socket_event_request set_socket_event_request;
3981     struct get_socket_event_request get_socket_event_request;
3982     struct enable_socket_event_request enable_socket_event_request;
3983     struct set_socket_deferred_request set_socket_deferred_request;
3984     struct alloc_console_request alloc_console_request;
3985     struct free_console_request free_console_request;
3986     struct get_console_renderer_events_request get_console_renderer_events_request;
3987     struct open_console_request open_console_request;
3988     struct get_console_wait_event_request get_console_wait_event_request;
3989     struct get_console_mode_request get_console_mode_request;
3990     struct set_console_mode_request set_console_mode_request;
3991     struct set_console_input_info_request set_console_input_info_request;
3992     struct get_console_input_info_request get_console_input_info_request;
3993     struct append_console_input_history_request append_console_input_history_request;
3994     struct get_console_input_history_request get_console_input_history_request;
3995     struct create_console_output_request create_console_output_request;
3996     struct set_console_output_info_request set_console_output_info_request;
3997     struct get_console_output_info_request get_console_output_info_request;
3998     struct write_console_input_request write_console_input_request;
3999     struct read_console_input_request read_console_input_request;
4000     struct write_console_output_request write_console_output_request;
4001     struct fill_console_output_request fill_console_output_request;
4002     struct read_console_output_request read_console_output_request;
4003     struct move_console_output_request move_console_output_request;
4004     struct send_console_signal_request send_console_signal_request;
4005     struct read_directory_changes_request read_directory_changes_request;
4006     struct read_change_request read_change_request;
4007     struct create_mapping_request create_mapping_request;
4008     struct open_mapping_request open_mapping_request;
4009     struct get_mapping_info_request get_mapping_info_request;
4010     struct create_snapshot_request create_snapshot_request;
4011     struct next_process_request next_process_request;
4012     struct next_thread_request next_thread_request;
4013     struct next_module_request next_module_request;
4014     struct wait_debug_event_request wait_debug_event_request;
4015     struct queue_exception_event_request queue_exception_event_request;
4016     struct get_exception_status_request get_exception_status_request;
4017     struct output_debug_string_request output_debug_string_request;
4018     struct continue_debug_event_request continue_debug_event_request;
4019     struct debug_process_request debug_process_request;
4020     struct debug_break_request debug_break_request;
4021     struct set_debugger_kill_on_exit_request set_debugger_kill_on_exit_request;
4022     struct read_process_memory_request read_process_memory_request;
4023     struct write_process_memory_request write_process_memory_request;
4024     struct create_key_request create_key_request;
4025     struct open_key_request open_key_request;
4026     struct delete_key_request delete_key_request;
4027     struct flush_key_request flush_key_request;
4028     struct enum_key_request enum_key_request;
4029     struct set_key_value_request set_key_value_request;
4030     struct get_key_value_request get_key_value_request;
4031     struct enum_key_value_request enum_key_value_request;
4032     struct delete_key_value_request delete_key_value_request;
4033     struct load_registry_request load_registry_request;
4034     struct unload_registry_request unload_registry_request;
4035     struct save_registry_request save_registry_request;
4036     struct set_registry_notification_request set_registry_notification_request;
4037     struct create_timer_request create_timer_request;
4038     struct open_timer_request open_timer_request;
4039     struct set_timer_request set_timer_request;
4040     struct cancel_timer_request cancel_timer_request;
4041     struct get_timer_info_request get_timer_info_request;
4042     struct get_thread_context_request get_thread_context_request;
4043     struct set_thread_context_request set_thread_context_request;
4044     struct get_selector_entry_request get_selector_entry_request;
4045     struct add_atom_request add_atom_request;
4046     struct delete_atom_request delete_atom_request;
4047     struct find_atom_request find_atom_request;
4048     struct get_atom_information_request get_atom_information_request;
4049     struct set_atom_information_request set_atom_information_request;
4050     struct empty_atom_table_request empty_atom_table_request;
4051     struct init_atom_table_request init_atom_table_request;
4052     struct get_msg_queue_request get_msg_queue_request;
4053     struct set_queue_mask_request set_queue_mask_request;
4054     struct get_queue_status_request get_queue_status_request;
4055     struct wait_input_idle_request wait_input_idle_request;
4056     struct send_message_request send_message_request;
4057     struct post_quit_message_request post_quit_message_request;
4058     struct get_message_request get_message_request;
4059     struct reply_message_request reply_message_request;
4060     struct accept_hardware_message_request accept_hardware_message_request;
4061     struct get_message_reply_request get_message_reply_request;
4062     struct set_win_timer_request set_win_timer_request;
4063     struct kill_win_timer_request kill_win_timer_request;
4064     struct get_serial_info_request get_serial_info_request;
4065     struct set_serial_info_request set_serial_info_request;
4066     struct register_async_request register_async_request;
4067     struct cancel_async_request cancel_async_request;
4068     struct create_named_pipe_request create_named_pipe_request;
4069     struct open_named_pipe_request open_named_pipe_request;
4070     struct connect_named_pipe_request connect_named_pipe_request;
4071     struct wait_named_pipe_request wait_named_pipe_request;
4072     struct disconnect_named_pipe_request disconnect_named_pipe_request;
4073     struct get_named_pipe_info_request get_named_pipe_info_request;
4074     struct create_window_request create_window_request;
4075     struct destroy_window_request destroy_window_request;
4076     struct get_desktop_window_request get_desktop_window_request;
4077     struct set_window_owner_request set_window_owner_request;
4078     struct get_window_info_request get_window_info_request;
4079     struct set_window_info_request set_window_info_request;
4080     struct set_parent_request set_parent_request;
4081     struct get_window_parents_request get_window_parents_request;
4082     struct get_window_children_request get_window_children_request;
4083     struct get_window_children_from_point_request get_window_children_from_point_request;
4084     struct get_window_tree_request get_window_tree_request;
4085     struct set_window_pos_request set_window_pos_request;
4086     struct get_window_rectangles_request get_window_rectangles_request;
4087     struct get_window_text_request get_window_text_request;
4088     struct set_window_text_request set_window_text_request;
4089     struct get_windows_offset_request get_windows_offset_request;
4090     struct get_visible_region_request get_visible_region_request;
4091     struct get_window_region_request get_window_region_request;
4092     struct set_window_region_request set_window_region_request;
4093     struct get_update_region_request get_update_region_request;
4094     struct update_window_zorder_request update_window_zorder_request;
4095     struct redraw_window_request redraw_window_request;
4096     struct set_window_property_request set_window_property_request;
4097     struct remove_window_property_request remove_window_property_request;
4098     struct get_window_property_request get_window_property_request;
4099     struct get_window_properties_request get_window_properties_request;
4100     struct create_winstation_request create_winstation_request;
4101     struct open_winstation_request open_winstation_request;
4102     struct close_winstation_request close_winstation_request;
4103     struct get_process_winstation_request get_process_winstation_request;
4104     struct set_process_winstation_request set_process_winstation_request;
4105     struct create_desktop_request create_desktop_request;
4106     struct open_desktop_request open_desktop_request;
4107     struct close_desktop_request close_desktop_request;
4108     struct get_thread_desktop_request get_thread_desktop_request;
4109     struct set_thread_desktop_request set_thread_desktop_request;
4110     struct set_user_object_info_request set_user_object_info_request;
4111     struct attach_thread_input_request attach_thread_input_request;
4112     struct get_thread_input_request get_thread_input_request;
4113     struct get_last_input_time_request get_last_input_time_request;
4114     struct get_key_state_request get_key_state_request;
4115     struct set_key_state_request set_key_state_request;
4116     struct set_foreground_window_request set_foreground_window_request;
4117     struct set_focus_window_request set_focus_window_request;
4118     struct set_active_window_request set_active_window_request;
4119     struct set_capture_window_request set_capture_window_request;
4120     struct set_caret_window_request set_caret_window_request;
4121     struct set_caret_info_request set_caret_info_request;
4122     struct set_hook_request set_hook_request;
4123     struct remove_hook_request remove_hook_request;
4124     struct start_hook_chain_request start_hook_chain_request;
4125     struct finish_hook_chain_request finish_hook_chain_request;
4126     struct get_next_hook_request get_next_hook_request;
4127     struct create_class_request create_class_request;
4128     struct destroy_class_request destroy_class_request;
4129     struct set_class_info_request set_class_info_request;
4130     struct set_clipboard_info_request set_clipboard_info_request;
4131     struct open_token_request open_token_request;
4132     struct set_global_windows_request set_global_windows_request;
4133     struct adjust_token_privileges_request adjust_token_privileges_request;
4134     struct get_token_privileges_request get_token_privileges_request;
4135     struct check_token_privileges_request check_token_privileges_request;
4136     struct duplicate_token_request duplicate_token_request;
4137     struct access_check_request access_check_request;
4138     struct get_token_user_request get_token_user_request;
4139     struct create_mailslot_request create_mailslot_request;
4140     struct open_mailslot_request open_mailslot_request;
4141     struct set_mailslot_info_request set_mailslot_info_request;
4142     struct create_directory_request create_directory_request;
4143     struct open_directory_request open_directory_request;
4144     struct create_symlink_request create_symlink_request;
4145     struct open_symlink_request open_symlink_request;
4146     struct query_symlink_request query_symlink_request;
4147 };
4148 union generic_reply
4149 {
4150     struct request_max_size max_size;
4151     struct reply_header reply_header;
4152     struct new_process_reply new_process_reply;
4153     struct get_new_process_info_reply get_new_process_info_reply;
4154     struct new_thread_reply new_thread_reply;
4155     struct get_startup_info_reply get_startup_info_reply;
4156     struct init_process_done_reply init_process_done_reply;
4157     struct init_thread_reply init_thread_reply;
4158     struct terminate_process_reply terminate_process_reply;
4159     struct terminate_thread_reply terminate_thread_reply;
4160     struct get_process_info_reply get_process_info_reply;
4161     struct set_process_info_reply set_process_info_reply;
4162     struct get_thread_info_reply get_thread_info_reply;
4163     struct set_thread_info_reply set_thread_info_reply;
4164     struct get_dll_info_reply get_dll_info_reply;
4165     struct suspend_thread_reply suspend_thread_reply;
4166     struct resume_thread_reply resume_thread_reply;
4167     struct load_dll_reply load_dll_reply;
4168     struct unload_dll_reply unload_dll_reply;
4169     struct queue_apc_reply queue_apc_reply;
4170     struct get_apc_reply get_apc_reply;
4171     struct close_handle_reply close_handle_reply;
4172     struct set_handle_info_reply set_handle_info_reply;
4173     struct dup_handle_reply dup_handle_reply;
4174     struct open_process_reply open_process_reply;
4175     struct open_thread_reply open_thread_reply;
4176     struct select_reply select_reply;
4177     struct create_event_reply create_event_reply;
4178     struct event_op_reply event_op_reply;
4179     struct open_event_reply open_event_reply;
4180     struct create_mutex_reply create_mutex_reply;
4181     struct release_mutex_reply release_mutex_reply;
4182     struct open_mutex_reply open_mutex_reply;
4183     struct create_semaphore_reply create_semaphore_reply;
4184     struct release_semaphore_reply release_semaphore_reply;
4185     struct open_semaphore_reply open_semaphore_reply;
4186     struct create_file_reply create_file_reply;
4187     struct open_file_object_reply open_file_object_reply;
4188     struct alloc_file_handle_reply alloc_file_handle_reply;
4189     struct get_handle_fd_reply get_handle_fd_reply;
4190     struct set_handle_fd_reply set_handle_fd_reply;
4191     struct flush_file_reply flush_file_reply;
4192     struct lock_file_reply lock_file_reply;
4193     struct unlock_file_reply unlock_file_reply;
4194     struct unmount_device_reply unmount_device_reply;
4195     struct create_socket_reply create_socket_reply;
4196     struct accept_socket_reply accept_socket_reply;
4197     struct set_socket_event_reply set_socket_event_reply;
4198     struct get_socket_event_reply get_socket_event_reply;
4199     struct enable_socket_event_reply enable_socket_event_reply;
4200     struct set_socket_deferred_reply set_socket_deferred_reply;
4201     struct alloc_console_reply alloc_console_reply;
4202     struct free_console_reply free_console_reply;
4203     struct get_console_renderer_events_reply get_console_renderer_events_reply;
4204     struct open_console_reply open_console_reply;
4205     struct get_console_wait_event_reply get_console_wait_event_reply;
4206     struct get_console_mode_reply get_console_mode_reply;
4207     struct set_console_mode_reply set_console_mode_reply;
4208     struct set_console_input_info_reply set_console_input_info_reply;
4209     struct get_console_input_info_reply get_console_input_info_reply;
4210     struct append_console_input_history_reply append_console_input_history_reply;
4211     struct get_console_input_history_reply get_console_input_history_reply;
4212     struct create_console_output_reply create_console_output_reply;
4213     struct set_console_output_info_reply set_console_output_info_reply;
4214     struct get_console_output_info_reply get_console_output_info_reply;
4215     struct write_console_input_reply write_console_input_reply;
4216     struct read_console_input_reply read_console_input_reply;
4217     struct write_console_output_reply write_console_output_reply;
4218     struct fill_console_output_reply fill_console_output_reply;
4219     struct read_console_output_reply read_console_output_reply;
4220     struct move_console_output_reply move_console_output_reply;
4221     struct send_console_signal_reply send_console_signal_reply;
4222     struct read_directory_changes_reply read_directory_changes_reply;
4223     struct read_change_reply read_change_reply;
4224     struct create_mapping_reply create_mapping_reply;
4225     struct open_mapping_reply open_mapping_reply;
4226     struct get_mapping_info_reply get_mapping_info_reply;
4227     struct create_snapshot_reply create_snapshot_reply;
4228     struct next_process_reply next_process_reply;
4229     struct next_thread_reply next_thread_reply;
4230     struct next_module_reply next_module_reply;
4231     struct wait_debug_event_reply wait_debug_event_reply;
4232     struct queue_exception_event_reply queue_exception_event_reply;
4233     struct get_exception_status_reply get_exception_status_reply;
4234     struct output_debug_string_reply output_debug_string_reply;
4235     struct continue_debug_event_reply continue_debug_event_reply;
4236     struct debug_process_reply debug_process_reply;
4237     struct debug_break_reply debug_break_reply;
4238     struct set_debugger_kill_on_exit_reply set_debugger_kill_on_exit_reply;
4239     struct read_process_memory_reply read_process_memory_reply;
4240     struct write_process_memory_reply write_process_memory_reply;
4241     struct create_key_reply create_key_reply;
4242     struct open_key_reply open_key_reply;
4243     struct delete_key_reply delete_key_reply;
4244     struct flush_key_reply flush_key_reply;
4245     struct enum_key_reply enum_key_reply;
4246     struct set_key_value_reply set_key_value_reply;
4247     struct get_key_value_reply get_key_value_reply;
4248     struct enum_key_value_reply enum_key_value_reply;
4249     struct delete_key_value_reply delete_key_value_reply;
4250     struct load_registry_reply load_registry_reply;
4251     struct unload_registry_reply unload_registry_reply;
4252     struct save_registry_reply save_registry_reply;
4253     struct set_registry_notification_reply set_registry_notification_reply;
4254     struct create_timer_reply create_timer_reply;
4255     struct open_timer_reply open_timer_reply;
4256     struct set_timer_reply set_timer_reply;
4257     struct cancel_timer_reply cancel_timer_reply;
4258     struct get_timer_info_reply get_timer_info_reply;
4259     struct get_thread_context_reply get_thread_context_reply;
4260     struct set_thread_context_reply set_thread_context_reply;
4261     struct get_selector_entry_reply get_selector_entry_reply;
4262     struct add_atom_reply add_atom_reply;
4263     struct delete_atom_reply delete_atom_reply;
4264     struct find_atom_reply find_atom_reply;
4265     struct get_atom_information_reply get_atom_information_reply;
4266     struct set_atom_information_reply set_atom_information_reply;
4267     struct empty_atom_table_reply empty_atom_table_reply;
4268     struct init_atom_table_reply init_atom_table_reply;
4269     struct get_msg_queue_reply get_msg_queue_reply;
4270     struct set_queue_mask_reply set_queue_mask_reply;
4271     struct get_queue_status_reply get_queue_status_reply;
4272     struct wait_input_idle_reply wait_input_idle_reply;
4273     struct send_message_reply send_message_reply;
4274     struct post_quit_message_reply post_quit_message_reply;
4275     struct get_message_reply get_message_reply;
4276     struct reply_message_reply reply_message_reply;
4277     struct accept_hardware_message_reply accept_hardware_message_reply;
4278     struct get_message_reply_reply get_message_reply_reply;
4279     struct set_win_timer_reply set_win_timer_reply;
4280     struct kill_win_timer_reply kill_win_timer_reply;
4281     struct get_serial_info_reply get_serial_info_reply;
4282     struct set_serial_info_reply set_serial_info_reply;
4283     struct register_async_reply register_async_reply;
4284     struct cancel_async_reply cancel_async_reply;
4285     struct create_named_pipe_reply create_named_pipe_reply;
4286     struct open_named_pipe_reply open_named_pipe_reply;
4287     struct connect_named_pipe_reply connect_named_pipe_reply;
4288     struct wait_named_pipe_reply wait_named_pipe_reply;
4289     struct disconnect_named_pipe_reply disconnect_named_pipe_reply;
4290     struct get_named_pipe_info_reply get_named_pipe_info_reply;
4291     struct create_window_reply create_window_reply;
4292     struct destroy_window_reply destroy_window_reply;
4293     struct get_desktop_window_reply get_desktop_window_reply;
4294     struct set_window_owner_reply set_window_owner_reply;
4295     struct get_window_info_reply get_window_info_reply;
4296     struct set_window_info_reply set_window_info_reply;
4297     struct set_parent_reply set_parent_reply;
4298     struct get_window_parents_reply get_window_parents_reply;
4299     struct get_window_children_reply get_window_children_reply;
4300     struct get_window_children_from_point_reply get_window_children_from_point_reply;
4301     struct get_window_tree_reply get_window_tree_reply;
4302     struct set_window_pos_reply set_window_pos_reply;
4303     struct get_window_rectangles_reply get_window_rectangles_reply;
4304     struct get_window_text_reply get_window_text_reply;
4305     struct set_window_text_reply set_window_text_reply;
4306     struct get_windows_offset_reply get_windows_offset_reply;
4307     struct get_visible_region_reply get_visible_region_reply;
4308     struct get_window_region_reply get_window_region_reply;
4309     struct set_window_region_reply set_window_region_reply;
4310     struct get_update_region_reply get_update_region_reply;
4311     struct update_window_zorder_reply update_window_zorder_reply;
4312     struct redraw_window_reply redraw_window_reply;
4313     struct set_window_property_reply set_window_property_reply;
4314     struct remove_window_property_reply remove_window_property_reply;
4315     struct get_window_property_reply get_window_property_reply;
4316     struct get_window_properties_reply get_window_properties_reply;
4317     struct create_winstation_reply create_winstation_reply;
4318     struct open_winstation_reply open_winstation_reply;
4319     struct close_winstation_reply close_winstation_reply;
4320     struct get_process_winstation_reply get_process_winstation_reply;
4321     struct set_process_winstation_reply set_process_winstation_reply;
4322     struct create_desktop_reply create_desktop_reply;
4323     struct open_desktop_reply open_desktop_reply;
4324     struct close_desktop_reply close_desktop_reply;
4325     struct get_thread_desktop_reply get_thread_desktop_reply;
4326     struct set_thread_desktop_reply set_thread_desktop_reply;
4327     struct set_user_object_info_reply set_user_object_info_reply;
4328     struct attach_thread_input_reply attach_thread_input_reply;
4329     struct get_thread_input_reply get_thread_input_reply;
4330     struct get_last_input_time_reply get_last_input_time_reply;
4331     struct get_key_state_reply get_key_state_reply;
4332     struct set_key_state_reply set_key_state_reply;
4333     struct set_foreground_window_reply set_foreground_window_reply;
4334     struct set_focus_window_reply set_focus_window_reply;
4335     struct set_active_window_reply set_active_window_reply;
4336     struct set_capture_window_reply set_capture_window_reply;
4337     struct set_caret_window_reply set_caret_window_reply;
4338     struct set_caret_info_reply set_caret_info_reply;
4339     struct set_hook_reply set_hook_reply;
4340     struct remove_hook_reply remove_hook_reply;
4341     struct start_hook_chain_reply start_hook_chain_reply;
4342     struct finish_hook_chain_reply finish_hook_chain_reply;
4343     struct get_next_hook_reply get_next_hook_reply;
4344     struct create_class_reply create_class_reply;
4345     struct destroy_class_reply destroy_class_reply;
4346     struct set_class_info_reply set_class_info_reply;
4347     struct set_clipboard_info_reply set_clipboard_info_reply;
4348     struct open_token_reply open_token_reply;
4349     struct set_global_windows_reply set_global_windows_reply;
4350     struct adjust_token_privileges_reply adjust_token_privileges_reply;
4351     struct get_token_privileges_reply get_token_privileges_reply;
4352     struct check_token_privileges_reply check_token_privileges_reply;
4353     struct duplicate_token_reply duplicate_token_reply;
4354     struct access_check_reply access_check_reply;
4355     struct get_token_user_reply get_token_user_reply;
4356     struct create_mailslot_reply create_mailslot_reply;
4357     struct open_mailslot_reply open_mailslot_reply;
4358     struct set_mailslot_info_reply set_mailslot_info_reply;
4359     struct create_directory_reply create_directory_reply;
4360     struct open_directory_reply open_directory_reply;
4361     struct create_symlink_reply create_symlink_reply;
4362     struct open_symlink_reply open_symlink_reply;
4363     struct query_symlink_reply query_symlink_reply;
4364 };
4365
4366 #define SERVER_PROTOCOL_VERSION 226
4367
4368 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */