gdiplus: Implement GdipGetFontUnit.
[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  top_window;
2800     user_handle_t  msg_window;
2801 };
2802
2803
2804
2805 struct set_window_owner_request
2806 {
2807     struct request_header __header;
2808     user_handle_t  handle;
2809     user_handle_t  owner;
2810 };
2811 struct set_window_owner_reply
2812 {
2813     struct reply_header __header;
2814     user_handle_t  full_owner;
2815     user_handle_t  prev_owner;
2816 };
2817
2818
2819
2820 struct get_window_info_request
2821 {
2822     struct request_header __header;
2823     user_handle_t  handle;
2824 };
2825 struct get_window_info_reply
2826 {
2827     struct reply_header __header;
2828     user_handle_t  full_handle;
2829     user_handle_t  last_active;
2830     process_id_t   pid;
2831     thread_id_t    tid;
2832     atom_t         atom;
2833     int            is_unicode;
2834 };
2835
2836
2837
2838 struct set_window_info_request
2839 {
2840     struct request_header __header;
2841     unsigned int   flags;
2842     user_handle_t  handle;
2843     unsigned int   style;
2844     unsigned int   ex_style;
2845     unsigned int   id;
2846     int            is_unicode;
2847     void*          instance;
2848     unsigned long  user_data;
2849     int            extra_offset;
2850     data_size_t    extra_size;
2851     unsigned long  extra_value;
2852 };
2853 struct set_window_info_reply
2854 {
2855     struct reply_header __header;
2856     unsigned int   old_style;
2857     unsigned int   old_ex_style;
2858     unsigned int   old_id;
2859     void*          old_instance;
2860     unsigned long  old_user_data;
2861     unsigned long  old_extra_value;
2862 };
2863 #define SET_WIN_STYLE     0x01
2864 #define SET_WIN_EXSTYLE   0x02
2865 #define SET_WIN_ID        0x04
2866 #define SET_WIN_INSTANCE  0x08
2867 #define SET_WIN_USERDATA  0x10
2868 #define SET_WIN_EXTRA     0x20
2869 #define SET_WIN_UNICODE   0x40
2870
2871
2872
2873 struct set_parent_request
2874 {
2875     struct request_header __header;
2876     user_handle_t  handle;
2877     user_handle_t  parent;
2878 };
2879 struct set_parent_reply
2880 {
2881     struct reply_header __header;
2882     user_handle_t  old_parent;
2883     user_handle_t  full_parent;
2884 };
2885
2886
2887
2888 struct get_window_parents_request
2889 {
2890     struct request_header __header;
2891     user_handle_t  handle;
2892 };
2893 struct get_window_parents_reply
2894 {
2895     struct reply_header __header;
2896     int            count;
2897     /* VARARG(parents,user_handles); */
2898 };
2899
2900
2901
2902 struct get_window_children_request
2903 {
2904     struct request_header __header;
2905     obj_handle_t   desktop;
2906     user_handle_t  parent;
2907     atom_t         atom;
2908     thread_id_t    tid;
2909     /* VARARG(class,unicode_str); */
2910 };
2911 struct get_window_children_reply
2912 {
2913     struct reply_header __header;
2914     int            count;
2915     /* VARARG(children,user_handles); */
2916 };
2917
2918
2919
2920 struct get_window_children_from_point_request
2921 {
2922     struct request_header __header;
2923     user_handle_t  parent;
2924     int            x;
2925     int            y;
2926 };
2927 struct get_window_children_from_point_reply
2928 {
2929     struct reply_header __header;
2930     int            count;
2931     /* VARARG(children,user_handles); */
2932 };
2933
2934
2935
2936 struct get_window_tree_request
2937 {
2938     struct request_header __header;
2939     user_handle_t  handle;
2940 };
2941 struct get_window_tree_reply
2942 {
2943     struct reply_header __header;
2944     user_handle_t  parent;
2945     user_handle_t  owner;
2946     user_handle_t  next_sibling;
2947     user_handle_t  prev_sibling;
2948     user_handle_t  first_sibling;
2949     user_handle_t  last_sibling;
2950     user_handle_t  first_child;
2951     user_handle_t  last_child;
2952 };
2953
2954
2955 struct set_window_pos_request
2956 {
2957     struct request_header __header;
2958     unsigned int   flags;
2959     user_handle_t  handle;
2960     user_handle_t  previous;
2961     rectangle_t    window;
2962     rectangle_t    client;
2963     /* VARARG(valid,rectangles); */
2964 };
2965 struct set_window_pos_reply
2966 {
2967     struct reply_header __header;
2968     unsigned int   new_style;
2969     unsigned int   new_ex_style;
2970     rectangle_t    visible;
2971 };
2972
2973
2974
2975 struct set_window_visible_rect_request
2976 {
2977     struct request_header __header;
2978     unsigned int   flags;
2979     user_handle_t  handle;
2980     rectangle_t    visible;
2981 };
2982 struct set_window_visible_rect_reply
2983 {
2984     struct reply_header __header;
2985 };
2986
2987
2988
2989 struct get_window_rectangles_request
2990 {
2991     struct request_header __header;
2992     user_handle_t  handle;
2993 };
2994 struct get_window_rectangles_reply
2995 {
2996     struct reply_header __header;
2997     rectangle_t    window;
2998     rectangle_t    visible;
2999     rectangle_t    client;
3000 };
3001
3002
3003
3004 struct get_window_text_request
3005 {
3006     struct request_header __header;
3007     user_handle_t  handle;
3008 };
3009 struct get_window_text_reply
3010 {
3011     struct reply_header __header;
3012     /* VARARG(text,unicode_str); */
3013 };
3014
3015
3016
3017 struct set_window_text_request
3018 {
3019     struct request_header __header;
3020     user_handle_t  handle;
3021     /* VARARG(text,unicode_str); */
3022 };
3023 struct set_window_text_reply
3024 {
3025     struct reply_header __header;
3026 };
3027
3028
3029
3030 struct get_windows_offset_request
3031 {
3032     struct request_header __header;
3033     user_handle_t  from;
3034     user_handle_t  to;
3035 };
3036 struct get_windows_offset_reply
3037 {
3038     struct reply_header __header;
3039     int            x;
3040     int            y;
3041 };
3042
3043
3044
3045 struct get_visible_region_request
3046 {
3047     struct request_header __header;
3048     user_handle_t  window;
3049     unsigned int   flags;
3050 };
3051 struct get_visible_region_reply
3052 {
3053     struct reply_header __header;
3054     user_handle_t  top_win;
3055     rectangle_t    top_rect;
3056     rectangle_t    win_rect;
3057     data_size_t    total_size;
3058     /* VARARG(region,rectangles); */
3059 };
3060
3061
3062
3063 struct get_window_region_request
3064 {
3065     struct request_header __header;
3066     user_handle_t  window;
3067 };
3068 struct get_window_region_reply
3069 {
3070     struct reply_header __header;
3071     data_size_t    total_size;
3072     /* VARARG(region,rectangles); */
3073 };
3074
3075
3076
3077 struct set_window_region_request
3078 {
3079     struct request_header __header;
3080     user_handle_t  window;
3081     int            redraw;
3082     /* VARARG(region,rectangles); */
3083 };
3084 struct set_window_region_reply
3085 {
3086     struct reply_header __header;
3087 };
3088
3089
3090
3091 struct get_update_region_request
3092 {
3093     struct request_header __header;
3094     user_handle_t  window;
3095     user_handle_t  from_child;
3096     unsigned int   flags;
3097 };
3098 struct get_update_region_reply
3099 {
3100     struct reply_header __header;
3101     user_handle_t  child;
3102     unsigned int   flags;
3103     data_size_t    total_size;
3104     /* VARARG(region,rectangles); */
3105 };
3106 #define UPDATE_NONCLIENT       0x01
3107 #define UPDATE_ERASE           0x02
3108 #define UPDATE_PAINT           0x04
3109 #define UPDATE_INTERNALPAINT   0x08
3110 #define UPDATE_ALLCHILDREN     0x10
3111 #define UPDATE_NOCHILDREN      0x20
3112 #define UPDATE_NOREGION        0x40
3113 #define UPDATE_DELAYED_ERASE   0x80
3114
3115
3116
3117 struct update_window_zorder_request
3118 {
3119     struct request_header __header;
3120     user_handle_t  window;
3121     rectangle_t    rect;
3122 };
3123 struct update_window_zorder_reply
3124 {
3125     struct reply_header __header;
3126 };
3127
3128
3129
3130 struct redraw_window_request
3131 {
3132     struct request_header __header;
3133     user_handle_t  window;
3134     unsigned int   flags;
3135     /* VARARG(region,rectangles); */
3136 };
3137 struct redraw_window_reply
3138 {
3139     struct reply_header __header;
3140 };
3141
3142
3143
3144 struct set_window_property_request
3145 {
3146     struct request_header __header;
3147     user_handle_t  window;
3148     atom_t         atom;
3149     obj_handle_t   handle;
3150     /* VARARG(name,unicode_str); */
3151 };
3152 struct set_window_property_reply
3153 {
3154     struct reply_header __header;
3155 };
3156
3157
3158
3159 struct remove_window_property_request
3160 {
3161     struct request_header __header;
3162     user_handle_t  window;
3163     atom_t         atom;
3164     /* VARARG(name,unicode_str); */
3165 };
3166 struct remove_window_property_reply
3167 {
3168     struct reply_header __header;
3169     obj_handle_t   handle;
3170 };
3171
3172
3173
3174 struct get_window_property_request
3175 {
3176     struct request_header __header;
3177     user_handle_t  window;
3178     atom_t         atom;
3179     /* VARARG(name,unicode_str); */
3180 };
3181 struct get_window_property_reply
3182 {
3183     struct reply_header __header;
3184     obj_handle_t   handle;
3185 };
3186
3187
3188
3189 struct get_window_properties_request
3190 {
3191     struct request_header __header;
3192     user_handle_t  window;
3193 };
3194 struct get_window_properties_reply
3195 {
3196     struct reply_header __header;
3197     int            total;
3198     /* VARARG(props,properties); */
3199 };
3200
3201
3202
3203 struct create_winstation_request
3204 {
3205     struct request_header __header;
3206     unsigned int flags;
3207     unsigned int access;
3208     unsigned int attributes;
3209     /* VARARG(name,unicode_str); */
3210 };
3211 struct create_winstation_reply
3212 {
3213     struct reply_header __header;
3214     obj_handle_t handle;
3215 };
3216
3217
3218
3219 struct open_winstation_request
3220 {
3221     struct request_header __header;
3222     unsigned int access;
3223     unsigned int attributes;
3224     /* VARARG(name,unicode_str); */
3225 };
3226 struct open_winstation_reply
3227 {
3228     struct reply_header __header;
3229     obj_handle_t handle;
3230 };
3231
3232
3233
3234 struct close_winstation_request
3235 {
3236     struct request_header __header;
3237     obj_handle_t handle;
3238 };
3239 struct close_winstation_reply
3240 {
3241     struct reply_header __header;
3242 };
3243
3244
3245
3246 struct get_process_winstation_request
3247 {
3248     struct request_header __header;
3249 };
3250 struct get_process_winstation_reply
3251 {
3252     struct reply_header __header;
3253     obj_handle_t handle;
3254 };
3255
3256
3257
3258 struct set_process_winstation_request
3259 {
3260     struct request_header __header;
3261     obj_handle_t handle;
3262 };
3263 struct set_process_winstation_reply
3264 {
3265     struct reply_header __header;
3266 };
3267
3268
3269
3270 struct enum_winstation_request
3271 {
3272     struct request_header __header;
3273     unsigned int index;
3274 };
3275 struct enum_winstation_reply
3276 {
3277     struct reply_header __header;
3278     unsigned int next;
3279     /* VARARG(name,unicode_str); */
3280 };
3281
3282
3283
3284 struct create_desktop_request
3285 {
3286     struct request_header __header;
3287     unsigned int flags;
3288     unsigned int access;
3289     unsigned int attributes;
3290     /* VARARG(name,unicode_str); */
3291 };
3292 struct create_desktop_reply
3293 {
3294     struct reply_header __header;
3295     obj_handle_t handle;
3296 };
3297
3298
3299
3300 struct open_desktop_request
3301 {
3302     struct request_header __header;
3303     obj_handle_t winsta;
3304     unsigned int flags;
3305     unsigned int access;
3306     unsigned int attributes;
3307     /* VARARG(name,unicode_str); */
3308 };
3309 struct open_desktop_reply
3310 {
3311     struct reply_header __header;
3312     obj_handle_t handle;
3313 };
3314
3315
3316
3317 struct close_desktop_request
3318 {
3319     struct request_header __header;
3320     obj_handle_t handle;
3321 };
3322 struct close_desktop_reply
3323 {
3324     struct reply_header __header;
3325 };
3326
3327
3328
3329 struct get_thread_desktop_request
3330 {
3331     struct request_header __header;
3332     thread_id_t  tid;
3333 };
3334 struct get_thread_desktop_reply
3335 {
3336     struct reply_header __header;
3337     obj_handle_t handle;
3338 };
3339
3340
3341
3342 struct set_thread_desktop_request
3343 {
3344     struct request_header __header;
3345     obj_handle_t handle;
3346 };
3347 struct set_thread_desktop_reply
3348 {
3349     struct reply_header __header;
3350 };
3351
3352
3353
3354 struct enum_desktop_request
3355 {
3356     struct request_header __header;
3357     obj_handle_t winstation;
3358     unsigned int index;
3359 };
3360 struct enum_desktop_reply
3361 {
3362     struct reply_header __header;
3363     unsigned int next;
3364     /* VARARG(name,unicode_str); */
3365 };
3366
3367
3368
3369 struct set_user_object_info_request
3370 {
3371     struct request_header __header;
3372     obj_handle_t handle;
3373     unsigned int flags;
3374     unsigned int obj_flags;
3375 };
3376 struct set_user_object_info_reply
3377 {
3378     struct reply_header __header;
3379     int          is_desktop;
3380     unsigned int old_obj_flags;
3381     /* VARARG(name,unicode_str); */
3382 };
3383 #define SET_USER_OBJECT_FLAGS 1
3384
3385
3386
3387 struct attach_thread_input_request
3388 {
3389     struct request_header __header;
3390     thread_id_t    tid_from;
3391     thread_id_t    tid_to;
3392     int            attach;
3393 };
3394 struct attach_thread_input_reply
3395 {
3396     struct reply_header __header;
3397 };
3398
3399
3400
3401 struct get_thread_input_request
3402 {
3403     struct request_header __header;
3404     thread_id_t    tid;
3405 };
3406 struct get_thread_input_reply
3407 {
3408     struct reply_header __header;
3409     user_handle_t  focus;
3410     user_handle_t  capture;
3411     user_handle_t  active;
3412     user_handle_t  foreground;
3413     user_handle_t  menu_owner;
3414     user_handle_t  move_size;
3415     user_handle_t  caret;
3416     rectangle_t    rect;
3417 };
3418
3419
3420
3421 struct get_last_input_time_request
3422 {
3423     struct request_header __header;
3424 };
3425 struct get_last_input_time_reply
3426 {
3427     struct reply_header __header;
3428     unsigned int time;
3429 };
3430
3431
3432
3433 struct get_key_state_request
3434 {
3435     struct request_header __header;
3436     thread_id_t    tid;
3437     int            key;
3438 };
3439 struct get_key_state_reply
3440 {
3441     struct reply_header __header;
3442     unsigned char  state;
3443     /* VARARG(keystate,bytes); */
3444 };
3445
3446
3447 struct set_key_state_request
3448 {
3449     struct request_header __header;
3450     thread_id_t    tid;
3451     /* VARARG(keystate,bytes); */
3452 };
3453 struct set_key_state_reply
3454 {
3455     struct reply_header __header;
3456 };
3457
3458
3459 struct set_foreground_window_request
3460 {
3461     struct request_header __header;
3462     user_handle_t  handle;
3463 };
3464 struct set_foreground_window_reply
3465 {
3466     struct reply_header __header;
3467     user_handle_t  previous;
3468     int            send_msg_old;
3469     int            send_msg_new;
3470 };
3471
3472
3473 struct set_focus_window_request
3474 {
3475     struct request_header __header;
3476     user_handle_t  handle;
3477 };
3478 struct set_focus_window_reply
3479 {
3480     struct reply_header __header;
3481     user_handle_t  previous;
3482 };
3483
3484
3485 struct set_active_window_request
3486 {
3487     struct request_header __header;
3488     user_handle_t  handle;
3489 };
3490 struct set_active_window_reply
3491 {
3492     struct reply_header __header;
3493     user_handle_t  previous;
3494 };
3495
3496
3497 struct set_capture_window_request
3498 {
3499     struct request_header __header;
3500     user_handle_t  handle;
3501     unsigned int   flags;
3502 };
3503 struct set_capture_window_reply
3504 {
3505     struct reply_header __header;
3506     user_handle_t  previous;
3507     user_handle_t  full_handle;
3508 };
3509 #define CAPTURE_MENU     0x01
3510 #define CAPTURE_MOVESIZE 0x02
3511
3512
3513
3514 struct set_caret_window_request
3515 {
3516     struct request_header __header;
3517     user_handle_t  handle;
3518     int            width;
3519     int            height;
3520 };
3521 struct set_caret_window_reply
3522 {
3523     struct reply_header __header;
3524     user_handle_t  previous;
3525     rectangle_t    old_rect;
3526     int            old_hide;
3527     int            old_state;
3528 };
3529
3530
3531
3532 struct set_caret_info_request
3533 {
3534     struct request_header __header;
3535     unsigned int   flags;
3536     user_handle_t  handle;
3537     int            x;
3538     int            y;
3539     int            hide;
3540     int            state;
3541 };
3542 struct set_caret_info_reply
3543 {
3544     struct reply_header __header;
3545     user_handle_t  full_handle;
3546     rectangle_t    old_rect;
3547     int            old_hide;
3548     int            old_state;
3549 };
3550 #define SET_CARET_POS        0x01
3551 #define SET_CARET_HIDE       0x02
3552 #define SET_CARET_STATE      0x04
3553
3554
3555
3556 struct set_hook_request
3557 {
3558     struct request_header __header;
3559     int            id;
3560     process_id_t   pid;
3561     thread_id_t    tid;
3562     int            event_min;
3563     int            event_max;
3564     int            flags;
3565     void*          proc;
3566     int            unicode;
3567     /* VARARG(module,unicode_str); */
3568 };
3569 struct set_hook_reply
3570 {
3571     struct reply_header __header;
3572     user_handle_t  handle;
3573     unsigned int   active_hooks;
3574 };
3575
3576
3577
3578 struct remove_hook_request
3579 {
3580     struct request_header __header;
3581     user_handle_t  handle;
3582     int            id;
3583     void*          proc;
3584 };
3585 struct remove_hook_reply
3586 {
3587     struct reply_header __header;
3588     unsigned int   active_hooks;
3589 };
3590
3591
3592
3593 struct start_hook_chain_request
3594 {
3595     struct request_header __header;
3596     int            id;
3597     int            event;
3598     user_handle_t  window;
3599     int            object_id;
3600     int            child_id;
3601 };
3602 struct start_hook_chain_reply
3603 {
3604     struct reply_header __header;
3605     user_handle_t  handle;
3606     process_id_t   pid;
3607     thread_id_t    tid;
3608     void*          proc;
3609     int            unicode;
3610     unsigned int   active_hooks;
3611     /* VARARG(module,unicode_str); */
3612 };
3613
3614
3615
3616 struct finish_hook_chain_request
3617 {
3618     struct request_header __header;
3619     int            id;
3620 };
3621 struct finish_hook_chain_reply
3622 {
3623     struct reply_header __header;
3624 };
3625
3626
3627
3628 struct get_hook_info_request
3629 {
3630     struct request_header __header;
3631     user_handle_t  handle;
3632     int            get_next;
3633     int            event;
3634     user_handle_t  window;
3635     int            object_id;
3636     int            child_id;
3637 };
3638 struct get_hook_info_reply
3639 {
3640     struct reply_header __header;
3641     user_handle_t  handle;
3642     int            id;
3643     process_id_t   pid;
3644     thread_id_t    tid;
3645     void*          proc;
3646     int            unicode;
3647     /* VARARG(module,unicode_str); */
3648 };
3649
3650
3651
3652 struct create_class_request
3653 {
3654     struct request_header __header;
3655     int            local;
3656     atom_t         atom;
3657     unsigned int   style;
3658     void*          instance;
3659     int            extra;
3660     int            win_extra;
3661     void*          client_ptr;
3662     /* VARARG(name,unicode_str); */
3663 };
3664 struct create_class_reply
3665 {
3666     struct reply_header __header;
3667     atom_t         atom;
3668 };
3669
3670
3671
3672 struct destroy_class_request
3673 {
3674     struct request_header __header;
3675     atom_t         atom;
3676     void*          instance;
3677     /* VARARG(name,unicode_str); */
3678 };
3679 struct destroy_class_reply
3680 {
3681     struct reply_header __header;
3682     void*          client_ptr;
3683 };
3684
3685
3686
3687 struct set_class_info_request
3688 {
3689     struct request_header __header;
3690     user_handle_t  window;
3691     unsigned int   flags;
3692     atom_t         atom;
3693     unsigned int   style;
3694     int            win_extra;
3695     void*          instance;
3696     int            extra_offset;
3697     data_size_t    extra_size;
3698     unsigned long  extra_value;
3699 };
3700 struct set_class_info_reply
3701 {
3702     struct reply_header __header;
3703     atom_t         old_atom;
3704     unsigned int   old_style;
3705     int            old_extra;
3706     int            old_win_extra;
3707     void*          old_instance;
3708     unsigned long  old_extra_value;
3709 };
3710 #define SET_CLASS_ATOM      0x0001
3711 #define SET_CLASS_STYLE     0x0002
3712 #define SET_CLASS_WINEXTRA  0x0004
3713 #define SET_CLASS_INSTANCE  0x0008
3714 #define SET_CLASS_EXTRA     0x0010
3715
3716
3717
3718 struct set_clipboard_info_request
3719 {
3720     struct request_header __header;
3721     unsigned int   flags;
3722     user_handle_t  clipboard;
3723     user_handle_t  owner;
3724     user_handle_t  viewer;
3725     unsigned int   seqno;
3726 };
3727 struct set_clipboard_info_reply
3728 {
3729     struct reply_header __header;
3730     unsigned int   flags;
3731     user_handle_t  old_clipboard;
3732     user_handle_t  old_owner;
3733     user_handle_t  old_viewer;
3734     unsigned int   seqno;
3735 };
3736
3737 #define SET_CB_OPEN      0x001
3738 #define SET_CB_OWNER     0x002
3739 #define SET_CB_VIEWER    0x004
3740 #define SET_CB_SEQNO     0x008
3741 #define SET_CB_RELOWNER  0x010
3742 #define SET_CB_CLOSE     0x020
3743 #define CB_OPEN          0x040
3744 #define CB_OWNER         0x080
3745 #define CB_PROCESS       0x100
3746
3747
3748
3749 struct open_token_request
3750 {
3751     struct request_header __header;
3752     obj_handle_t   handle;
3753     unsigned int   access;
3754     unsigned int   attributes;
3755     unsigned int   flags;
3756 };
3757 struct open_token_reply
3758 {
3759     struct reply_header __header;
3760     obj_handle_t   token;
3761 };
3762 #define OPEN_TOKEN_THREAD   1
3763 #define OPEN_TOKEN_AS_SELF  2
3764
3765
3766
3767 struct set_global_windows_request
3768 {
3769     struct request_header __header;
3770     unsigned int   flags;
3771     user_handle_t  shell_window;
3772     user_handle_t  shell_listview;
3773     user_handle_t  progman_window;
3774     user_handle_t  taskman_window;
3775 };
3776 struct set_global_windows_reply
3777 {
3778     struct reply_header __header;
3779     user_handle_t  old_shell_window;
3780     user_handle_t  old_shell_listview;
3781     user_handle_t  old_progman_window;
3782     user_handle_t  old_taskman_window;
3783 };
3784 #define SET_GLOBAL_SHELL_WINDOWS   0x01
3785 #define SET_GLOBAL_PROGMAN_WINDOW  0x02
3786 #define SET_GLOBAL_TASKMAN_WINDOW  0x04
3787
3788
3789 struct adjust_token_privileges_request
3790 {
3791     struct request_header __header;
3792     obj_handle_t  handle;
3793     int           disable_all;
3794     int           get_modified_state;
3795     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3796 };
3797 struct adjust_token_privileges_reply
3798 {
3799     struct reply_header __header;
3800     unsigned int  len;
3801     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3802 };
3803
3804
3805 struct get_token_privileges_request
3806 {
3807     struct request_header __header;
3808     obj_handle_t  handle;
3809 };
3810 struct get_token_privileges_reply
3811 {
3812     struct reply_header __header;
3813     unsigned int  len;
3814     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3815 };
3816
3817
3818 struct check_token_privileges_request
3819 {
3820     struct request_header __header;
3821     obj_handle_t  handle;
3822     int           all_required;
3823     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3824 };
3825 struct check_token_privileges_reply
3826 {
3827     struct reply_header __header;
3828     int           has_privileges;
3829     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3830 };
3831
3832 struct duplicate_token_request
3833 {
3834     struct request_header __header;
3835     obj_handle_t  handle;
3836     unsigned int  access;
3837     unsigned int  attributes;
3838     int           primary;
3839     int           impersonation_level;
3840 };
3841 struct duplicate_token_reply
3842 {
3843     struct reply_header __header;
3844     obj_handle_t  new_handle;
3845 };
3846
3847 struct access_check_request
3848 {
3849     struct request_header __header;
3850     obj_handle_t    handle;
3851     unsigned int    desired_access;
3852     unsigned int    mapping_read;
3853     unsigned int    mapping_write;
3854     unsigned int    mapping_execute;
3855     unsigned int    mapping_all;
3856     /* VARARG(sd,security_descriptor); */
3857 };
3858 struct access_check_reply
3859 {
3860     struct reply_header __header;
3861     unsigned int    access_granted;
3862     unsigned int    access_status;
3863     unsigned int    privileges_len;
3864     /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
3865 };
3866
3867 struct get_token_user_request
3868 {
3869     struct request_header __header;
3870     obj_handle_t    handle;
3871 };
3872 struct get_token_user_reply
3873 {
3874     struct reply_header __header;
3875     data_size_t     user_len;
3876     /* VARARG(user,SID); */
3877 };
3878
3879 struct get_token_groups_request
3880 {
3881     struct request_header __header;
3882     obj_handle_t    handle;
3883 };
3884 struct get_token_groups_reply
3885 {
3886     struct reply_header __header;
3887     data_size_t     user_len;
3888     /* VARARG(user,token_groups); */
3889 };
3890
3891 struct set_security_object_request
3892 {
3893     struct request_header __header;
3894     obj_handle_t    handle;
3895     unsigned int    security_info;
3896     /* VARARG(sd,security_descriptor); */
3897 };
3898 struct set_security_object_reply
3899 {
3900     struct reply_header __header;
3901 };
3902
3903 struct get_security_object_request
3904 {
3905     struct request_header __header;
3906     obj_handle_t    handle;
3907     unsigned int    security_info;
3908 };
3909 struct get_security_object_reply
3910 {
3911     struct reply_header __header;
3912     unsigned int    sd_len;
3913     /* VARARG(sd,security_descriptor); */
3914 };
3915
3916
3917 struct create_mailslot_request
3918 {
3919     struct request_header __header;
3920     unsigned int   access;
3921     unsigned int   attributes;
3922     obj_handle_t   rootdir;
3923     unsigned int   max_msgsize;
3924     timeout_t      read_timeout;
3925     /* VARARG(name,unicode_str); */
3926 };
3927 struct create_mailslot_reply
3928 {
3929     struct reply_header __header;
3930     obj_handle_t   handle;
3931 };
3932
3933
3934
3935 struct set_mailslot_info_request
3936 {
3937     struct request_header __header;
3938     obj_handle_t   handle;
3939     unsigned int   flags;
3940     timeout_t      read_timeout;
3941 };
3942 struct set_mailslot_info_reply
3943 {
3944     struct reply_header __header;
3945     unsigned int   max_msgsize;
3946     timeout_t      read_timeout;
3947 };
3948 #define MAILSLOT_SET_READ_TIMEOUT  1
3949
3950
3951
3952 struct create_directory_request
3953 {
3954     struct request_header __header;
3955     unsigned int   access;
3956     unsigned int   attributes;
3957     obj_handle_t   rootdir;
3958     /* VARARG(directory_name,unicode_str); */
3959 };
3960 struct create_directory_reply
3961 {
3962     struct reply_header __header;
3963     obj_handle_t   handle;
3964 };
3965
3966
3967
3968 struct open_directory_request
3969 {
3970     struct request_header __header;
3971     unsigned int   access;
3972     unsigned int   attributes;
3973     obj_handle_t   rootdir;
3974     /* VARARG(directory_name,unicode_str); */
3975 };
3976 struct open_directory_reply
3977 {
3978     struct reply_header __header;
3979     obj_handle_t   handle;
3980 };
3981
3982
3983
3984 struct get_directory_entry_request
3985 {
3986     struct request_header __header;
3987     obj_handle_t   handle;
3988     unsigned int   index;
3989 };
3990 struct get_directory_entry_reply
3991 {
3992     struct reply_header __header;
3993     size_t         name_len;
3994     /* VARARG(name,unicode_str,name_len); */
3995     /* VARARG(type,unicode_str); */
3996 };
3997
3998
3999
4000 struct create_symlink_request
4001 {
4002     struct request_header __header;
4003     unsigned int   access;
4004     unsigned int   attributes;
4005     obj_handle_t   rootdir;
4006     data_size_t    name_len;
4007     /* VARARG(name,unicode_str,name_len); */
4008     /* VARARG(target_name,unicode_str); */
4009 };
4010 struct create_symlink_reply
4011 {
4012     struct reply_header __header;
4013     obj_handle_t   handle;
4014 };
4015
4016
4017
4018 struct open_symlink_request
4019 {
4020     struct request_header __header;
4021     unsigned int   access;
4022     unsigned int   attributes;
4023     obj_handle_t   rootdir;
4024     /* VARARG(name,unicode_str); */
4025 };
4026 struct open_symlink_reply
4027 {
4028     struct reply_header __header;
4029     obj_handle_t   handle;
4030 };
4031
4032
4033
4034 struct query_symlink_request
4035 {
4036     struct request_header __header;
4037     obj_handle_t   handle;
4038 };
4039 struct query_symlink_reply
4040 {
4041     struct reply_header __header;
4042     /* VARARG(target_name,unicode_str); */
4043 };
4044
4045
4046
4047 struct get_object_info_request
4048 {
4049     struct request_header __header;
4050     obj_handle_t   handle;
4051 };
4052 struct get_object_info_reply
4053 {
4054     struct reply_header __header;
4055     unsigned int   access;
4056     unsigned int   ref_count;
4057 };
4058
4059
4060 struct get_token_impersonation_level_request
4061 {
4062     struct request_header __header;
4063     obj_handle_t   handle;
4064 };
4065 struct get_token_impersonation_level_reply
4066 {
4067     struct reply_header __header;
4068     int            impersonation_level;
4069 };
4070
4071
4072 struct allocate_locally_unique_id_request
4073 {
4074     struct request_header __header;
4075 };
4076 struct allocate_locally_unique_id_reply
4077 {
4078     struct reply_header __header;
4079     luid_t         luid;
4080 };
4081
4082
4083
4084 struct create_device_manager_request
4085 {
4086     struct request_header __header;
4087     unsigned int access;
4088     unsigned int attributes;
4089 };
4090 struct create_device_manager_reply
4091 {
4092     struct reply_header __header;
4093     obj_handle_t handle;
4094 };
4095
4096
4097
4098 struct create_device_request
4099 {
4100     struct request_header __header;
4101     unsigned int access;
4102     unsigned int attributes;
4103     obj_handle_t rootdir;
4104     obj_handle_t manager;
4105     void*        user_ptr;
4106     /* VARARG(name,unicode_str); */
4107 };
4108 struct create_device_reply
4109 {
4110     struct reply_header __header;
4111     obj_handle_t handle;
4112 };
4113
4114
4115
4116 struct delete_device_request
4117 {
4118     struct request_header __header;
4119     obj_handle_t handle;
4120 };
4121 struct delete_device_reply
4122 {
4123     struct reply_header __header;
4124 };
4125
4126
4127
4128 struct get_next_device_request_request
4129 {
4130     struct request_header __header;
4131     obj_handle_t manager;
4132     obj_handle_t prev;
4133     unsigned int status;
4134     /* VARARG(prev_data,bytes); */
4135 };
4136 struct get_next_device_request_reply
4137 {
4138     struct reply_header __header;
4139     obj_handle_t next;
4140     ioctl_code_t code;
4141     void*        user_ptr;
4142     data_size_t  in_size;
4143     data_size_t  out_size;
4144     /* VARARG(next_data,bytes); */
4145 };
4146
4147
4148
4149 struct make_process_system_request
4150 {
4151     struct request_header __header;
4152 };
4153 struct make_process_system_reply
4154 {
4155     struct reply_header __header;
4156     obj_handle_t event;
4157 };
4158
4159
4160
4161 struct get_token_statistics_request
4162 {
4163     struct request_header __header;
4164     obj_handle_t   handle;
4165 };
4166 struct get_token_statistics_reply
4167 {
4168     struct reply_header __header;
4169     luid_t         token_id;
4170     luid_t         modified_id;
4171     int            primary;
4172     int            impersonation_level;
4173     int            group_count;
4174     int            privilege_count;
4175 };
4176
4177
4178
4179 struct create_completion_request
4180 {
4181     struct request_header __header;
4182     unsigned int access;
4183     unsigned int attributes;
4184     unsigned int concurrent;
4185     obj_handle_t rootdir;
4186     /* VARARG(filename,string); */
4187 };
4188 struct create_completion_reply
4189 {
4190     struct reply_header __header;
4191     obj_handle_t handle;
4192 };
4193
4194
4195
4196 struct open_completion_request
4197 {
4198     struct request_header __header;
4199     unsigned int access;
4200     unsigned int attributes;
4201     obj_handle_t rootdir;
4202     /* VARARG(filename,string); */
4203 };
4204 struct open_completion_reply
4205 {
4206     struct reply_header __header;
4207     obj_handle_t handle;
4208 };
4209
4210
4211
4212 struct add_completion_request
4213 {
4214     struct request_header __header;
4215     obj_handle_t  handle;
4216     unsigned long ckey;
4217     unsigned long cvalue;
4218     unsigned long information;
4219     unsigned int  status;
4220 };
4221 struct add_completion_reply
4222 {
4223     struct reply_header __header;
4224 };
4225
4226
4227
4228 struct remove_completion_request
4229 {
4230     struct request_header __header;
4231     obj_handle_t handle;
4232 };
4233 struct remove_completion_reply
4234 {
4235     struct reply_header __header;
4236     unsigned long ckey;
4237     unsigned long cvalue;
4238     unsigned long information;
4239     unsigned int  status;
4240 };
4241
4242
4243
4244 struct query_completion_request
4245 {
4246     struct request_header __header;
4247     obj_handle_t  handle;
4248 };
4249 struct query_completion_reply
4250 {
4251     struct reply_header __header;
4252     unsigned int  depth;
4253 };
4254
4255
4256
4257 struct set_completion_info_request
4258 {
4259     struct request_header __header;
4260     obj_handle_t  handle;
4261     obj_handle_t  chandle;
4262     unsigned long ckey;
4263 };
4264 struct set_completion_info_reply
4265 {
4266     struct reply_header __header;
4267 };
4268
4269
4270
4271 struct add_fd_completion_request
4272 {
4273     struct request_header __header;
4274     obj_handle_t   handle;
4275     unsigned long  cvalue;
4276     unsigned int   status;
4277     unsigned long  information;
4278 };
4279 struct add_fd_completion_reply
4280 {
4281     struct reply_header __header;
4282 };
4283
4284
4285 enum request
4286 {
4287     REQ_new_process,
4288     REQ_get_new_process_info,
4289     REQ_new_thread,
4290     REQ_get_startup_info,
4291     REQ_init_process_done,
4292     REQ_init_thread,
4293     REQ_terminate_process,
4294     REQ_terminate_thread,
4295     REQ_get_process_info,
4296     REQ_set_process_info,
4297     REQ_get_thread_info,
4298     REQ_set_thread_info,
4299     REQ_get_dll_info,
4300     REQ_suspend_thread,
4301     REQ_resume_thread,
4302     REQ_load_dll,
4303     REQ_unload_dll,
4304     REQ_queue_apc,
4305     REQ_get_apc_result,
4306     REQ_close_handle,
4307     REQ_set_handle_info,
4308     REQ_dup_handle,
4309     REQ_open_process,
4310     REQ_open_thread,
4311     REQ_select,
4312     REQ_create_event,
4313     REQ_event_op,
4314     REQ_open_event,
4315     REQ_create_mutex,
4316     REQ_release_mutex,
4317     REQ_open_mutex,
4318     REQ_create_semaphore,
4319     REQ_release_semaphore,
4320     REQ_open_semaphore,
4321     REQ_create_file,
4322     REQ_open_file_object,
4323     REQ_alloc_file_handle,
4324     REQ_get_handle_fd,
4325     REQ_flush_file,
4326     REQ_lock_file,
4327     REQ_unlock_file,
4328     REQ_create_socket,
4329     REQ_accept_socket,
4330     REQ_set_socket_event,
4331     REQ_get_socket_event,
4332     REQ_enable_socket_event,
4333     REQ_set_socket_deferred,
4334     REQ_alloc_console,
4335     REQ_free_console,
4336     REQ_get_console_renderer_events,
4337     REQ_open_console,
4338     REQ_get_console_wait_event,
4339     REQ_get_console_mode,
4340     REQ_set_console_mode,
4341     REQ_set_console_input_info,
4342     REQ_get_console_input_info,
4343     REQ_append_console_input_history,
4344     REQ_get_console_input_history,
4345     REQ_create_console_output,
4346     REQ_set_console_output_info,
4347     REQ_get_console_output_info,
4348     REQ_write_console_input,
4349     REQ_read_console_input,
4350     REQ_write_console_output,
4351     REQ_fill_console_output,
4352     REQ_read_console_output,
4353     REQ_move_console_output,
4354     REQ_send_console_signal,
4355     REQ_read_directory_changes,
4356     REQ_read_change,
4357     REQ_create_mapping,
4358     REQ_open_mapping,
4359     REQ_get_mapping_info,
4360     REQ_create_snapshot,
4361     REQ_next_process,
4362     REQ_next_thread,
4363     REQ_next_module,
4364     REQ_wait_debug_event,
4365     REQ_queue_exception_event,
4366     REQ_get_exception_status,
4367     REQ_output_debug_string,
4368     REQ_continue_debug_event,
4369     REQ_debug_process,
4370     REQ_debug_break,
4371     REQ_set_debugger_kill_on_exit,
4372     REQ_read_process_memory,
4373     REQ_write_process_memory,
4374     REQ_create_key,
4375     REQ_open_key,
4376     REQ_delete_key,
4377     REQ_flush_key,
4378     REQ_enum_key,
4379     REQ_set_key_value,
4380     REQ_get_key_value,
4381     REQ_enum_key_value,
4382     REQ_delete_key_value,
4383     REQ_load_registry,
4384     REQ_unload_registry,
4385     REQ_save_registry,
4386     REQ_set_registry_notification,
4387     REQ_create_timer,
4388     REQ_open_timer,
4389     REQ_set_timer,
4390     REQ_cancel_timer,
4391     REQ_get_timer_info,
4392     REQ_get_thread_context,
4393     REQ_set_thread_context,
4394     REQ_get_selector_entry,
4395     REQ_add_atom,
4396     REQ_delete_atom,
4397     REQ_find_atom,
4398     REQ_get_atom_information,
4399     REQ_set_atom_information,
4400     REQ_empty_atom_table,
4401     REQ_init_atom_table,
4402     REQ_get_msg_queue,
4403     REQ_set_queue_fd,
4404     REQ_set_queue_mask,
4405     REQ_get_queue_status,
4406     REQ_get_process_idle_event,
4407     REQ_send_message,
4408     REQ_post_quit_message,
4409     REQ_send_hardware_message,
4410     REQ_get_message,
4411     REQ_reply_message,
4412     REQ_accept_hardware_message,
4413     REQ_get_message_reply,
4414     REQ_set_win_timer,
4415     REQ_kill_win_timer,
4416     REQ_is_window_hung,
4417     REQ_get_serial_info,
4418     REQ_set_serial_info,
4419     REQ_register_async,
4420     REQ_cancel_async,
4421     REQ_ioctl,
4422     REQ_get_ioctl_result,
4423     REQ_create_named_pipe,
4424     REQ_get_named_pipe_info,
4425     REQ_create_window,
4426     REQ_destroy_window,
4427     REQ_get_desktop_window,
4428     REQ_set_window_owner,
4429     REQ_get_window_info,
4430     REQ_set_window_info,
4431     REQ_set_parent,
4432     REQ_get_window_parents,
4433     REQ_get_window_children,
4434     REQ_get_window_children_from_point,
4435     REQ_get_window_tree,
4436     REQ_set_window_pos,
4437     REQ_set_window_visible_rect,
4438     REQ_get_window_rectangles,
4439     REQ_get_window_text,
4440     REQ_set_window_text,
4441     REQ_get_windows_offset,
4442     REQ_get_visible_region,
4443     REQ_get_window_region,
4444     REQ_set_window_region,
4445     REQ_get_update_region,
4446     REQ_update_window_zorder,
4447     REQ_redraw_window,
4448     REQ_set_window_property,
4449     REQ_remove_window_property,
4450     REQ_get_window_property,
4451     REQ_get_window_properties,
4452     REQ_create_winstation,
4453     REQ_open_winstation,
4454     REQ_close_winstation,
4455     REQ_get_process_winstation,
4456     REQ_set_process_winstation,
4457     REQ_enum_winstation,
4458     REQ_create_desktop,
4459     REQ_open_desktop,
4460     REQ_close_desktop,
4461     REQ_get_thread_desktop,
4462     REQ_set_thread_desktop,
4463     REQ_enum_desktop,
4464     REQ_set_user_object_info,
4465     REQ_attach_thread_input,
4466     REQ_get_thread_input,
4467     REQ_get_last_input_time,
4468     REQ_get_key_state,
4469     REQ_set_key_state,
4470     REQ_set_foreground_window,
4471     REQ_set_focus_window,
4472     REQ_set_active_window,
4473     REQ_set_capture_window,
4474     REQ_set_caret_window,
4475     REQ_set_caret_info,
4476     REQ_set_hook,
4477     REQ_remove_hook,
4478     REQ_start_hook_chain,
4479     REQ_finish_hook_chain,
4480     REQ_get_hook_info,
4481     REQ_create_class,
4482     REQ_destroy_class,
4483     REQ_set_class_info,
4484     REQ_set_clipboard_info,
4485     REQ_open_token,
4486     REQ_set_global_windows,
4487     REQ_adjust_token_privileges,
4488     REQ_get_token_privileges,
4489     REQ_check_token_privileges,
4490     REQ_duplicate_token,
4491     REQ_access_check,
4492     REQ_get_token_user,
4493     REQ_get_token_groups,
4494     REQ_set_security_object,
4495     REQ_get_security_object,
4496     REQ_create_mailslot,
4497     REQ_set_mailslot_info,
4498     REQ_create_directory,
4499     REQ_open_directory,
4500     REQ_get_directory_entry,
4501     REQ_create_symlink,
4502     REQ_open_symlink,
4503     REQ_query_symlink,
4504     REQ_get_object_info,
4505     REQ_get_token_impersonation_level,
4506     REQ_allocate_locally_unique_id,
4507     REQ_create_device_manager,
4508     REQ_create_device,
4509     REQ_delete_device,
4510     REQ_get_next_device_request,
4511     REQ_make_process_system,
4512     REQ_get_token_statistics,
4513     REQ_create_completion,
4514     REQ_open_completion,
4515     REQ_add_completion,
4516     REQ_remove_completion,
4517     REQ_query_completion,
4518     REQ_set_completion_info,
4519     REQ_add_fd_completion,
4520     REQ_NB_REQUESTS
4521 };
4522
4523 union generic_request
4524 {
4525     struct request_max_size max_size;
4526     struct request_header request_header;
4527     struct new_process_request new_process_request;
4528     struct get_new_process_info_request get_new_process_info_request;
4529     struct new_thread_request new_thread_request;
4530     struct get_startup_info_request get_startup_info_request;
4531     struct init_process_done_request init_process_done_request;
4532     struct init_thread_request init_thread_request;
4533     struct terminate_process_request terminate_process_request;
4534     struct terminate_thread_request terminate_thread_request;
4535     struct get_process_info_request get_process_info_request;
4536     struct set_process_info_request set_process_info_request;
4537     struct get_thread_info_request get_thread_info_request;
4538     struct set_thread_info_request set_thread_info_request;
4539     struct get_dll_info_request get_dll_info_request;
4540     struct suspend_thread_request suspend_thread_request;
4541     struct resume_thread_request resume_thread_request;
4542     struct load_dll_request load_dll_request;
4543     struct unload_dll_request unload_dll_request;
4544     struct queue_apc_request queue_apc_request;
4545     struct get_apc_result_request get_apc_result_request;
4546     struct close_handle_request close_handle_request;
4547     struct set_handle_info_request set_handle_info_request;
4548     struct dup_handle_request dup_handle_request;
4549     struct open_process_request open_process_request;
4550     struct open_thread_request open_thread_request;
4551     struct select_request select_request;
4552     struct create_event_request create_event_request;
4553     struct event_op_request event_op_request;
4554     struct open_event_request open_event_request;
4555     struct create_mutex_request create_mutex_request;
4556     struct release_mutex_request release_mutex_request;
4557     struct open_mutex_request open_mutex_request;
4558     struct create_semaphore_request create_semaphore_request;
4559     struct release_semaphore_request release_semaphore_request;
4560     struct open_semaphore_request open_semaphore_request;
4561     struct create_file_request create_file_request;
4562     struct open_file_object_request open_file_object_request;
4563     struct alloc_file_handle_request alloc_file_handle_request;
4564     struct get_handle_fd_request get_handle_fd_request;
4565     struct flush_file_request flush_file_request;
4566     struct lock_file_request lock_file_request;
4567     struct unlock_file_request unlock_file_request;
4568     struct create_socket_request create_socket_request;
4569     struct accept_socket_request accept_socket_request;
4570     struct set_socket_event_request set_socket_event_request;
4571     struct get_socket_event_request get_socket_event_request;
4572     struct enable_socket_event_request enable_socket_event_request;
4573     struct set_socket_deferred_request set_socket_deferred_request;
4574     struct alloc_console_request alloc_console_request;
4575     struct free_console_request free_console_request;
4576     struct get_console_renderer_events_request get_console_renderer_events_request;
4577     struct open_console_request open_console_request;
4578     struct get_console_wait_event_request get_console_wait_event_request;
4579     struct get_console_mode_request get_console_mode_request;
4580     struct set_console_mode_request set_console_mode_request;
4581     struct set_console_input_info_request set_console_input_info_request;
4582     struct get_console_input_info_request get_console_input_info_request;
4583     struct append_console_input_history_request append_console_input_history_request;
4584     struct get_console_input_history_request get_console_input_history_request;
4585     struct create_console_output_request create_console_output_request;
4586     struct set_console_output_info_request set_console_output_info_request;
4587     struct get_console_output_info_request get_console_output_info_request;
4588     struct write_console_input_request write_console_input_request;
4589     struct read_console_input_request read_console_input_request;
4590     struct write_console_output_request write_console_output_request;
4591     struct fill_console_output_request fill_console_output_request;
4592     struct read_console_output_request read_console_output_request;
4593     struct move_console_output_request move_console_output_request;
4594     struct send_console_signal_request send_console_signal_request;
4595     struct read_directory_changes_request read_directory_changes_request;
4596     struct read_change_request read_change_request;
4597     struct create_mapping_request create_mapping_request;
4598     struct open_mapping_request open_mapping_request;
4599     struct get_mapping_info_request get_mapping_info_request;
4600     struct create_snapshot_request create_snapshot_request;
4601     struct next_process_request next_process_request;
4602     struct next_thread_request next_thread_request;
4603     struct next_module_request next_module_request;
4604     struct wait_debug_event_request wait_debug_event_request;
4605     struct queue_exception_event_request queue_exception_event_request;
4606     struct get_exception_status_request get_exception_status_request;
4607     struct output_debug_string_request output_debug_string_request;
4608     struct continue_debug_event_request continue_debug_event_request;
4609     struct debug_process_request debug_process_request;
4610     struct debug_break_request debug_break_request;
4611     struct set_debugger_kill_on_exit_request set_debugger_kill_on_exit_request;
4612     struct read_process_memory_request read_process_memory_request;
4613     struct write_process_memory_request write_process_memory_request;
4614     struct create_key_request create_key_request;
4615     struct open_key_request open_key_request;
4616     struct delete_key_request delete_key_request;
4617     struct flush_key_request flush_key_request;
4618     struct enum_key_request enum_key_request;
4619     struct set_key_value_request set_key_value_request;
4620     struct get_key_value_request get_key_value_request;
4621     struct enum_key_value_request enum_key_value_request;
4622     struct delete_key_value_request delete_key_value_request;
4623     struct load_registry_request load_registry_request;
4624     struct unload_registry_request unload_registry_request;
4625     struct save_registry_request save_registry_request;
4626     struct set_registry_notification_request set_registry_notification_request;
4627     struct create_timer_request create_timer_request;
4628     struct open_timer_request open_timer_request;
4629     struct set_timer_request set_timer_request;
4630     struct cancel_timer_request cancel_timer_request;
4631     struct get_timer_info_request get_timer_info_request;
4632     struct get_thread_context_request get_thread_context_request;
4633     struct set_thread_context_request set_thread_context_request;
4634     struct get_selector_entry_request get_selector_entry_request;
4635     struct add_atom_request add_atom_request;
4636     struct delete_atom_request delete_atom_request;
4637     struct find_atom_request find_atom_request;
4638     struct get_atom_information_request get_atom_information_request;
4639     struct set_atom_information_request set_atom_information_request;
4640     struct empty_atom_table_request empty_atom_table_request;
4641     struct init_atom_table_request init_atom_table_request;
4642     struct get_msg_queue_request get_msg_queue_request;
4643     struct set_queue_fd_request set_queue_fd_request;
4644     struct set_queue_mask_request set_queue_mask_request;
4645     struct get_queue_status_request get_queue_status_request;
4646     struct get_process_idle_event_request get_process_idle_event_request;
4647     struct send_message_request send_message_request;
4648     struct post_quit_message_request post_quit_message_request;
4649     struct send_hardware_message_request send_hardware_message_request;
4650     struct get_message_request get_message_request;
4651     struct reply_message_request reply_message_request;
4652     struct accept_hardware_message_request accept_hardware_message_request;
4653     struct get_message_reply_request get_message_reply_request;
4654     struct set_win_timer_request set_win_timer_request;
4655     struct kill_win_timer_request kill_win_timer_request;
4656     struct is_window_hung_request is_window_hung_request;
4657     struct get_serial_info_request get_serial_info_request;
4658     struct set_serial_info_request set_serial_info_request;
4659     struct register_async_request register_async_request;
4660     struct cancel_async_request cancel_async_request;
4661     struct ioctl_request ioctl_request;
4662     struct get_ioctl_result_request get_ioctl_result_request;
4663     struct create_named_pipe_request create_named_pipe_request;
4664     struct get_named_pipe_info_request get_named_pipe_info_request;
4665     struct create_window_request create_window_request;
4666     struct destroy_window_request destroy_window_request;
4667     struct get_desktop_window_request get_desktop_window_request;
4668     struct set_window_owner_request set_window_owner_request;
4669     struct get_window_info_request get_window_info_request;
4670     struct set_window_info_request set_window_info_request;
4671     struct set_parent_request set_parent_request;
4672     struct get_window_parents_request get_window_parents_request;
4673     struct get_window_children_request get_window_children_request;
4674     struct get_window_children_from_point_request get_window_children_from_point_request;
4675     struct get_window_tree_request get_window_tree_request;
4676     struct set_window_pos_request set_window_pos_request;
4677     struct set_window_visible_rect_request set_window_visible_rect_request;
4678     struct get_window_rectangles_request get_window_rectangles_request;
4679     struct get_window_text_request get_window_text_request;
4680     struct set_window_text_request set_window_text_request;
4681     struct get_windows_offset_request get_windows_offset_request;
4682     struct get_visible_region_request get_visible_region_request;
4683     struct get_window_region_request get_window_region_request;
4684     struct set_window_region_request set_window_region_request;
4685     struct get_update_region_request get_update_region_request;
4686     struct update_window_zorder_request update_window_zorder_request;
4687     struct redraw_window_request redraw_window_request;
4688     struct set_window_property_request set_window_property_request;
4689     struct remove_window_property_request remove_window_property_request;
4690     struct get_window_property_request get_window_property_request;
4691     struct get_window_properties_request get_window_properties_request;
4692     struct create_winstation_request create_winstation_request;
4693     struct open_winstation_request open_winstation_request;
4694     struct close_winstation_request close_winstation_request;
4695     struct get_process_winstation_request get_process_winstation_request;
4696     struct set_process_winstation_request set_process_winstation_request;
4697     struct enum_winstation_request enum_winstation_request;
4698     struct create_desktop_request create_desktop_request;
4699     struct open_desktop_request open_desktop_request;
4700     struct close_desktop_request close_desktop_request;
4701     struct get_thread_desktop_request get_thread_desktop_request;
4702     struct set_thread_desktop_request set_thread_desktop_request;
4703     struct enum_desktop_request enum_desktop_request;
4704     struct set_user_object_info_request set_user_object_info_request;
4705     struct attach_thread_input_request attach_thread_input_request;
4706     struct get_thread_input_request get_thread_input_request;
4707     struct get_last_input_time_request get_last_input_time_request;
4708     struct get_key_state_request get_key_state_request;
4709     struct set_key_state_request set_key_state_request;
4710     struct set_foreground_window_request set_foreground_window_request;
4711     struct set_focus_window_request set_focus_window_request;
4712     struct set_active_window_request set_active_window_request;
4713     struct set_capture_window_request set_capture_window_request;
4714     struct set_caret_window_request set_caret_window_request;
4715     struct set_caret_info_request set_caret_info_request;
4716     struct set_hook_request set_hook_request;
4717     struct remove_hook_request remove_hook_request;
4718     struct start_hook_chain_request start_hook_chain_request;
4719     struct finish_hook_chain_request finish_hook_chain_request;
4720     struct get_hook_info_request get_hook_info_request;
4721     struct create_class_request create_class_request;
4722     struct destroy_class_request destroy_class_request;
4723     struct set_class_info_request set_class_info_request;
4724     struct set_clipboard_info_request set_clipboard_info_request;
4725     struct open_token_request open_token_request;
4726     struct set_global_windows_request set_global_windows_request;
4727     struct adjust_token_privileges_request adjust_token_privileges_request;
4728     struct get_token_privileges_request get_token_privileges_request;
4729     struct check_token_privileges_request check_token_privileges_request;
4730     struct duplicate_token_request duplicate_token_request;
4731     struct access_check_request access_check_request;
4732     struct get_token_user_request get_token_user_request;
4733     struct get_token_groups_request get_token_groups_request;
4734     struct set_security_object_request set_security_object_request;
4735     struct get_security_object_request get_security_object_request;
4736     struct create_mailslot_request create_mailslot_request;
4737     struct set_mailslot_info_request set_mailslot_info_request;
4738     struct create_directory_request create_directory_request;
4739     struct open_directory_request open_directory_request;
4740     struct get_directory_entry_request get_directory_entry_request;
4741     struct create_symlink_request create_symlink_request;
4742     struct open_symlink_request open_symlink_request;
4743     struct query_symlink_request query_symlink_request;
4744     struct get_object_info_request get_object_info_request;
4745     struct get_token_impersonation_level_request get_token_impersonation_level_request;
4746     struct allocate_locally_unique_id_request allocate_locally_unique_id_request;
4747     struct create_device_manager_request create_device_manager_request;
4748     struct create_device_request create_device_request;
4749     struct delete_device_request delete_device_request;
4750     struct get_next_device_request_request get_next_device_request_request;
4751     struct make_process_system_request make_process_system_request;
4752     struct get_token_statistics_request get_token_statistics_request;
4753     struct create_completion_request create_completion_request;
4754     struct open_completion_request open_completion_request;
4755     struct add_completion_request add_completion_request;
4756     struct remove_completion_request remove_completion_request;
4757     struct query_completion_request query_completion_request;
4758     struct set_completion_info_request set_completion_info_request;
4759     struct add_fd_completion_request add_fd_completion_request;
4760 };
4761 union generic_reply
4762 {
4763     struct request_max_size max_size;
4764     struct reply_header reply_header;
4765     struct new_process_reply new_process_reply;
4766     struct get_new_process_info_reply get_new_process_info_reply;
4767     struct new_thread_reply new_thread_reply;
4768     struct get_startup_info_reply get_startup_info_reply;
4769     struct init_process_done_reply init_process_done_reply;
4770     struct init_thread_reply init_thread_reply;
4771     struct terminate_process_reply terminate_process_reply;
4772     struct terminate_thread_reply terminate_thread_reply;
4773     struct get_process_info_reply get_process_info_reply;
4774     struct set_process_info_reply set_process_info_reply;
4775     struct get_thread_info_reply get_thread_info_reply;
4776     struct set_thread_info_reply set_thread_info_reply;
4777     struct get_dll_info_reply get_dll_info_reply;
4778     struct suspend_thread_reply suspend_thread_reply;
4779     struct resume_thread_reply resume_thread_reply;
4780     struct load_dll_reply load_dll_reply;
4781     struct unload_dll_reply unload_dll_reply;
4782     struct queue_apc_reply queue_apc_reply;
4783     struct get_apc_result_reply get_apc_result_reply;
4784     struct close_handle_reply close_handle_reply;
4785     struct set_handle_info_reply set_handle_info_reply;
4786     struct dup_handle_reply dup_handle_reply;
4787     struct open_process_reply open_process_reply;
4788     struct open_thread_reply open_thread_reply;
4789     struct select_reply select_reply;
4790     struct create_event_reply create_event_reply;
4791     struct event_op_reply event_op_reply;
4792     struct open_event_reply open_event_reply;
4793     struct create_mutex_reply create_mutex_reply;
4794     struct release_mutex_reply release_mutex_reply;
4795     struct open_mutex_reply open_mutex_reply;
4796     struct create_semaphore_reply create_semaphore_reply;
4797     struct release_semaphore_reply release_semaphore_reply;
4798     struct open_semaphore_reply open_semaphore_reply;
4799     struct create_file_reply create_file_reply;
4800     struct open_file_object_reply open_file_object_reply;
4801     struct alloc_file_handle_reply alloc_file_handle_reply;
4802     struct get_handle_fd_reply get_handle_fd_reply;
4803     struct flush_file_reply flush_file_reply;
4804     struct lock_file_reply lock_file_reply;
4805     struct unlock_file_reply unlock_file_reply;
4806     struct create_socket_reply create_socket_reply;
4807     struct accept_socket_reply accept_socket_reply;
4808     struct set_socket_event_reply set_socket_event_reply;
4809     struct get_socket_event_reply get_socket_event_reply;
4810     struct enable_socket_event_reply enable_socket_event_reply;
4811     struct set_socket_deferred_reply set_socket_deferred_reply;
4812     struct alloc_console_reply alloc_console_reply;
4813     struct free_console_reply free_console_reply;
4814     struct get_console_renderer_events_reply get_console_renderer_events_reply;
4815     struct open_console_reply open_console_reply;
4816     struct get_console_wait_event_reply get_console_wait_event_reply;
4817     struct get_console_mode_reply get_console_mode_reply;
4818     struct set_console_mode_reply set_console_mode_reply;
4819     struct set_console_input_info_reply set_console_input_info_reply;
4820     struct get_console_input_info_reply get_console_input_info_reply;
4821     struct append_console_input_history_reply append_console_input_history_reply;
4822     struct get_console_input_history_reply get_console_input_history_reply;
4823     struct create_console_output_reply create_console_output_reply;
4824     struct set_console_output_info_reply set_console_output_info_reply;
4825     struct get_console_output_info_reply get_console_output_info_reply;
4826     struct write_console_input_reply write_console_input_reply;
4827     struct read_console_input_reply read_console_input_reply;
4828     struct write_console_output_reply write_console_output_reply;
4829     struct fill_console_output_reply fill_console_output_reply;
4830     struct read_console_output_reply read_console_output_reply;
4831     struct move_console_output_reply move_console_output_reply;
4832     struct send_console_signal_reply send_console_signal_reply;
4833     struct read_directory_changes_reply read_directory_changes_reply;
4834     struct read_change_reply read_change_reply;
4835     struct create_mapping_reply create_mapping_reply;
4836     struct open_mapping_reply open_mapping_reply;
4837     struct get_mapping_info_reply get_mapping_info_reply;
4838     struct create_snapshot_reply create_snapshot_reply;
4839     struct next_process_reply next_process_reply;
4840     struct next_thread_reply next_thread_reply;
4841     struct next_module_reply next_module_reply;
4842     struct wait_debug_event_reply wait_debug_event_reply;
4843     struct queue_exception_event_reply queue_exception_event_reply;
4844     struct get_exception_status_reply get_exception_status_reply;
4845     struct output_debug_string_reply output_debug_string_reply;
4846     struct continue_debug_event_reply continue_debug_event_reply;
4847     struct debug_process_reply debug_process_reply;
4848     struct debug_break_reply debug_break_reply;
4849     struct set_debugger_kill_on_exit_reply set_debugger_kill_on_exit_reply;
4850     struct read_process_memory_reply read_process_memory_reply;
4851     struct write_process_memory_reply write_process_memory_reply;
4852     struct create_key_reply create_key_reply;
4853     struct open_key_reply open_key_reply;
4854     struct delete_key_reply delete_key_reply;
4855     struct flush_key_reply flush_key_reply;
4856     struct enum_key_reply enum_key_reply;
4857     struct set_key_value_reply set_key_value_reply;
4858     struct get_key_value_reply get_key_value_reply;
4859     struct enum_key_value_reply enum_key_value_reply;
4860     struct delete_key_value_reply delete_key_value_reply;
4861     struct load_registry_reply load_registry_reply;
4862     struct unload_registry_reply unload_registry_reply;
4863     struct save_registry_reply save_registry_reply;
4864     struct set_registry_notification_reply set_registry_notification_reply;
4865     struct create_timer_reply create_timer_reply;
4866     struct open_timer_reply open_timer_reply;
4867     struct set_timer_reply set_timer_reply;
4868     struct cancel_timer_reply cancel_timer_reply;
4869     struct get_timer_info_reply get_timer_info_reply;
4870     struct get_thread_context_reply get_thread_context_reply;
4871     struct set_thread_context_reply set_thread_context_reply;
4872     struct get_selector_entry_reply get_selector_entry_reply;
4873     struct add_atom_reply add_atom_reply;
4874     struct delete_atom_reply delete_atom_reply;
4875     struct find_atom_reply find_atom_reply;
4876     struct get_atom_information_reply get_atom_information_reply;
4877     struct set_atom_information_reply set_atom_information_reply;
4878     struct empty_atom_table_reply empty_atom_table_reply;
4879     struct init_atom_table_reply init_atom_table_reply;
4880     struct get_msg_queue_reply get_msg_queue_reply;
4881     struct set_queue_fd_reply set_queue_fd_reply;
4882     struct set_queue_mask_reply set_queue_mask_reply;
4883     struct get_queue_status_reply get_queue_status_reply;
4884     struct get_process_idle_event_reply get_process_idle_event_reply;
4885     struct send_message_reply send_message_reply;
4886     struct post_quit_message_reply post_quit_message_reply;
4887     struct send_hardware_message_reply send_hardware_message_reply;
4888     struct get_message_reply get_message_reply;
4889     struct reply_message_reply reply_message_reply;
4890     struct accept_hardware_message_reply accept_hardware_message_reply;
4891     struct get_message_reply_reply get_message_reply_reply;
4892     struct set_win_timer_reply set_win_timer_reply;
4893     struct kill_win_timer_reply kill_win_timer_reply;
4894     struct is_window_hung_reply is_window_hung_reply;
4895     struct get_serial_info_reply get_serial_info_reply;
4896     struct set_serial_info_reply set_serial_info_reply;
4897     struct register_async_reply register_async_reply;
4898     struct cancel_async_reply cancel_async_reply;
4899     struct ioctl_reply ioctl_reply;
4900     struct get_ioctl_result_reply get_ioctl_result_reply;
4901     struct create_named_pipe_reply create_named_pipe_reply;
4902     struct get_named_pipe_info_reply get_named_pipe_info_reply;
4903     struct create_window_reply create_window_reply;
4904     struct destroy_window_reply destroy_window_reply;
4905     struct get_desktop_window_reply get_desktop_window_reply;
4906     struct set_window_owner_reply set_window_owner_reply;
4907     struct get_window_info_reply get_window_info_reply;
4908     struct set_window_info_reply set_window_info_reply;
4909     struct set_parent_reply set_parent_reply;
4910     struct get_window_parents_reply get_window_parents_reply;
4911     struct get_window_children_reply get_window_children_reply;
4912     struct get_window_children_from_point_reply get_window_children_from_point_reply;
4913     struct get_window_tree_reply get_window_tree_reply;
4914     struct set_window_pos_reply set_window_pos_reply;
4915     struct set_window_visible_rect_reply set_window_visible_rect_reply;
4916     struct get_window_rectangles_reply get_window_rectangles_reply;
4917     struct get_window_text_reply get_window_text_reply;
4918     struct set_window_text_reply set_window_text_reply;
4919     struct get_windows_offset_reply get_windows_offset_reply;
4920     struct get_visible_region_reply get_visible_region_reply;
4921     struct get_window_region_reply get_window_region_reply;
4922     struct set_window_region_reply set_window_region_reply;
4923     struct get_update_region_reply get_update_region_reply;
4924     struct update_window_zorder_reply update_window_zorder_reply;
4925     struct redraw_window_reply redraw_window_reply;
4926     struct set_window_property_reply set_window_property_reply;
4927     struct remove_window_property_reply remove_window_property_reply;
4928     struct get_window_property_reply get_window_property_reply;
4929     struct get_window_properties_reply get_window_properties_reply;
4930     struct create_winstation_reply create_winstation_reply;
4931     struct open_winstation_reply open_winstation_reply;
4932     struct close_winstation_reply close_winstation_reply;
4933     struct get_process_winstation_reply get_process_winstation_reply;
4934     struct set_process_winstation_reply set_process_winstation_reply;
4935     struct enum_winstation_reply enum_winstation_reply;
4936     struct create_desktop_reply create_desktop_reply;
4937     struct open_desktop_reply open_desktop_reply;
4938     struct close_desktop_reply close_desktop_reply;
4939     struct get_thread_desktop_reply get_thread_desktop_reply;
4940     struct set_thread_desktop_reply set_thread_desktop_reply;
4941     struct enum_desktop_reply enum_desktop_reply;
4942     struct set_user_object_info_reply set_user_object_info_reply;
4943     struct attach_thread_input_reply attach_thread_input_reply;
4944     struct get_thread_input_reply get_thread_input_reply;
4945     struct get_last_input_time_reply get_last_input_time_reply;
4946     struct get_key_state_reply get_key_state_reply;
4947     struct set_key_state_reply set_key_state_reply;
4948     struct set_foreground_window_reply set_foreground_window_reply;
4949     struct set_focus_window_reply set_focus_window_reply;
4950     struct set_active_window_reply set_active_window_reply;
4951     struct set_capture_window_reply set_capture_window_reply;
4952     struct set_caret_window_reply set_caret_window_reply;
4953     struct set_caret_info_reply set_caret_info_reply;
4954     struct set_hook_reply set_hook_reply;
4955     struct remove_hook_reply remove_hook_reply;
4956     struct start_hook_chain_reply start_hook_chain_reply;
4957     struct finish_hook_chain_reply finish_hook_chain_reply;
4958     struct get_hook_info_reply get_hook_info_reply;
4959     struct create_class_reply create_class_reply;
4960     struct destroy_class_reply destroy_class_reply;
4961     struct set_class_info_reply set_class_info_reply;
4962     struct set_clipboard_info_reply set_clipboard_info_reply;
4963     struct open_token_reply open_token_reply;
4964     struct set_global_windows_reply set_global_windows_reply;
4965     struct adjust_token_privileges_reply adjust_token_privileges_reply;
4966     struct get_token_privileges_reply get_token_privileges_reply;
4967     struct check_token_privileges_reply check_token_privileges_reply;
4968     struct duplicate_token_reply duplicate_token_reply;
4969     struct access_check_reply access_check_reply;
4970     struct get_token_user_reply get_token_user_reply;
4971     struct get_token_groups_reply get_token_groups_reply;
4972     struct set_security_object_reply set_security_object_reply;
4973     struct get_security_object_reply get_security_object_reply;
4974     struct create_mailslot_reply create_mailslot_reply;
4975     struct set_mailslot_info_reply set_mailslot_info_reply;
4976     struct create_directory_reply create_directory_reply;
4977     struct open_directory_reply open_directory_reply;
4978     struct get_directory_entry_reply get_directory_entry_reply;
4979     struct create_symlink_reply create_symlink_reply;
4980     struct open_symlink_reply open_symlink_reply;
4981     struct query_symlink_reply query_symlink_reply;
4982     struct get_object_info_reply get_object_info_reply;
4983     struct get_token_impersonation_level_reply get_token_impersonation_level_reply;
4984     struct allocate_locally_unique_id_reply allocate_locally_unique_id_reply;
4985     struct create_device_manager_reply create_device_manager_reply;
4986     struct create_device_reply create_device_reply;
4987     struct delete_device_reply delete_device_reply;
4988     struct get_next_device_request_reply get_next_device_request_reply;
4989     struct make_process_system_reply make_process_system_reply;
4990     struct get_token_statistics_reply get_token_statistics_reply;
4991     struct create_completion_reply create_completion_reply;
4992     struct open_completion_reply open_completion_reply;
4993     struct add_completion_reply add_completion_reply;
4994     struct remove_completion_reply remove_completion_reply;
4995     struct query_completion_reply query_completion_reply;
4996     struct set_completion_info_reply set_completion_info_reply;
4997     struct add_fd_completion_reply add_fd_completion_reply;
4998 };
4999
5000 #define SERVER_PROTOCOL_VERSION 340
5001
5002 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */