~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/include/wine/server_protocol.h

Version: ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

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