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