/*
 * Wine server protocol definitions
 *
 * This file is automatically generated; DO NO EDIT!
 * Edit server/protocol.def instead and re-run tools/make_requests
 */

#ifndef __WINE_WINE_SERVER_PROTOCOL_H
#define __WINE_WINE_SERVER_PROTOCOL_H

#include <stdarg.h>
#include <stdlib.h>
#include <time.h>

#include <windef.h>
#include <winbase.h>

struct request_header
{
    int          req;
    size_t       request_size;
    size_t       reply_size;
};

struct reply_header
{
    unsigned int error;
    size_t       reply_size;
};



struct request_max_size
{
    int pad[16];
};

typedef void *obj_handle_t;
typedef void *user_handle_t;
typedef unsigned short atom_t;
typedef unsigned int process_id_t;
typedef unsigned int thread_id_t;

#define FIRST_USER_HANDLE 0x0020
#define LAST_USER_HANDLE  0xffef



struct debug_event_exception
{
    EXCEPTION_RECORD record;
    int              first;
};
struct debug_event_create_thread
{
    obj_handle_t handle;
    void        *teb;
    void        *start;
};
struct debug_event_create_process
{
    obj_handle_t file;
    obj_handle_t process;
    obj_handle_t thread;
    void        *base;
    int          dbg_offset;
    int          dbg_size;
    void        *teb;
    void        *start;
    void        *name;
    int          unicode;
};
struct debug_event_exit
{
    int          exit_code;
};
struct debug_event_load_dll
{
    obj_handle_t handle;
    void        *base;
    int          dbg_offset;
    int          dbg_size;
    void        *name;
    int          unicode;
};
struct debug_event_unload_dll
{
    void       *base;
};
struct debug_event_output_string
{
    void       *string;
    int         unicode;
    int         length;
};
struct debug_event_rip_info
{
    int         error;
    int         type;
};
union debug_event_data
{
    struct debug_event_exception      exception;
    struct debug_event_create_thread  create_thread;
    struct debug_event_create_process create_process;
    struct debug_event_exit           exit;
    struct debug_event_load_dll       load_dll;
    struct debug_event_unload_dll     unload_dll;
    struct debug_event_output_string  output_string;
    struct debug_event_rip_info       rip_info;
};


typedef struct
{
    int                      code;
    union debug_event_data   info;
} debug_event_t;


struct send_fd
{
    thread_id_t tid;
    int         fd;
};


struct wake_up_reply
{
    void *cookie;
    int   signaled;
};


typedef struct
{
    size_t       size;
    size_t       filename_len;
    size_t       cmdline_len;
    size_t       desktop_len;
    size_t       title_len;
    int          x;
    int          y;
    int          cx;
    int          cy;
    int          x_chars;
    int          y_chars;
    int          attribute;
    int          cmd_show;
    unsigned int flags;




} startup_info_t;


typedef struct
{
    int            sec;
    int            usec;
} abs_time_t;


typedef struct
{
    atom_t         atom;
    short          string;
    obj_handle_t   handle;
} property_data_t;


typedef struct
{
    int  left;
    int  top;
    int  right;
    int  bottom;
} rectangle_t;


typedef struct
{
    WCHAR          ch;
    unsigned short attr;
} char_info_t;





struct new_process_request
{
    struct request_header __header;
    int          inherit_all;
    int          create_flags;
    int          unix_pid;
    obj_handle_t exe_file;
    obj_handle_t hstdin;
    obj_handle_t hstdout;
    obj_handle_t hstderr;
    /* VARARG(info,startup_info); */
};
struct new_process_reply
{
    struct reply_header __header;
    obj_handle_t info;
};



struct get_new_process_info_request
{
    struct request_header __header;
    obj_handle_t info;
    int          pinherit;
    int          tinherit;
};
struct get_new_process_info_reply
{
    struct reply_header __header;
    process_id_t pid;
    obj_handle_t phandle;
    thread_id_t  tid;
    obj_handle_t thandle;
    int          success;
};



struct new_thread_request
{
    struct request_header __header;
    int          suspend;
    int          inherit;
    int          request_fd;
};
struct new_thread_reply
{
    struct reply_header __header;
    thread_id_t  tid;
    obj_handle_t handle;
};



struct boot_done_request
{
    struct request_header __header;
    int          debug_level;
};
struct boot_done_reply
{
    struct reply_header __header;
};



struct init_process_request
{
    struct request_header __header;
    void*        ldt_copy;
};
struct init_process_reply
{
    struct reply_header __header;
    int          create_flags;
    unsigned int server_start;
    size_t       info_size;
    obj_handle_t exe_file;
    obj_handle_t hstdin;
    obj_handle_t hstdout;
    obj_handle_t hstderr;
};



struct get_startup_info_request
{
    struct request_header __header;
};
struct get_startup_info_reply
{
    struct reply_header __header;
    /* VARARG(info,startup_info); */
};



struct init_process_done_request
{
    struct request_header __header;
    void*        module;
    size_t       module_size;
    void*        entry;
    void*        name;
    obj_handle_t exe_file;
    int          gui;
    /* VARARG(filename,string); */
};
struct init_process_done_reply
{
    struct reply_header __header;
    int          debugged;
};



struct init_thread_request
{
    struct request_header __header;
    int          unix_pid;
    int          unix_tid;
    void*        teb;
    void*        entry;
    int          reply_fd;
    int          wait_fd;
};
struct init_thread_reply
{
    struct reply_header __header;
    process_id_t pid;
    thread_id_t  tid;
    int          boot;
    int          version;
};



struct terminate_process_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          exit_code;
};
struct terminate_process_reply
{
    struct reply_header __header;
    int          self;
};



struct terminate_thread_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          exit_code;
};
struct terminate_thread_reply
{
    struct reply_header __header;
    int          self;
    int          last;
};



struct get_process_info_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_process_info_reply
{
    struct reply_header __header;
    process_id_t pid;
    int          debugged;
    int          exit_code;
    int          priority;
    int          process_affinity;
    int          system_affinity;
};



struct set_process_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          mask;
    int          priority;
    int          affinity;
};
struct set_process_info_reply
{
    struct reply_header __header;
};
#define SET_PROCESS_INFO_PRIORITY 0x01
#define SET_PROCESS_INFO_AFFINITY 0x02



struct get_thread_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    thread_id_t  tid_in;
};
struct get_thread_info_reply
{
    struct reply_header __header;
    process_id_t pid;
    thread_id_t  tid;
    void*        teb;
    int          exit_code;
    int          priority;
    int          affinity;
    time_t       creation_time;
    time_t       exit_time;
};



struct set_thread_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          mask;
    int          priority;
    int          affinity;
};
struct set_thread_info_reply
{
    struct reply_header __header;
};
#define SET_THREAD_INFO_PRIORITY 0x01
#define SET_THREAD_INFO_AFFINITY 0x02



struct get_dll_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    void*        base_address;
};
struct get_dll_info_reply
{
    struct reply_header __header;
    size_t       size;
    void*        entry_point;
    /* VARARG(filename,string); */
};



struct suspend_thread_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct suspend_thread_reply
{
    struct reply_header __header;
    int          count;
};



struct resume_thread_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct resume_thread_reply
{
    struct reply_header __header;
    int          count;
};



struct load_dll_request
{
    struct request_header __header;
    obj_handle_t handle;
    void*        base;
    size_t       size;
    int          dbg_offset;
    int          dbg_size;
    void*        name;
    /* VARARG(filename,string); */
};
struct load_dll_reply
{
    struct reply_header __header;
};



struct unload_dll_request
{
    struct request_header __header;
    void*        base;
};
struct unload_dll_reply
{
    struct reply_header __header;
};



struct queue_apc_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          user;
    void*        func;
    void*        arg1;
    void*        arg2;
    void*        arg3;
};
struct queue_apc_reply
{
    struct reply_header __header;
};



struct get_apc_request
{
    struct request_header __header;
    int          alertable;
};
struct get_apc_reply
{
    struct reply_header __header;
    void*        func;
    int          type;
    void*        arg1;
    void*        arg2;
    void*        arg3;
};
enum apc_type { APC_NONE, APC_USER, APC_TIMER, APC_ASYNC, APC_ASYNC_IO };



struct close_handle_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct close_handle_reply
{
    struct reply_header __header;
    int          fd;
};



struct set_handle_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          flags;
    int          mask;
    int          fd;
};
struct set_handle_info_reply
{
    struct reply_header __header;
    int          old_flags;
    int          cur_fd;
};



struct dup_handle_request
{
    struct request_header __header;
    obj_handle_t src_process;
    obj_handle_t src_handle;
    obj_handle_t dst_process;
    unsigned int access;
    int          inherit;
    int          options;
};
struct dup_handle_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    int          fd;
};
#define DUP_HANDLE_CLOSE_SOURCE  DUPLICATE_CLOSE_SOURCE
#define DUP_HANDLE_SAME_ACCESS   DUPLICATE_SAME_ACCESS
#define DUP_HANDLE_MAKE_GLOBAL   0x80000000



