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