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