struct open_process_request
{
    struct request_header __header;
    process_id_t pid;
    unsigned int access;
    int          inherit;
};
struct open_process_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct open_thread_request
{
    struct request_header __header;
    thread_id_t  tid;
    unsigned int access;
    int          inherit;
};
struct open_thread_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct select_request
{
    struct request_header __header;
    int          flags;
    void*        cookie;
    abs_time_t   timeout;
    /* VARARG(handles,handles); */
};
struct select_reply
{
    struct reply_header __header;
};
#define SELECT_ALL           1
#define SELECT_ALERTABLE     2
#define SELECT_INTERRUPTIBLE 4
#define SELECT_TIMEOUT       8



struct create_event_request
{
    struct request_header __header;
    int          manual_reset;
    int          initial_state;
    int          inherit;
    /* VARARG(name,unicode_str); */
};
struct create_event_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};


struct event_op_request
{
    struct request_header __header;
    obj_handle_t  handle;
    int           op;
};
struct event_op_reply
{
    struct reply_header __header;
};
enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };



struct open_event_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    /* VARARG(name,unicode_str); */
};
struct open_event_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct create_mutex_request
{
    struct request_header __header;
    int          owned;
    int          inherit;
    /* VARARG(name,unicode_str); */
};
struct create_mutex_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct release_mutex_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct release_mutex_reply
{
    struct reply_header __header;
};



struct open_mutex_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    /* VARARG(name,unicode_str); */
};
struct open_mutex_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct create_semaphore_request
{
    struct request_header __header;
    unsigned int initial;
    unsigned int max;
    int          inherit;
    /* VARARG(name,unicode_str); */
};
struct create_semaphore_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct release_semaphore_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int count;
};
struct release_semaphore_reply
{
    struct reply_header __header;
    unsigned int prev_count;
};



struct open_semaphore_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    /* VARARG(name,unicode_str); */
};
struct open_semaphore_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct create_file_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    unsigned int sharing;
    int          create;
    unsigned int attrs;
    int          drive_type;
    /* VARARG(filename,string); */
};
struct create_file_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct alloc_file_handle_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    int          fd;
};
struct alloc_file_handle_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct get_handle_fd_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int access;
};
struct get_handle_fd_reply
{
    struct reply_header __header;
    int          fd;
    int          type;
    int          flags;
};
enum fd_type
{
    FD_TYPE_INVALID,
    FD_TYPE_DEFAULT,
    FD_TYPE_SOCKET,
    FD_TYPE_SMB
};
#define FD_FLAG_OVERLAPPED         0x01
#define FD_FLAG_TIMEOUT            0x02
#define FD_FLAG_RECV_SHUTDOWN      0x04
#define FD_FLAG_SEND_SHUTDOWN      0x08


struct set_file_pointer_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          low;
    int          high;
    int          whence;
};
struct set_file_pointer_reply
{
    struct reply_header __header;
    int          new_low;
    int          new_high;
};



struct truncate_file_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct truncate_file_reply
{
    struct reply_header __header;
};



struct set_file_time_request
{
    struct request_header __header;
    obj_handle_t handle;
    time_t       access_time;
    time_t       write_time;
};
struct set_file_time_reply
{
    struct reply_header __header;
};



struct flush_file_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct flush_file_reply
{
    struct reply_header __header;
    obj_handle_t event;
};



struct get_file_info_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_file_info_reply
{
    struct reply_header __header;
    int          type;
    int          attr;
    time_t       access_time;
    time_t       write_time;
    time_t       change_time;
    int          size_high;
    int          size_low;
    int          alloc_high;
    int          alloc_low;
    int          links;
    int          index_high;
    int          index_low;
    unsigned int serial;
};



struct lock_file_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int offset_low;
    unsigned int offset_high;
    unsigned int count_low;
    unsigned int count_high;
    int          shared;
    int          wait;
};
struct lock_file_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    int          overlapped;
};



struct unlock_file_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int offset_low;
    unsigned int offset_high;
    unsigned int count_low;
    unsigned int count_high;
};
struct unlock_file_reply
{
    struct reply_header __header;
};



struct create_socket_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    int          family;
    int          type;
    int          protocol;
    unsigned int flags;
};
struct create_socket_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct accept_socket_request
{
    struct request_header __header;
    obj_handle_t lhandle;
    unsigned int access;
    int          inherit;
};
struct accept_socket_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct set_socket_event_request
{
    struct request_header __header;
    obj_handle_t  handle;
    unsigned int  mask;
    obj_handle_t  event;
    user_handle_t window;
    unsigned int  msg;
};
struct set_socket_event_reply
{
    struct reply_header __header;
};



struct get_socket_event_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          service;
    obj_handle_t c_event;
};
struct get_socket_event_reply
{
    struct reply_header __header;
    unsigned int mask;
    unsigned int pmask;
    unsigned int state;
    /* VARARG(errors,ints); */
};



struct enable_socket_event_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int mask;
    unsigned int sstate;
    unsigned int cstate;
};
struct enable_socket_event_reply
{
    struct reply_header __header;
};

struct set_socket_deferred_request
{
    struct request_header __header;
    obj_handle_t handle;
    obj_handle_t deferred;
};
struct set_socket_deferred_reply
{
    struct reply_header __header;
};


struct alloc_console_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    process_id_t pid;
};
struct alloc_console_reply
{
    struct reply_header __header;
    obj_handle_t handle_in;
    obj_handle_t event;
};



struct free_console_request
{
    struct request_header __header;
};
struct free_console_reply
{
    struct reply_header __header;
};


#define CONSOLE_RENDERER_NONE_EVENT        0x00
#define CONSOLE_RENDERER_TITLE_EVENT       0x01
#define CONSOLE_RENDERER_ACTIVE_SB_EVENT   0x02
#define CONSOLE_RENDERER_SB_RESIZE_EVENT   0x03
#define CONSOLE_RENDERER_UPDATE_EVENT      0x04
#define CONSOLE_RENDERER_CURSOR_POS_EVENT  0x05
#define CONSOLE_RENDERER_CURSOR_GEOM_EVENT 0x06
#define CONSOLE_RENDERER_DISPLAY_EVENT     0x07
#define CONSOLE_RENDERER_EXIT_EVENT        0x08
struct console_renderer_event
{
    short event;
    union
    {
        struct update
        {
            short top;
            short bottom;
        } update;
        struct resize
        {
            short width;
            short height;
        } resize;
        struct cursor_pos
        {
            short x;
            short y;
        } cursor_pos;
        struct cursor_geom
        {
            short visible;
            short size;
        } cursor_geom;
        struct display
        {
            short left;
            short top;
            short width;
            short height;
        } display;
    } u;
};


struct get_console_renderer_events_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_console_renderer_events_reply
{
    struct reply_header __header;
    /* VARARG(data,bytes); */
};



struct open_console_request
{
    struct request_header __header;
    int          from;

    unsigned int access;
    int          inherit;
    int          share;
};
struct open_console_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct get_console_wait_event_request
{
    struct request_header __header;
};
struct get_console_wait_event_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};


struct get_console_mode_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_console_mode_reply
{
    struct reply_header __header;
    int          mode;
};



struct set_console_mode_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          mode;
};
struct set_console_mode_reply
{
    struct reply_header __header;
};



struct set_console_input_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          mask;
    obj_handle_t active_sb;
    int          history_mode;
    int          history_size;
    int          edition_mode;
    /* VARARG(title,unicode_str); */
};
struct set_console_input_info_reply
{
    struct reply_header __header;
};
#define SET_CONSOLE_INPUT_INFO_ACTIVE_SB        0x01
#define SET_CONSOLE_INPUT_INFO_TITLE            0x02
#define SET_CONSOLE_INPUT_INFO_HISTORY_MODE     0x04
#define SET_CONSOLE_INPUT_INFO_HISTORY_SIZE     0x08
#define SET_CONSOLE_INPUT_INFO_EDITION_MODE     0x10



struct get_console_input_info_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_console_input_info_reply
{
    struct reply_header __header;
    int          history_mode;
    int          history_size;
    int          history_index;
    int          edition_mode;
    /* VARARG(title,unicode_str); */
};



struct append_console_input_history_request
{
    struct request_header __header;
    obj_handle_t handle;
    /* VARARG(line,unicode_str); */
};
struct append_console_input_history_reply
{
    struct reply_header __header;
};



struct get_console_input_history_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          index;
};
struct get_console_input_history_reply
{
    struct reply_header __header;
    int          total;
    /* VARARG(line,unicode_str); */
};



struct create_console_output_request
{
    struct request_header __header;
    obj_handle_t handle_in;
    int          access;
    int          share;
    int          inherit;
};
struct create_console_output_reply
{
    struct reply_header __header;
    obj_handle_t handle_out;
};



struct set_console_output_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          mask;
    short int    cursor_size;
    short int    cursor_visible;
    short int    cursor_x;
    short int    cursor_y;
    short int    width;
    short int    height;
    short int    attr;
    short int    win_left;
    short int    win_top;
    short int    win_right;
    short int    win_bottom;
    short int    max_width;
    short int    max_height;
};
struct set_console_output_info_reply
{
    struct reply_header __header;
};
#define SET_CONSOLE_OUTPUT_INFO_CURSOR_GEOM     0x01
#define SET_CONSOLE_OUTPUT_INFO_CURSOR_POS      0x02
#define SET_CONSOLE_OUTPUT_INFO_SIZE            0x04
#define SET_CONSOLE_OUTPUT_INFO_ATTR            0x08
#define SET_CONSOLE_OUTPUT_INFO_DISPLAY_WINDOW  0x10
#define SET_CONSOLE_OUTPUT_INFO_MAX_SIZE        0x20



struct get_console_output_info_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_console_output_info_reply
{
    struct reply_header __header;
    short int    cursor_size;
    short int    cursor_visible;
    short int    cursor_x;
    short int    cursor_y;
    short int    width;
    short int    height;
    short int    attr;
    short int    win_left;
    short int    win_top;
    short int    win_right;
    short int    win_bottom;
    short int    max_width;
    short int    max_height;
};


struct write_console_input_request
{
    struct request_header __header;
    obj_handle_t handle;
    /* VARARG(rec,input_records); */
};
struct write_console_input_reply
{
    struct reply_header __header;
    int          written;
};



struct read_console_input_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          flush;
};
struct read_console_input_reply
{
    struct reply_header __header;
    int          read;
    /* VARARG(rec,input_records); */
};



struct write_console_output_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          x;
    int          y;
    int          mode;
    int          wrap;
    /* VARARG(data,bytes); */
};
struct write_console_output_reply
{
    struct reply_header __header;
    int          written;
    int          width;
    int          height;
};
enum char_info_mode
{
    CHAR_INFO_MODE_TEXT,
    CHAR_INFO_MODE_ATTR,
    CHAR_INFO_MODE_TEXTATTR,
    CHAR_INFO_MODE_TEXTSTDATTR
};



struct fill_console_output_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          x;
    int          y;
    int          mode;
    int          count;
    int          wrap;
    char_info_t  data;
};
struct fill_console_output_reply
{
    struct reply_header __header;
    int          written;
};



struct read_console_output_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          x;
    int          y;
    int          mode;
    int          wrap;
};
struct read_console_output_reply
{
    struct reply_header __header;
    int          width;
    int          height;
    /* VARARG(data,bytes); */
};



struct move_console_output_request
{
    struct request_header __header;
    obj_handle_t handle;
    short int    x_src;
    short int    y_src;
    short int    x_dst;
    short int    y_dst;
    short int    w;
    short int    h;
};
struct move_console_output_reply
{
    struct reply_header __header;
};



struct send_console_signal_request
{
    struct request_header __header;
    int          signal;
    process_id_t group_id;
};
struct send_console_signal_reply
{
    struct reply_header __header;
};



struct create_change_notification_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          subtree;
    unsigned int filter;
};
struct create_change_notification_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct next_change_notification_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct next_change_notification_reply
{
    struct reply_header __header;
};


struct create_mapping_request
{
    struct request_header __header;
    int          size_high;
    int          size_low;
    int          protect;
    unsigned int access;
    int          inherit;
    obj_handle_t file_handle;
    /* VARARG(name,unicode_str); */
};
struct create_mapping_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};

#define VPROT_READ       0x01
#define VPROT_WRITE      0x02
#define VPROT_EXEC       0x04
#define VPROT_WRITECOPY  0x08
#define VPROT_GUARD      0x10
#define VPROT_NOCACHE    0x20
#define VPROT_COMMITTED  0x40
#define VPROT_IMAGE      0x80



struct open_mapping_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    /* VARARG(name,unicode_str); */
};
struct open_mapping_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct get_mapping_info_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_mapping_info_reply
{
    struct reply_header __header;
    int          size_high;
    int          size_low;
    int          protect;
    int          header_size;
    void*        base;
    obj_handle_t shared_file;
    int          shared_size;
    int          drive_type;
};



struct create_device_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    int          id;
};
struct create_device_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct get_device_id_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_device_id_reply
{
    struct reply_header __header;
    int          id;
};


#define SNAP_HEAPLIST   0x00000001
#define SNAP_PROCESS    0x00000002
#define SNAP_THREAD     0x00000004
#define SNAP_MODULE     0x00000008

struct create_snapshot_request
{
    struct request_header __header;
    int          inherit;
    int          flags;
    process_id_t pid;
};
struct create_snapshot_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct next_process_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          reset;
};
struct next_process_reply
{
    struct reply_header __header;
    int          count;
    process_id_t pid;
    process_id_t ppid;
    void*        heap;
    void*        module;
    int          threads;
    int          priority;
    /* VARARG(filename,string); */
};



struct next_thread_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          reset;
};
struct next_thread_reply
{
    struct reply_header __header;
    int          count;
    process_id_t pid;
    thread_id_t  tid;
    int          base_pri;
    int          delta_pri;
};



struct next_module_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          reset;
};
struct next_module_reply
{
    struct reply_header __header;
    process_id_t pid;
    void*        base;
    size_t       size;
    /* VARARG(filename,string); */
};



struct wait_debug_event_request
{
    struct request_header __header;
    int           get_handle;
};
struct wait_debug_event_reply
{
    struct reply_header __header;
    process_id_t  pid;
    thread_id_t   tid;
    obj_handle_t  wait;
    /* VARARG(event,debug_event); */
};



struct queue_exception_event_request
{
    struct request_header __header;
    int              first;
    /* VARARG(record,exc_event); */
};
struct queue_exception_event_reply
{
    struct reply_header __header;
    obj_handle_t     handle;
};



struct get_exception_status_request
{
    struct request_header __header;
    obj_handle_t     handle;
};
struct get_exception_status_reply
{
    struct reply_header __header;
    int              status;
    /* VARARG(context,context); */
};



struct output_debug_string_request
{
    struct request_header __header;
    void*         string;
    int           unicode;
    int           length;
};
struct output_debug_string_reply
{
    struct reply_header __header;
};



struct continue_debug_event_request
{
    struct request_header __header;
    process_id_t pid;
    thread_id_t  tid;
    int          status;
};
struct continue_debug_event_reply
{
    struct reply_header __header;
};



struct debug_process_request
{
    struct request_header __header;
    process_id_t pid;
    int          attach;
};
struct debug_process_reply
{
    struct reply_header __header;
};



struct debug_break_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct debug_break_reply
{
    struct reply_header __header;
    int          self;
};



struct set_debugger_kill_on_exit_request
{
    struct request_header __header;
    int          kill_on_exit;
};
struct set_debugger_kill_on_exit_reply
{
    struct reply_header __header;
};



struct read_process_memory_request
{
    struct request_header __header;
    obj_handle_t handle;
    void*        addr;
};
struct read_process_memory_reply
{
    struct reply_header __header;
    /* VARARG(data,bytes); */
};



struct write_process_memory_request
{
    struct request_header __header;
    obj_handle_t handle;
    void*        addr;
    unsigned int first_mask;
    unsigned int last_mask;
    /* VARARG(data,bytes); */
};
struct write_process_memory_reply
{
    struct reply_header __header;
};



struct create_key_request
{
    struct request_header __header;
    obj_handle_t parent;
    unsigned int access;
    unsigned int options;
    time_t       modif;
    size_t       namelen;
    /* VARARG(name,unicode_str,namelen); */
    /* VARARG(class,unicode_str); */
};
struct create_key_reply
{
    struct reply_header __header;
    obj_handle_t hkey;
    int          created;
};


struct open_key_request
{
    struct request_header __header;
    obj_handle_t parent;
    unsigned int access;
    /* VARARG(name,unicode_str); */
};
struct open_key_reply
{
    struct reply_header __header;
    obj_handle_t hkey;
};



struct delete_key_request
{
    struct request_header __header;
    obj_handle_t hkey;
};
struct delete_key_reply
{
    struct reply_header __header;
};



struct enum_key_request
{
    struct request_header __header;
    obj_handle_t hkey;
    int          index;
    int          info_class;
};
struct enum_key_reply
{
    struct reply_header __header;
    int          subkeys;
    int          max_subkey;
    int          max_class;
    int          values;
    int          max_value;
    int          max_data;
    time_t       modif;
    size_t       total;
    size_t       namelen;
    /* VARARG(name,unicode_str,namelen); */
    /* VARARG(class,unicode_str); */
};



