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