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