struct set_key_value_request
{
    struct request_header __header;
    obj_handle_t hkey;
    int          type;
    size_t       namelen;
    /* VARARG(name,unicode_str,namelen); */
    /* VARARG(data,bytes); */
};
struct set_key_value_reply
{
    struct reply_header __header;
};



struct get_key_value_request
{
    struct request_header __header;
    obj_handle_t hkey;
    /* VARARG(name,unicode_str); */
};
struct get_key_value_reply
{
    struct reply_header __header;
    int          type;
    size_t       total;
    /* VARARG(data,bytes); */
};



struct enum_key_value_request
{
    struct request_header __header;
    obj_handle_t hkey;
    int          index;
    int          info_class;
};
struct enum_key_value_reply
{
    struct reply_header __header;
    int          type;
    size_t       total;
    size_t       namelen;
    /* VARARG(name,unicode_str,namelen); */
    /* VARARG(data,bytes); */
};



struct delete_key_value_request
{
    struct request_header __header;
    obj_handle_t hkey;
    /* VARARG(name,unicode_str); */
};
struct delete_key_value_reply
{
    struct reply_header __header;
};



struct load_registry_request
{
    struct request_header __header;
    obj_handle_t hkey;
    obj_handle_t file;
    /* VARARG(name,unicode_str); */
};
struct load_registry_reply
{
    struct reply_header __header;
};



struct unload_registry_request
{
    struct request_header __header;
    obj_handle_t hkey;
};
struct unload_registry_reply
{
    struct reply_header __header;
};



struct save_registry_request
{
    struct request_header __header;
    obj_handle_t hkey;
    obj_handle_t file;
};
struct save_registry_reply
{
    struct reply_header __header;
};



struct save_registry_atexit_request
{
    struct request_header __header;
    obj_handle_t hkey;
    /* VARARG(file,string); */
};
struct save_registry_atexit_reply
{
    struct reply_header __header;
};



struct set_registry_levels_request
{
    struct request_header __header;
    int          current;
    int          saving;
    int          period;
};
struct set_registry_levels_reply
{
    struct reply_header __header;
};


struct set_registry_notification_request
{
    struct request_header __header;
    obj_handle_t hkey;
    obj_handle_t event;
    int          subtree;
    unsigned int filter;
};
struct set_registry_notification_reply
{
    struct reply_header __header;
};



struct create_timer_request
{
    struct request_header __header;
    int          inherit;
    int          manual;
    /* VARARG(name,unicode_str); */
};
struct create_timer_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct open_timer_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    /* VARARG(name,unicode_str); */
};
struct open_timer_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};


struct set_timer_request
{
    struct request_header __header;
    obj_handle_t handle;
    abs_time_t   expire;
    int          period;
    void*        callback;
    void*        arg;
};
struct set_timer_reply
{
    struct reply_header __header;
    int          signaled;
};


struct cancel_timer_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct cancel_timer_reply
{
    struct reply_header __header;
     int         signaled;
};



struct get_thread_context_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int flags;
};
struct get_thread_context_reply
{
    struct reply_header __header;
    /* VARARG(context,context); */
};



struct set_thread_context_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int flags;
    /* VARARG(context,context); */
};
struct set_thread_context_reply
{
    struct reply_header __header;
};



struct get_selector_entry_request
{
    struct request_header __header;
    obj_handle_t  handle;
    int           entry;
};
struct get_selector_entry_reply
{
    struct reply_header __header;
    unsigned int  base;
    unsigned int  limit;
    unsigned char flags;
};



struct add_atom_request
{
    struct request_header __header;
    int           local;
    /* VARARG(name,unicode_str); */
};
struct add_atom_reply
{
    struct reply_header __header;
    atom_t        atom;
};



struct delete_atom_request
{
    struct request_header __header;
    atom_t        atom;
    int           local;
};
struct delete_atom_reply
{
    struct reply_header __header;
};



struct find_atom_request
{
    struct request_header __header;
    int          local;
    /* VARARG(name,unicode_str); */
};
struct find_atom_reply
{
    struct reply_header __header;
    atom_t       atom;
};



struct get_atom_name_request
{
    struct request_header __header;
    atom_t       atom;
    int          local;
};
struct get_atom_name_reply
{
    struct reply_header __header;
    int          count;
    /* VARARG(name,unicode_str); */
};



struct init_atom_table_request
{
    struct request_header __header;
    int          entries;
};
struct init_atom_table_reply
{
    struct reply_header __header;
};



struct get_msg_queue_request
{
    struct request_header __header;
};
struct get_msg_queue_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct set_queue_mask_request
{
    struct request_header __header;
    unsigned int wake_mask;
    unsigned int changed_mask;
    int          skip_wait;
};
struct set_queue_mask_reply
{
    struct reply_header __header;
    unsigned int wake_bits;
    unsigned int changed_bits;
};



struct get_queue_status_request
{
    struct request_header __header;
    int          clear;
};
struct get_queue_status_reply
{
    struct reply_header __header;
    unsigned int wake_bits;
    unsigned int changed_bits;
};



struct wait_input_idle_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          timeout;
};
struct wait_input_idle_reply
{
    struct reply_header __header;
    obj_handle_t event;
};



struct send_message_request
{
    struct request_header __header;
    thread_id_t     id;
    int             type;
    int             flags;
    user_handle_t   win;
    unsigned int    msg;
    unsigned int    wparam;
    unsigned int    lparam;
    int             x;
    int             y;
    unsigned int    time;
    unsigned int    info;
    int             timeout;
    void*           callback;
    /* VARARG(data,bytes); */
};
struct send_message_reply
{
    struct reply_header __header;
};

enum message_type
{
    MSG_ASCII,
    MSG_UNICODE,
    MSG_NOTIFY,
    MSG_CALLBACK,
    MSG_CALLBACK_RESULT,
    MSG_OTHER_PROCESS,
    MSG_POSTED,
    MSG_HARDWARE
};
#define SEND_MSG_ABORT_IF_HUNG  0x01



struct get_message_request
{
    struct request_header __header;
    int             flags;
    user_handle_t   get_win;
    unsigned int    get_first;
    unsigned int    get_last;
};
struct get_message_reply
{
    struct reply_header __header;
    int             type;
    user_handle_t   win;
    unsigned int    msg;
    unsigned int    wparam;
    unsigned int    lparam;
    int             x;
    int             y;
    unsigned int    time;
    unsigned int    info;
    size_t          total;
    /* VARARG(data,bytes); */
};
#define GET_MSG_REMOVE      1
#define GET_MSG_SENT_ONLY   2


struct reply_message_request
{
    struct request_header __header;
    int             type;
    unsigned int    result;
    int             remove;
    /* VARARG(data,bytes); */
};
struct reply_message_reply
{
    struct reply_header __header;
};



struct get_message_reply_request
{
    struct request_header __header;
    int             cancel;
};
struct get_message_reply_reply
{
    struct reply_header __header;
    unsigned int    result;
    /* VARARG(data,bytes); */
};



struct set_win_timer_request
{
    struct request_header __header;
    user_handle_t   win;
    unsigned int    msg;
    unsigned int    id;
    unsigned int    rate;
    unsigned int    lparam;
};
struct set_win_timer_reply
{
    struct reply_header __header;
};



struct kill_win_timer_request
{
    struct request_header __header;
    user_handle_t   win;
    unsigned int    msg;
    unsigned int    id;
};
struct kill_win_timer_reply
{
    struct reply_header __header;
};



struct create_serial_request
{
    struct request_header __header;
    unsigned int access;
    int          inherit;
    unsigned int attributes;
    unsigned int sharing;
    /* VARARG(name,string); */
};
struct create_serial_reply
{
    struct reply_header __header;
    obj_handle_t handle;
};



struct get_serial_info_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_serial_info_reply
{
    struct reply_header __header;
    unsigned int readinterval;
    unsigned int readconst;
    unsigned int readmult;
    unsigned int writeconst;
    unsigned int writemult;
    unsigned int eventmask;
    unsigned int commerror;
};



struct set_serial_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          flags;
    unsigned int readinterval;
    unsigned int readconst;
    unsigned int readmult;
    unsigned int writeconst;
    unsigned int writemult;
    unsigned int eventmask;
    unsigned int commerror;
};
struct set_serial_info_reply
{
    struct reply_header __header;
};
#define SERIALINFO_SET_TIMEOUTS  0x01
#define SERIALINFO_SET_MASK      0x02
#define SERIALINFO_SET_ERROR     0x04



struct register_async_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          type;
    void*        overlapped;
    int          count;
    unsigned int status;
};
struct register_async_reply
{
    struct reply_header __header;
};
#define ASYNC_TYPE_NONE  0x00
#define ASYNC_TYPE_READ  0x01
#define ASYNC_TYPE_WRITE 0x02
#define ASYNC_TYPE_WAIT  0x03



struct create_named_pipe_request
{
    struct request_header __header;
    unsigned int   openmode;
    unsigned int   pipemode;
    unsigned int   maxinstances;
    unsigned int   outsize;
    unsigned int   insize;
    unsigned int   timeout;
    /* VARARG(name,unicode_str); */
};
struct create_named_pipe_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
};



struct open_named_pipe_request
{
    struct request_header __header;
    unsigned int   access;
    int            inherit;
    /* VARARG(name,unicode_str); */
};
struct open_named_pipe_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
};



struct connect_named_pipe_request
{
    struct request_header __header;
    obj_handle_t   handle;
    void*          overlapped;
    void*          func;
};
struct connect_named_pipe_reply
{
    struct reply_header __header;
};



struct wait_named_pipe_request
{
    struct request_header __header;
    unsigned int   timeout;
    void*          overlapped;
    void*          func;
    /* VARARG(name,unicode_str); */
};
struct wait_named_pipe_reply
{
    struct reply_header __header;
};



struct disconnect_named_pipe_request
{
    struct request_header __header;
    obj_handle_t   handle;
};
struct disconnect_named_pipe_reply
{
    struct reply_header __header;
    int            fd;
};


struct get_named_pipe_info_request
{
    struct request_header __header;
    obj_handle_t   handle;
};
struct get_named_pipe_info_reply
{
    struct reply_header __header;
    unsigned int   flags;
    unsigned int   maxinstances;
    unsigned int   outsize;
    unsigned int   insize;
};


struct create_smb_request
{
    struct request_header __header;
    int            fd;
    unsigned int   tree_id;
    unsigned int   user_id;
    unsigned int   file_id;
    unsigned int   dialect;
};
struct create_smb_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
};


struct get_smb_info_request
{
    struct request_header __header;
    obj_handle_t   handle;
    unsigned int   flags;
    unsigned int   offset;
};
struct get_smb_info_reply
{
    struct reply_header __header;
    unsigned int   tree_id;
    unsigned int   user_id;
    unsigned int   dialect;
    unsigned int   file_id;
    unsigned int   offset;
};
#define SMBINFO_SET_OFFSET    0x01



struct create_window_request
{
    struct request_header __header;
    user_handle_t  parent;
    user_handle_t  owner;
    atom_t         atom;
};
struct create_window_reply
{
    struct reply_header __header;
    user_handle_t  handle;
};



struct link_window_request
{
    struct request_header __header;
    user_handle_t  handle;
    user_handle_t  parent;
    user_handle_t  previous;
};
struct link_window_reply
{
    struct reply_header __header;
    user_handle_t  full_parent;
};



struct destroy_window_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct destroy_window_reply
{
    struct reply_header __header;
};



struct set_window_owner_request
{
    struct request_header __header;
    user_handle_t  handle;
    user_handle_t  owner;
};
struct set_window_owner_reply
{
    struct reply_header __header;
    user_handle_t  full_owner;
    user_handle_t  prev_owner;
};



struct get_window_info_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct get_window_info_reply
{
    struct reply_header __header;
    user_handle_t  full_handle;
    user_handle_t  last_active;
    process_id_t   pid;
    thread_id_t    tid;
    atom_t         atom;
};



struct set_window_info_request
{
    struct request_header __header;
    user_handle_t  handle;
    unsigned int   flags;
    unsigned int   style;
    unsigned int   ex_style;
    unsigned int   id;
    void*          instance;
    void*          user_data;
};
struct set_window_info_reply
{
    struct reply_header __header;
    unsigned int   old_style;
    unsigned int   old_ex_style;
    unsigned int   old_id;
    void*          old_instance;
    void*          old_user_data;
};
#define SET_WIN_STYLE     0x01
#define SET_WIN_EXSTYLE   0x02
#define SET_WIN_ID        0x04
#define SET_WIN_INSTANCE  0x08
#define SET_WIN_USERDATA  0x10



struct get_window_parents_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct get_window_parents_reply
{
    struct reply_header __header;
    int            count;
    /* VARARG(parents,user_handles); */
};



struct get_window_children_request
{
    struct request_header __header;
    user_handle_t  parent;
    atom_t         atom;
    thread_id_t    tid;
};
struct get_window_children_reply
{
    struct reply_header __header;
    int            count;
    /* VARARG(children,user_handles); */
};



struct get_window_tree_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct get_window_tree_reply
{
    struct reply_header __header;
    user_handle_t  parent;
    user_handle_t  owner;
    user_handle_t  next_sibling;
    user_handle_t  prev_sibling;
    user_handle_t  first_sibling;
    user_handle_t  last_sibling;
    user_handle_t  first_child;
    user_handle_t  last_child;
};


struct set_window_rectangles_request
{
    struct request_header __header;
    user_handle_t  handle;
    rectangle_t    window;
    rectangle_t    client;
};
struct set_window_rectangles_reply
{
    struct reply_header __header;
};



struct get_window_rectangles_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct get_window_rectangles_reply
{
    struct reply_header __header;
    rectangle_t    window;
    rectangle_t    client;
};



struct get_window_text_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct get_window_text_reply
{
    struct reply_header __header;
    /* VARARG(text,unicode_str); */
};



struct set_window_text_request
{
    struct request_header __header;
    user_handle_t  handle;
    /* VARARG(text,unicode_str); */
};
struct set_window_text_reply
{
    struct reply_header __header;
};



struct inc_window_paint_count_request
{
    struct request_header __header;
    user_handle_t  handle;
    int             incr;
};
struct inc_window_paint_count_reply
{
    struct reply_header __header;
};



struct get_windows_offset_request
{
    struct request_header __header;
    user_handle_t  from;
    user_handle_t  to;
};
struct get_windows_offset_reply
{
    struct reply_header __header;
    int            x;
    int            y;
};



struct set_window_property_request
{
    struct request_header __header;
    user_handle_t  window;
    atom_t         atom;
    int            string;
    obj_handle_t   handle;
};
struct set_window_property_reply
{
    struct reply_header __header;
};



struct remove_window_property_request
{
    struct request_header __header;
    user_handle_t  window;
    atom_t         atom;
};
struct remove_window_property_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
};



struct get_window_property_request
{
    struct request_header __header;
    user_handle_t  window;
    atom_t         atom;
};
struct get_window_property_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
};



struct get_window_properties_request
{
    struct request_header __header;
    user_handle_t  window;
};
struct get_window_properties_reply
{
    struct reply_header __header;
    int            total;
    /* VARARG(props,properties); */
};



struct attach_thread_input_request
{
    struct request_header __header;
    thread_id_t    tid_from;
    thread_id_t    tid_to;
    int            attach;
};
struct attach_thread_input_reply
{
    struct reply_header __header;
};



struct get_thread_input_request
{
    struct request_header __header;
    thread_id_t    tid;
};
struct get_thread_input_reply
{
    struct reply_header __header;
    user_handle_t  focus;
    user_handle_t  capture;
    user_handle_t  active;
    user_handle_t  foreground;
    user_handle_t  menu_owner;
    user_handle_t  move_size;
    user_handle_t  caret;
    rectangle_t    rect;
};


struct get_key_state_request
{
    struct request_header __header;
    thread_id_t    tid;
    int            key;
};
struct get_key_state_reply
{
    struct reply_header __header;
    unsigned char  state;
    /* VARARG(keystate,bytes); */
};


struct set_key_state_request
{
    struct request_header __header;
    thread_id_t    tid;
    /* VARARG(keystate,bytes); */
};
struct set_key_state_reply
{
    struct reply_header __header;
};


struct set_foreground_window_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct set_foreground_window_reply
{
    struct reply_header __header;
    user_handle_t  previous;
    int            send_msg_old;
    int            send_msg_new;
};


struct set_focus_window_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct set_focus_window_reply
{
    struct reply_header __header;
    user_handle_t  previous;
};


struct set_active_window_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct set_active_window_reply
{
    struct reply_header __header;
    user_handle_t  previous;
};


struct set_capture_window_request
{
    struct request_header __header;
    user_handle_t  handle;
    unsigned int   flags;
};
struct set_capture_window_reply
{
    struct reply_header __header;
    user_handle_t  previous;
    user_handle_t  full_handle;
};
#define CAPTURE_MENU     0x01
#define CAPTURE_MOVESIZE 0x02



struct set_caret_window_request
{
    struct request_header __header;
    user_handle_t  handle;
    int            width;
    int            height;
};
struct set_caret_window_reply
{
    struct reply_header __header;
    user_handle_t  previous;
    rectangle_t    old_rect;
    int            old_hide;
    int            old_state;
};



struct set_caret_info_request
{
    struct request_header __header;
    unsigned int   flags;
    user_handle_t  handle;
    int            x;
    int            y;
    int            hide;
    int            state;
};
struct set_caret_info_reply
{
    struct reply_header __header;
    user_handle_t  full_handle;
    rectangle_t    old_rect;
    int            old_hide;
    int            old_state;
};
#define SET_CARET_POS        0x01
#define SET_CARET_HIDE       0x02
#define SET_CARET_STATE      0x04



struct set_hook_request
{
    struct request_header __header;
    int            id;
    thread_id_t    tid;
    void*          proc;
    int            unicode;
    /* VARARG(module,unicode_str); */
};
struct set_hook_reply
{
    struct reply_header __header;
    user_handle_t  handle;
};



struct remove_hook_request
{
    struct request_header __header;
    user_handle_t  handle;
    int            id;
    void*          proc;
};
struct remove_hook_reply
{
    struct reply_header __header;
};



struct start_hook_chain_request
{
    struct request_header __header;
    int            id;
};
struct start_hook_chain_reply
{
    struct reply_header __header;
    user_handle_t  handle;
    process_id_t   pid;
    thread_id_t    tid;
    void*          proc;
    int            unicode;
    /* VARARG(module,unicode_str); */
};



struct finish_hook_chain_request
{
    struct request_header __header;
    int            id;
};
struct finish_hook_chain_reply
{
    struct reply_header __header;
};



struct get_next_hook_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct get_next_hook_reply
{
    struct reply_header __header;
    user_handle_t  next;
    int            id;
    process_id_t   pid;
    thread_id_t    tid;
    void*          proc;
    int            prev_unicode;
    int            next_unicode;
    /* VARARG(module,unicode_str); */
};



struct set_clipboard_info_request
{
    struct request_header __header;
    unsigned int   flags;
    user_handle_t  clipboard;
    user_handle_t  owner;
    user_handle_t  viewer;
    unsigned int   seqno;
};
struct set_clipboard_info_reply
{
    struct reply_header __header;
    unsigned int   flags;
    user_handle_t  old_clipboard;
    user_handle_t  old_owner;
    user_handle_t  old_viewer;
    unsigned int   seqno;
};

#define SET_CB_OPEN      0x001
#define SET_CB_OWNER     0x002
#define SET_CB_VIEWER    0x004
#define SET_CB_SEQNO     0x008
#define SET_CB_RELOWNER  0x010
#define SET_CB_CLOSE     0x020
#define CB_OPEN          0x040
#define CB_OWNER         0x080



struct open_token_request
{
    struct request_header __header;
    obj_handle_t   handle;
    unsigned int   flags;
};
struct open_token_reply
{
    struct reply_header __header;
    obj_handle_t   token;
};
#define OPEN_TOKEN_THREAD   1
#define OPEN_TOKEN_AS_SELF  2


enum request
{
    REQ_new_process,
    REQ_get_new_process_info,
    REQ_new_thread,
    REQ_boot_done,
    REQ_init_process,
    REQ_get_startup_info,
    REQ_init_process_done,
    REQ_init_thread,
    REQ_terminate_process,
    REQ_terminate_thread,
    REQ_get_process_info,
    REQ_set_process_info,
    REQ_get_thread_info,
    REQ_set_thread_info,
    REQ_get_dll_info,
    REQ_suspend_thread,
    REQ_resume_thread,
    REQ_load_dll,
    REQ_unload_dll,
    REQ_queue_apc,
    REQ_get_apc,
    REQ_close_handle,
    REQ_set_handle_info,
    REQ_dup_handle,
    REQ_open_process,
    REQ_open_thread,
    REQ_select,
    REQ_create_event,
    REQ_event_op,
    REQ_open_event,
    REQ_create_mutex,
    REQ_release_mutex,
    REQ_open_mutex,
    REQ_create_semaphore,
    REQ_release_semaphore,
    REQ_open_semaphore,
    REQ_create_file,
    REQ_alloc_file_handle,
    REQ_get_handle_fd,
    REQ_set_file_pointer,
    REQ_truncate_file,
    REQ_set_file_time,
    REQ_flush_file,
    REQ_get_file_info,
    REQ_lock_file,
    REQ_unlock_file,
    REQ_create_socket,
    REQ_accept_socket,
    REQ_set_socket_event,
    REQ_get_socket_event,
    REQ_enable_socket_event,
    REQ_set_socket_deferred,
    REQ_alloc_console,
    REQ_free_console,
    REQ_get_console_renderer_events,
    REQ_open_console,
    REQ_get_console_wait_event,
    REQ_get_console_mode,
    REQ_set_console_mode,
    REQ_set_console_input_info,
    REQ_get_console_input_info,
    REQ_append_console_input_history,
    REQ_get_console_input_history,
    REQ_create_console_output,
    REQ_set_console_output_info,
    REQ_get_console_output_info,
    REQ_write_console_input,
    REQ_read_console_input,
    REQ_write_console_output,
    REQ_fill_console_output,
    REQ_read_console_output,
    REQ_move_console_output,
    REQ_send_console_signal,
    REQ_create_change_notification,
    REQ_next_change_notification,
    REQ_create_mapping,
    REQ_open_mapping,
    REQ_get_mapping_info,
    REQ_create_device,
    REQ_get_device_id,
    REQ_create_snapshot,
    REQ_next_process,
    REQ_next_thread,
    REQ_next_module,
    REQ_wait_debug_event,
    REQ_queue_exception_event,
    REQ_get_exception_status,
    REQ_output_debug_string,
    REQ_continue_debug_event,
    REQ_debug_process,
    REQ_debug_break,
    REQ_set_debugger_kill_on_exit,
    REQ_read_process_memory,
    REQ_write_process_memory,
    REQ_create_key,
    REQ_open_key,
    REQ_delete_key,
    REQ_enum_key,
    REQ_set_key_value,
    REQ_get_key_value,
    REQ_enum_key_value,
    REQ_delete_key_value,
    REQ_load_registry,
    REQ_unload_registry,
    REQ_save_registry,
    REQ_save_registry_atexit,
    REQ_set_registry_levels,
    REQ_set_registry_notification,
    REQ_create_timer,
    REQ_open_timer,
    REQ_set_timer,
    REQ_cancel_timer,
    REQ_get_thread_context,
    REQ_set_thread_context,
    REQ_get_selector_entry,
    REQ_add_atom,
    REQ_delete_atom,
    REQ_find_atom,
    REQ_get_atom_name,
    REQ_init_atom_table,
    REQ_get_msg_queue,
    REQ_set_queue_mask,
    REQ_get_queue_status,
    REQ_wait_input_idle,
    REQ_send_message,
    REQ_get_message,
    REQ_reply_message,
    REQ_get_message_reply,
    REQ_set_win_timer,
    REQ_kill_win_timer,
    REQ_create_serial,
    REQ_get_serial_info,
    REQ_set_serial_info,
    REQ_register_async,
    REQ_create_named_pipe,
    REQ_open_named_pipe,
    REQ_connect_named_pipe,
    REQ_wait_named_pipe,
    REQ_disconnect_named_pipe,
    REQ_get_named_pipe_info,
    REQ_create_smb,
    REQ_get_smb_info,
    REQ_create_window,
    REQ_link_window,
    REQ_destroy_window,
    REQ_set_window_owner,
    REQ_get_window_info,
    REQ_set_window_info,
    REQ_get_window_parents,
    REQ_get_window_children,
    REQ_get_window_tree,
    REQ_set_window_rectangles,
    REQ_get_window_rectangles,
    REQ_get_window_text,
    REQ_set_window_text,
    REQ_inc_window_paint_count,
    REQ_get_windows_offset,
    REQ_set_window_property,
    REQ_remove_window_property,
    REQ_get_window_property,
    REQ_get_window_properties,
    REQ_attach_thread_input,
    REQ_get_thread_input,
    REQ_get_key_state,
    REQ_set_key_state,
    REQ_set_foreground_window,
    REQ_set_focus_window,
    REQ_set_active_window,
    REQ_set_capture_window,
    REQ_set_caret_window,
    REQ_set_caret_info,
    REQ_set_hook,
    REQ_remove_hook,
    REQ_start_hook_chain,
    REQ_finish_hook_chain,
    REQ_get_next_hook,
    REQ_set_clipboard_info,
    REQ_open_token,
    REQ_NB_REQUESTS
};

union generic_request
{
    struct request_max_size max_size;
    struct request_header request_header;
    struct new_process_request new_process_request;
    struct get_new_process_info_request get_new_process_info_request;
    struct new_thread_request new_thread_request;
    struct boot_done_request boot_done_request;
    struct init_process_request init_process_request;
    struct get_startup_info_request get_startup_info_request;
    struct init_process_done_request init_process_done_request;
    struct init_thread_request init_thread_request;
    struct terminate_process_request terminate_process_request;
    struct terminate_thread_request terminate_thread_request;
    struct get_process_info_request get_process_info_request;
    struct set_process_info_request set_process_info_request;
    struct get_thread_info_request get_thread_info_request;
    struct set_thread_info_request set_thread_info_request;
    struct get_dll_info_request get_dll_info_request;
    struct suspend_thread_request suspend_thread_request;
    struct resume_thread_request resume_thread_request;
    struct load_dll_request load_dll_request;
    struct unload_dll_request unload_dll_request;
    struct queue_apc_request queue_apc_request;
    struct get_apc_request get_apc_request;
    struct close_handle_request close_handle_request;
    struct set_handle_info_request set_handle_info_request;
    struct dup_handle_request dup_handle_request;
    struct open_process_request open_process_request;
    struct open_thread_request open_thread_request;
    struct select_request select_request;
    struct create_event_request create_event_request;
    struct event_op_request event_op_request;
    struct open_event_request open_event_request;
    struct create_mutex_request create_mutex_request;
    struct release_mutex_request release_mutex_request;
    struct open_mutex_request open_mutex_request;
    struct create_semaphore_request create_semaphore_request;
    struct release_semaphore_request release_semaphore_request;
    struct open_semaphore_request open_semaphore_request;
    struct create_file_request create_file_request;
    struct alloc_file_handle_request alloc_file_handle_request;
    struct get_handle_fd_request get_handle_fd_request;
    struct set_file_pointer_request set_file_pointer_request;
    struct truncate_file_request truncate_file_request;
    struct set_file_time_request set_file_time_request;
    struct flush_file_request flush_file_request;
    struct get_file_info_request get_file_info_request;
    struct lock_file_request lock_file_request;
    struct unlock_file_request unlock_file_request;
    struct create_socket_request create_socket_request;
    struct accept_socket_request accept_socket_request;
    struct set_socket_event_request set_socket_event_request;
    struct get_socket_event_request get_socket_event_request;
    struct enable_socket_event_request enable_socket_event_request;
    struct set_socket_deferred_request set_socket_deferred_request;
    struct alloc_console_request alloc_console_request;
    struct free_console_request free_console_request;
    struct get_console_renderer_events_request get_console_renderer_events_request;
    struct open_console_request open_console_request;
    struct get_console_wait_event_request get_console_wait_event_request;
    struct get_console_mode_request get_console_mode_request;
    struct set_console_mode_request set_console_mode_request;
    struct set_console_input_info_request set_console_input_info_request;
    struct get_console_input_info_request get_console_input_info_request;
    struct append_console_input_history_request append_console_input_history_request;
    struct get_console_input_history_request get_console_input_history_request;
    struct create_console_output_request create_console_output_request;
    struct set_console_output_info_request set_console_output_info_request;
    struct get_console_output_info_request get_console_output_info_request;
    struct write_console_input_request write_console_input_request;
    struct read_console_input_request read_console_input_request;
    struct write_console_output_request write_console_output_request;
    struct fill_console_output_request fill_console_output_request;
    struct read_console_output_request read_console_output_request;
    struct move_console_output_request move_console_output_request;
    struct send_console_signal_request send_console_signal_request;
    struct create_change_notification_request create_change_notification_request;
    struct next_change_notification_request next_change_notification_request;
    struct create_mapping_request create_mapping_request;
    struct open_mapping_request open_mapping_request;
    struct get_mapping_info_request get_mapping_info_request;
    struct create_device_request create_device_request;
    struct get_device_id_request get_device_id_request;
    struct create_snapshot_request create_snapshot_request;
    struct next_process_request next_process_request;
    struct next_thread_request next_thread_request;
    struct next_module_request next_module_request;
    struct wait_debug_event_request wait_debug_event_request;
    struct queue_exception_event_request queue_exception_event_request;
    struct get_exception_status_request get_exception_status_request;
    struct output_debug_string_request output_debug_string_request;
    struct continue_debug_event_request continue_debug_event_request;
    struct debug_process_request debug_process_request;
    struct debug_break_request debug_break_request;
    struct set_debugger_kill_on_exit_request set_debugger_kill_on_exit_request;
    struct read_process_memory_request read_process_memory_request;
    struct write_process_memory_request write_process_memory_request;
    struct create_key_request create_key_request;
    struct open_key_request open_key_request;
    struct delete_key_request delete_key_request;
    struct enum_key_request enum_key_request;
    struct set_key_value_request set_key_value_request;
    struct get_key_value_request get_key_value_request;
    struct enum_key_value_request enum_key_value_request;
    struct delete_key_value_request delete_key_value_request;
    struct load_registry_request load_registry_request;
    struct unload_registry_request unload_registry_request;
    struct save_registry_request save_registry_request;
    struct save_registry_atexit_request save_registry_atexit_request;
    struct set_registry_levels_request set_registry_levels_request;
    struct set_registry_notification_request set_registry_notification_request;
    struct create_timer_request create_timer_request;
    struct open_timer_request open_timer_request;
    struct set_timer_request set_timer_request;
    struct cancel_timer_request cancel_timer_request;
    struct get_thread_context_request get_thread_context_request;
    struct set_thread_context_request set_thread_context_request;
    struct get_selector_entry_request get_selector_entry_request;
    struct add_atom_request add_atom_request;
    struct delete_atom_request delete_atom_request;
    struct find_atom_request find_atom_request;
    struct get_atom_name_request get_atom_name_request;
    struct init_atom_table_request init_atom_table_request;
    struct get_msg_queue_request get_msg_queue_request;
    struct set_queue_mask_request set_queue_mask_request;
    struct get_queue_status_request get_queue_status_request;
    struct wait_input_idle_request wait_input_idle_request;
    struct send_message_request send_message_request;
    struct get_message_request get_message_request;
    struct reply_message_request reply_message_request;
    struct get_message_reply_request get_message_reply_request;
    struct set_win_timer_request set_win_timer_request;
    struct kill_win_timer_request kill_win_timer_request;
    struct create_serial_request create_serial_request;
    struct get_serial_info_request get_serial_info_request;
    struct set_serial_info_request set_serial_info_request;
    struct register_async_request register_async_request;
    struct create_named_pipe_request create_named_pipe_request;
    struct open_named_pipe_request open_named_pipe_request;
    struct connect_named_pipe_request connect_named_pipe_request;
    struct wait_named_pipe_request wait_named_pipe_request;
    struct disconnect_named_pipe_request disconnect_named_pipe_request;
    struct get_named_pipe_info_request get_named_pipe_info_request;
    struct create_smb_request create_smb_request;
    struct get_smb_info_request get_smb_info_request;
    struct create_window_request create_window_request;
    struct link_window_request link_window_request;
    struct destroy_window_request destroy_window_request;
    struct set_window_owner_request set_window_owner_request;
    struct get_window_info_request get_window_info_request;
    struct set_window_info_request set_window_info_request;
    struct get_window_parents_request get_window_parents_request;
    struct get_window_children_request get_window_children_request;
    struct get_window_tree_request get_window_tree_request;
    struct set_window_rectangles_request set_window_rectangles_request;
    struct get_window_rectangles_request get_window_rectangles_request;
    struct get_window_text_request get_window_text_request;
    struct set_window_text_request set_window_text_request;
    struct inc_window_paint_count_request inc_window_paint_count_request;
    struct get_windows_offset_request get_windows_offset_request;
    struct set_window_property_request set_window_property_request;
    struct remove_window_property_request remove_window_property_request;
    struct get_window_property_request get_window_property_request;
    struct get_window_properties_request get_window_properties_request;
    struct attach_thread_input_request attach_thread_input_request;
    struct get_thread_input_request get_thread_input_request;
    struct get_key_state_request get_key_state_request;
    struct set_key_state_request set_key_state_request;
    struct set_foreground_window_request set_foreground_window_request;
    struct set_focus_window_request set_focus_window_request;
    struct set_active_window_request set_active_window_request;
    struct set_capture_window_request set_capture_window_request;
    struct set_caret_window_request set_caret_window_request;
    struct set_caret_info_request set_caret_info_request;
    struct set_hook_request set_hook_request;
    struct remove_hook_request remove_hook_request;
    struct start_hook_chain_request start_hook_chain_request;
    struct finish_hook_chain_request finish_hook_chain_request;
    struct get_next_hook_request get_next_hook_request;
    struct set_clipboard_info_request set_clipboard_info_request;
    struct open_token_request open_token_request;
};
union generic_reply
{
    struct request_max_size max_size;
    struct reply_header reply_header;
    struct new_process_reply new_process_reply;
    struct get_new_process_info_reply get_new_process_info_reply;
    struct new_thread_reply new_thread_reply;
    struct boot_done_reply boot_done_reply;
    struct init_process_reply init_process_reply;
    struct get_startup_info_reply get_startup_info_reply;
    struct init_process_done_reply init_process_done_reply;
    struct init_thread_reply init_thread_reply;
    struct terminate_process_reply terminate_process_reply;
    struct terminate_thread_reply terminate_thread_reply;
    struct get_process_info_reply get_process_info_reply;
    struct set_process_info_reply set_process_info_reply;
    struct get_thread_info_reply get_thread_info_reply;
    struct set_thread_info_reply set_thread_info_reply;
    struct get_dll_info_reply get_dll_info_reply;
    struct suspend_thread_reply suspend_thread_reply;
    struct resume_thread_reply resume_thread_reply;
    struct load_dll_reply load_dll_reply;
    struct unload_dll_reply unload_dll_reply;
    struct queue_apc_reply queue_apc_reply;
    struct get_apc_reply get_apc_reply;
    struct close_handle_reply close_handle_reply;
    struct set_handle_info_reply set_handle_info_reply;
    struct dup_handle_reply dup_handle_reply;
    struct open_process_reply open_process_reply;
    struct open_thread_reply open_thread_reply;
    struct select_reply select_reply;
    struct create_event_reply create_event_reply;
    struct event_op_reply event_op_reply;
    struct open_event_reply open_event_reply;
    struct create_mutex_reply create_mutex_reply;
    struct release_mutex_reply release_mutex_reply;
    struct open_mutex_reply open_mutex_reply;
    struct create_semaphore_reply create_semaphore_reply;
    struct release_semaphore_reply release_semaphore_reply;
    struct open_semaphore_reply open_semaphore_reply;
    struct create_file_reply create_file_reply;
    struct alloc_file_handle_reply alloc_file_handle_reply;
    struct get_handle_fd_reply get_handle_fd_reply;
    struct set_file_pointer_reply set_file_pointer_reply;
    struct truncate_file_reply truncate_file_reply;
    struct set_file_time_reply set_file_time_reply;
    struct flush_file_reply flush_file_reply;
    struct get_file_info_reply get_file_info_reply;
    struct lock_file_reply lock_file_reply;
    struct unlock_file_reply unlock_file_reply;
    struct create_socket_reply create_socket_reply;
    struct accept_socket_reply accept_socket_reply;
    struct set_socket_event_reply set_socket_event_reply;
    struct get_socket_event_reply get_socket_event_reply;
    struct enable_socket_event_reply enable_socket_event_reply;
    struct set_socket_deferred_reply set_socket_deferred_reply;
    struct alloc_console_reply alloc_console_reply;
    struct free_console_reply free_console_reply;
    struct get_console_renderer_events_reply get_console_renderer_events_reply;
    struct open_console_reply open_console_reply;
    struct get_console_wait_event_reply get_console_wait_event_reply;
    struct get_console_mode_reply get_console_mode_reply;
    struct set_console_mode_reply set_console_mode_reply;
    struct set_console_input_info_reply set_console_input_info_reply;
    struct get_console_input_info_reply get_console_input_info_reply;
    struct append_console_input_history_reply append_console_input_history_reply;
    struct get_console_input_history_reply get_console_input_history_reply;
    struct create_console_output_reply create_console_output_reply;
    struct set_console_output_info_reply set_console_output_info_reply;
    struct get_console_output_info_reply get_console_output_info_reply;
    struct write_console_input_reply write_console_input_reply;
    struct read_console_input_reply read_console_input_reply;
    struct write_console_output_reply write_console_output_reply;
    struct fill_console_output_reply fill_console_output_reply;
    struct read_console_output_reply read_console_output_reply;
    struct move_console_output_reply move_console_output_reply;
    struct send_console_signal_reply send_console_signal_reply;
    struct create_change_notification_reply create_change_notification_reply;
    struct next_change_notification_reply next_change_notification_reply;
    struct create_mapping_reply create_mapping_reply;
    struct open_mapping_reply open_mapping_reply;
    struct get_mapping_info_reply get_mapping_info_reply;
    struct create_device_reply create_device_reply;
    struct get_device_id_reply get_device_id_reply;
    struct create_snapshot_reply create_snapshot_reply;
    struct next_process_reply next_process_reply;
    struct next_thread_reply next_thread_reply;
    struct next_module_reply next_module_reply;
    struct wait_debug_event_reply wait_debug_event_reply;
    struct queue_exception_event_reply queue_exception_event_reply;
    struct get_exception_status_reply get_exception_status_reply;
    struct output_debug_string_reply output_debug_string_reply;
    struct continue_debug_event_reply continue_debug_event_reply;
    struct debug_process_reply debug_process_reply;
    struct debug_break_reply debug_break_reply;
    struct set_debugger_kill_on_exit_reply set_debugger_kill_on_exit_reply;
    struct read_process_memory_reply read_process_memory_reply;
    struct write_process_memory_reply write_process_memory_reply;
    struct create_key_reply create_key_reply;
    struct open_key_reply open_key_reply;
    struct delete_key_reply delete_key_reply;
    struct enum_key_reply enum_key_reply;
    struct set_key_value_reply set_key_value_reply;
    struct get_key_value_reply get_key_value_reply;
    struct enum_key_value_reply enum_key_value_reply;
    struct delete_key_value_reply delete_key_value_reply;
    struct load_registry_reply load_registry_reply;
    struct unload_registry_reply unload_registry_reply;
    struct save_registry_reply save_registry_reply;
    struct save_registry_atexit_reply save_registry_atexit_reply;
    struct set_registry_levels_reply set_registry_levels_reply;
    struct set_registry_notification_reply set_registry_notification_reply;
    struct create_timer_reply create_timer_reply;
    struct open_timer_reply open_timer_reply;
    struct set_timer_reply set_timer_reply;
    struct cancel_timer_reply cancel_timer_reply;
    struct get_thread_context_reply get_thread_context_reply;
    struct set_thread_context_reply set_thread_context_reply;
    struct get_selector_entry_reply get_selector_entry_reply;
    struct add_atom_reply add_atom_reply;
    struct delete_atom_reply delete_atom_reply;
    struct find_atom_reply find_atom_reply;
    struct get_atom_name_reply get_atom_name_reply;
    struct init_atom_table_reply init_atom_table_reply;
    struct get_msg_queue_reply get_msg_queue_reply;
    struct set_queue_mask_reply set_queue_mask_reply;
    struct get_queue_status_reply get_queue_status_reply;
    struct wait_input_idle_reply wait_input_idle_reply;
    struct send_message_reply send_message_reply;
    struct get_message_reply get_message_reply;
    struct reply_message_reply reply_message_reply;
    struct get_message_reply_reply get_message_reply_reply;
    struct set_win_timer_reply set_win_timer_reply;
    struct kill_win_timer_reply kill_win_timer_reply;
    struct create_serial_reply create_serial_reply;
    struct get_serial_info_reply get_serial_info_reply;
    struct set_serial_info_reply set_serial_info_reply;
    struct register_async_reply register_async_reply;
    struct create_named_pipe_reply create_named_pipe_reply;
    struct open_named_pipe_reply open_named_pipe_reply;
    struct connect_named_pipe_reply connect_named_pipe_reply;
    struct wait_named_pipe_reply wait_named_pipe_reply;
    struct disconnect_named_pipe_reply disconnect_named_pipe_reply;
    struct get_named_pipe_info_reply get_named_pipe_info_reply;
    struct create_smb_reply create_smb_reply;
    struct get_smb_info_reply get_smb_info_reply;
    struct create_window_reply create_window_reply;
    struct link_window_reply link_window_reply;
    struct destroy_window_reply destroy_window_reply;
    struct set_window_owner_reply set_window_owner_reply;
    struct get_window_info_reply get_window_info_reply;
    struct set_window_info_reply set_window_info_reply;
    struct get_window_parents_reply get_window_parents_reply;
    struct get_window_children_reply get_window_children_reply;
    struct get_window_tree_reply get_window_tree_reply;
    struct set_window_rectangles_reply set_window_rectangles_reply;
    struct get_window_rectangles_reply get_window_rectangles_reply;
    struct get_window_text_reply get_window_text_reply;
    struct set_window_text_reply set_window_text_reply;
    struct inc_window_paint_count_reply inc_window_paint_count_reply;
    struct get_windows_offset_reply get_windows_offset_reply;
    struct set_window_property_reply set_window_property_reply;
    struct remove_window_property_reply remove_window_property_reply;
    struct get_window_property_reply get_window_property_reply;
    struct get_window_properties_reply get_window_properties_reply;
    struct attach_thread_input_reply attach_thread_input_reply;
    struct get_thread_input_reply get_thread_input_reply;
    struct get_key_state_reply get_key_state_reply;
    struct set_key_state_reply set_key_state_reply;
    struct set_foreground_window_reply set_foreground_window_reply;
    struct set_focus_window_reply set_focus_window_reply;
    struct set_active_window_reply set_active_window_reply;
    struct set_capture_window_reply set_capture_window_reply;
    struct set_caret_window_reply set_caret_window_reply;
    struct set_caret_info_reply set_caret_info_reply;
    struct set_hook_reply set_hook_reply;
    struct remove_hook_reply remove_hook_reply;
    struct start_hook_chain_reply start_hook_chain_reply;
    struct finish_hook_chain_reply finish_hook_chain_reply;
    struct get_next_hook_reply get_next_hook_reply;
    struct set_clipboard_info_reply set_clipboard_info_reply;
    struct open_token_reply open_token_reply;
};

#define SERVER_PROTOCOL_VERSION 120

#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
