/*
 * 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>

typedef unsigned int obj_handle_t;
typedef unsigned int user_handle_t;
typedef unsigned int atom_t;
typedef unsigned int process_id_t;
typedef unsigned int thread_id_t;
typedef unsigned int data_size_t;
typedef unsigned int ioctl_code_t;
typedef unsigned __int64 lparam_t;
typedef unsigned __int64 apc_param_t;
typedef unsigned __int64 mem_size_t;
typedef unsigned __int64 file_pos_t;
typedef unsigned __int64 client_ptr_t;
typedef unsigned __int64 affinity_t;
typedef client_ptr_t mod_handle_t;

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

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



struct request_max_size
{
    int pad[16];
};

#define FIRST_USER_HANDLE 0x0020
#define LAST_USER_HANDLE  0xffef



typedef union
{
    int code;
    struct
    {
        int              code;
        int              first;
        unsigned int     exc_code;
        unsigned int     flags;
        client_ptr_t     record;
        client_ptr_t     address;
        int              nb_params;
        int              __pad;
        client_ptr_t     params[15];
    } exception;
    struct
    {
        int          code;
        obj_handle_t handle;
        client_ptr_t teb;
        client_ptr_t start;
    } create_thread;
    struct
    {
        int          code;
        obj_handle_t file;
        obj_handle_t process;
        obj_handle_t thread;
        mod_handle_t base;
        int          dbg_offset;
        int          dbg_size;
        client_ptr_t teb;
        client_ptr_t start;
        client_ptr_t name;
        int          unicode;
    } create_process;
    struct
    {
        int          code;
        int          exit_code;
    } exit;
    struct
    {
        int          code;
        obj_handle_t handle;
        mod_handle_t base;
        int          dbg_offset;
        int          dbg_size;
        client_ptr_t name;
        int          unicode;
    } load_dll;
    struct
    {
        int          code;
        int          __pad;
        mod_handle_t base;
    } unload_dll;
} debug_event_t;


enum cpu_type
{
    CPU_x86, CPU_x86_64, CPU_POWERPC, CPU_ARM, CPU_ARM64
};
typedef int cpu_type_t;


typedef struct
{
    cpu_type_t       cpu;
    unsigned int     flags;
    union
    {
        struct { unsigned int eip, ebp, esp, eflags, cs, ss; } i386_regs;
        struct { unsigned __int64 rip, rbp, rsp;
                 unsigned int cs, ss, flags, __pad; } x86_64_regs;
        struct { unsigned int iar, msr, ctr, lr, dar, dsisr, trap, __pad; } powerpc_regs;
        struct { unsigned int sp, lr, pc, cpsr; } arm_regs;
        struct { unsigned __int64 sp, pc, pstate; } arm64_regs;
    } ctl;
    union
    {
        struct { unsigned int eax, ebx, ecx, edx, esi, edi; } i386_regs;
        struct { unsigned __int64 rax,rbx, rcx, rdx, rsi, rdi,
                                  r8, r9, r10, r11, r12, r13, r14, r15; } x86_64_regs;
        struct { unsigned int gpr[32], cr, xer; } powerpc_regs;
        struct { unsigned int r[13]; } arm_regs;
        struct { unsigned __int64 x[31]; } arm64_regs;
    } integer;
    union
    {
        struct { unsigned int ds, es, fs, gs; } i386_regs;
        struct { unsigned int ds, es, fs, gs; } x86_64_regs;
    } seg;
    union
    {
        struct { unsigned int ctrl, status, tag, err_off, err_sel, data_off, data_sel, cr0npx;
                 unsigned char regs[80]; } i386_regs;
        struct { struct { unsigned __int64 low, high; } fpregs[32]; } x86_64_regs;
        struct { double fpr[32], fpscr; } powerpc_regs;
    } fp;
    union
    {
        struct { unsigned int dr0, dr1, dr2, dr3, dr6, dr7; } i386_regs;
        struct { unsigned __int64 dr0, dr1, dr2, dr3, dr6, dr7; } x86_64_regs;
        struct { unsigned int dr[8]; } powerpc_regs;
    } debug;
    union
    {
        unsigned char i386_regs[512];
    } ext;
} context_t;

#define SERVER_CTX_CONTROL            0x01
#define SERVER_CTX_INTEGER            0x02
#define SERVER_CTX_SEGMENTS           0x04
#define SERVER_CTX_FLOATING_POINT     0x08
#define SERVER_CTX_DEBUG_REGISTERS    0x10
#define SERVER_CTX_EXTENDED_REGISTERS 0x20


struct send_fd
{
    thread_id_t tid;
    int         fd;
};


struct wake_up_reply
{
    client_ptr_t cookie;
    int          signaled;
    int          __pad;
};


typedef __int64 timeout_t;
#define TIMEOUT_INFINITE (((timeout_t)0x7fffffff) << 32 | 0xffffffff)


typedef struct
{
    unsigned int debug_flags;
    unsigned int console_flags;
    obj_handle_t console;
    obj_handle_t hstdin;
    obj_handle_t hstdout;
    obj_handle_t hstderr;
    unsigned int x;
    unsigned int y;
    unsigned int xsize;
    unsigned int ysize;
    unsigned int xchars;
    unsigned int ychars;
    unsigned int attribute;
    unsigned int flags;
    unsigned int show;
    data_size_t  curdir_len;
    data_size_t  dllpath_len;
    data_size_t  imagepath_len;
    data_size_t  cmdline_len;
    data_size_t  title_len;
    data_size_t  desktop_len;
    data_size_t  shellinfo_len;
    data_size_t  runtime_len;








} startup_info_t;


typedef struct
{
    atom_t         atom;
    int            string;
    lparam_t       data;
} property_data_t;


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


typedef struct
{
    obj_handle_t    handle;
    obj_handle_t    event;
    client_ptr_t    callback;
    client_ptr_t    iosb;
    client_ptr_t    arg;
    apc_param_t     cvalue;
} async_data_t;



struct hardware_msg_data
{
    lparam_t        info;
    unsigned int    hw_id;
    unsigned int    flags;
    union
    {
        int type;
        struct
        {
            int            type;
            unsigned int   message;
            unsigned short vkey;
            unsigned short scan;
        } kbd;
        struct
        {
            int            type;
            int            x;
            int            y;
            unsigned int   data;
        } mouse;
    } rawinput;
};

struct callback_msg_data
{
    client_ptr_t    callback;
    lparam_t        data;
    lparam_t        result;
};

struct winevent_msg_data
{
    user_handle_t   hook;
    thread_id_t     tid;
    client_ptr_t    hook_proc;

};

typedef union
{
    int type;
    struct
    {
        int            type;
        unsigned short vkey;
        unsigned short scan;
        unsigned int   flags;
        unsigned int   time;
        lparam_t       info;
    } kbd;
    struct
    {
        int            type;
        int            x;
        int            y;
        unsigned int   data;
        unsigned int   flags;
        unsigned int   time;
        lparam_t       info;
    } mouse;
    struct
    {
        int            type;
        unsigned int   msg;
        lparam_t       lparam;
    } hw;
} hw_input_t;

typedef union
{
    unsigned char            bytes[1];
    struct hardware_msg_data hardware;
    struct callback_msg_data callback;
    struct winevent_msg_data winevent;
} message_data_t;


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


struct filesystem_event
{
    int         action;
    data_size_t len;
    char        name[1];
};

typedef struct
{
    unsigned int low_part;
    int          high_part;
} luid_t;

#define MAX_ACL_LEN 65535

struct security_descriptor
{
    unsigned int control;
    data_size_t  owner_len;
    data_size_t  group_len;
    data_size_t  sacl_len;
    data_size_t  dacl_len;




};

struct object_attributes
{
    obj_handle_t rootdir;
    data_size_t sd_len;
    data_size_t name_len;


};

struct token_groups
{
    unsigned int count;


};

enum select_op
{
    SELECT_NONE,
    SELECT_WAIT,
    SELECT_WAIT_ALL,
    SELECT_SIGNAL_AND_WAIT,
    SELECT_KEYED_EVENT_WAIT,
    SELECT_KEYED_EVENT_RELEASE
};

typedef union
{
    enum select_op op;
    struct
    {
        enum select_op  op;
        obj_handle_t    handles[MAXIMUM_WAIT_OBJECTS];
    } wait;
    struct
    {
        enum select_op  op;
        obj_handle_t    wait;
        obj_handle_t    signal;
    } signal_and_wait;
    struct
    {
        enum select_op  op;
        obj_handle_t    handle;
        client_ptr_t    key;
    } keyed_event;
} select_op_t;

enum apc_type
{
    APC_NONE,
    APC_USER,
    APC_TIMER,
    APC_ASYNC_IO,
    APC_VIRTUAL_ALLOC,
    APC_VIRTUAL_FREE,
    APC_VIRTUAL_QUERY,
    APC_VIRTUAL_PROTECT,
    APC_VIRTUAL_FLUSH,
    APC_VIRTUAL_LOCK,
    APC_VIRTUAL_UNLOCK,
    APC_MAP_VIEW,
    APC_UNMAP_VIEW,
    APC_CREATE_THREAD
};

typedef union
{
    enum apc_type type;
    struct
    {
        enum apc_type    type;
        int              __pad;
        client_ptr_t     func;
        apc_param_t      args[3];
    } user;
    struct
    {
        enum apc_type    type;
        int              __pad;
        client_ptr_t     func;
        timeout_t        time;
        client_ptr_t     arg;
    } timer;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        client_ptr_t     func;
        client_ptr_t     user;
        client_ptr_t     sb;
    } async_io;
    struct
    {
        enum apc_type    type;
        unsigned int     op_type;
        client_ptr_t     addr;
        mem_size_t       size;
        unsigned int     zero_bits;
        unsigned int     prot;
    } virtual_alloc;
    struct
    {
        enum apc_type    type;
        unsigned int     op_type;
        client_ptr_t     addr;
        mem_size_t       size;
    } virtual_free;
    struct
    {
        enum apc_type    type;
        int              __pad;
        client_ptr_t     addr;
    } virtual_query;
    struct
    {
        enum apc_type    type;
        unsigned int     prot;
        client_ptr_t     addr;
        mem_size_t       size;
    } virtual_protect;
    struct
    {
        enum apc_type    type;
        int              __pad;
        client_ptr_t     addr;
        mem_size_t       size;
    } virtual_flush;
    struct
    {
        enum apc_type    type;
        int              __pad;
        client_ptr_t     addr;
        mem_size_t       size;
    } virtual_lock;
    struct
    {
        enum apc_type    type;
        int              __pad;
        client_ptr_t     addr;
        mem_size_t       size;
    } virtual_unlock;
    struct
    {
        enum apc_type    type;
        obj_handle_t     handle;
        client_ptr_t     addr;
        mem_size_t       size;
        file_pos_t       offset;
        unsigned int     alloc_type;
        unsigned short   zero_bits;
        unsigned short   prot;
    } map_view;
    struct
    {
        enum apc_type    type;
        int              __pad;
        client_ptr_t     addr;
    } unmap_view;
    struct
    {
        enum apc_type    type;
        int              suspend;
        client_ptr_t     func;
        client_ptr_t     arg;
        mem_size_t       reserve;
        mem_size_t       commit;
    } create_thread;
} apc_call_t;

typedef union
{
    enum apc_type type;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        client_ptr_t     apc;
        client_ptr_t     arg;
        unsigned int     total;
    } async_io;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        client_ptr_t     addr;
        mem_size_t       size;
    } virtual_alloc;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        client_ptr_t     addr;
        mem_size_t       size;
    } virtual_free;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        client_ptr_t     base;
        client_ptr_t     alloc_base;
        mem_size_t       size;
        unsigned short   state;
        unsigned short   prot;
        unsigned short   alloc_prot;
        unsigned short   alloc_type;
    } virtual_query;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        client_ptr_t     addr;
        mem_size_t       size;
        unsigned int     prot;
    } virtual_protect;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        client_ptr_t     addr;
        mem_size_t       size;
    } virtual_flush;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        client_ptr_t     addr;
        mem_size_t       size;
    } virtual_lock;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        client_ptr_t     addr;
        mem_size_t       size;
    } virtual_unlock;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        client_ptr_t     addr;
        mem_size_t       size;
    } map_view;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
    } unmap_view;
    struct
    {
        enum apc_type    type;
        unsigned int     status;
        thread_id_t      tid;
        obj_handle_t     handle;
    } create_thread;
} apc_result_t;

typedef union
{
    unsigned int         major;
    struct
    {
        unsigned int     major;
        unsigned int     key;
        file_pos_t       pos;
    } read;
    struct
    {
        unsigned int     major;
        unsigned int     key;
        file_pos_t       pos;
    } write;
    struct
    {
        unsigned int     major;
        ioctl_code_t     code;
    } ioctl;
} irp_params_t;

struct rawinput_device
{
    unsigned short usage_page;
    unsigned short usage;
    unsigned int   flags;
    user_handle_t  target;
};





struct new_process_request
{
    struct request_header __header;
    int          inherit_all;
    unsigned int create_flags;
    int          socket_fd;
    obj_handle_t exe_file;
    unsigned int process_access;
    unsigned int process_attr;
    unsigned int thread_access;
    unsigned int thread_attr;
    cpu_type_t   cpu;
    data_size_t  info_size;
    /* VARARG(info,startup_info,info_size); */
    /* VARARG(env,unicode_str); */
    char __pad_52[4];
};
struct new_process_reply
{
    struct reply_header __header;
    obj_handle_t info;
    process_id_t pid;
    obj_handle_t phandle;
    thread_id_t  tid;
    obj_handle_t thandle;
    char __pad_28[4];
};



struct get_new_process_info_request
{
    struct request_header __header;
    obj_handle_t info;
};
struct get_new_process_info_reply
{
    struct reply_header __header;
    int          success;
    int          exit_code;
};



struct new_thread_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    int          suspend;
    int          request_fd;
    char __pad_28[4];
};
struct new_thread_reply
{
    struct reply_header __header;
    thread_id_t  tid;
    obj_handle_t handle;
};



struct get_startup_info_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct get_startup_info_reply
{
    struct reply_header __header;
    obj_handle_t exe_file;
    data_size_t  info_size;
    /* VARARG(info,startup_info,info_size); */
    /* VARARG(env,unicode_str); */
};



struct init_process_done_request
{
    struct request_header __header;
    int          gui;
    mod_handle_t module;
    client_ptr_t ldt_copy;
    client_ptr_t entry;
};
struct init_process_done_reply
{
    struct reply_header __header;
};



struct init_thread_request
{
    struct request_header __header;
    int          unix_pid;
    int          unix_tid;
    int          debug_level;
    client_ptr_t teb;
    client_ptr_t entry;
    int          reply_fd;
    int          wait_fd;
    cpu_type_t   cpu;
    char __pad_52[4];
};
struct init_thread_reply
{
    struct reply_header __header;
    process_id_t pid;
    thread_id_t  tid;
    timeout_t    server_start;
    data_size_t  info_size;
    int          version;
    unsigned int all_cpus;
    char __pad_36[4];
};



struct terminate_process_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          exit_code;
    char __pad_20[4];
};
struct terminate_process_reply
{
    struct reply_header __header;
    int          self;
    char __pad_12[4];
};



struct terminate_thread_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          exit_code;
    char __pad_20[4];
};
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;
    process_id_t ppid;
    affinity_t   affinity;
    client_ptr_t peb;
    timeout_t    start_time;
    timeout_t    end_time;
    int          exit_code;
    int          priority;
    cpu_type_t   cpu;
    int          debugger_present;
};



struct set_process_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          mask;
    int          priority;
    affinity_t   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;
    char __pad_20[4];
};
struct get_thread_info_reply
{
    struct reply_header __header;
    process_id_t pid;
    thread_id_t  tid;
    client_ptr_t teb;
    affinity_t   affinity;
    timeout_t    creation_time;
    timeout_t    exit_time;
    int          exit_code;
    int          priority;
    int          last;
    char __pad_60[4];
};



struct set_thread_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          mask;
    int          priority;
    affinity_t   affinity;
    obj_handle_t token;
    char __pad_36[4];
};
struct set_thread_info_reply
{
    struct reply_header __header;
};
#define SET_THREAD_INFO_PRIORITY 0x01
#define SET_THREAD_INFO_AFFINITY 0x02
#define SET_THREAD_INFO_TOKEN    0x04



struct get_dll_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    mod_handle_t base_address;
};
struct get_dll_info_reply
{
    struct reply_header __header;
    client_ptr_t entry_point;
    data_size_t  size;
    data_size_t  filename_len;
    /* VARARG(filename,unicode_str); */
};



struct suspend_thread_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct suspend_thread_reply
{
    struct reply_header __header;
    int          count;
    char __pad_12[4];
};



struct resume_thread_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct resume_thread_reply
{
    struct reply_header __header;
    int          count;
    char __pad_12[4];
};



struct load_dll_request
{
    struct request_header __header;
    obj_handle_t mapping;
    mod_handle_t base;
    client_ptr_t name;
    data_size_t  size;
    int          dbg_offset;
    int          dbg_size;
    /* VARARG(filename,unicode_str); */
    char __pad_44[4];
};
struct load_dll_reply
{
    struct reply_header __header;
};



struct unload_dll_request
{
    struct request_header __header;
    char __pad_12[4];
    mod_handle_t base;
};
struct unload_dll_reply
{
    struct reply_header __header;
};



struct queue_apc_request
{
    struct request_header __header;
    obj_handle_t handle;
    apc_call_t   call;
};
struct queue_apc_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    int          self;
};



struct get_apc_result_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_apc_result_reply
{
    struct reply_header __header;
    apc_result_t result;
};



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



struct set_handle_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          flags;
    int          mask;
};
struct set_handle_info_reply
{
    struct reply_header __header;
    int          old_flags;
    char __pad_12[4];
};



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;
    unsigned int attributes;
    unsigned int options;
    char __pad_36[4];
};
struct dup_handle_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    int          self;
    int          closed;
    char __pad_20[4];
};
#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;
    unsigned int attributes;
};
struct open_process_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct open_thread_request
{
    struct request_header __header;
    thread_id_t  tid;
    unsigned int access;
    unsigned int attributes;
};
struct open_thread_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct select_request
{
    struct request_header __header;
    int          flags;
    client_ptr_t cookie;
    timeout_t    timeout;
    obj_handle_t prev_apc;
    /* VARARG(result,apc_result); */
    /* VARARG(data,select_op); */
    char __pad_36[4];
};
struct select_reply
{
    struct reply_header __header;
    timeout_t    timeout;
    apc_call_t   call;
    obj_handle_t apc_handle;
    char __pad_60[4];
};
#define SELECT_ALERTABLE     1
#define SELECT_INTERRUPTIBLE 2



struct create_event_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    int          manual_reset;
    int          initial_state;
    /* VARARG(objattr,object_attributes); */
    char __pad_28[4];
};
struct create_event_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};


struct event_op_request
{
    struct request_header __header;
    obj_handle_t  handle;
    int           op;
    char __pad_20[4];
};
struct event_op_reply
{
    struct reply_header __header;
};
enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };

struct query_event_request
{
    struct request_header __header;
    obj_handle_t  handle;
};
struct query_event_reply
{
    struct reply_header __header;
    int          manual_reset;
    int          state;
};


struct open_event_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    /* VARARG(name,unicode_str); */
};
struct open_event_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct create_keyed_event_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    /* VARARG(objattr,object_attributes); */
    char __pad_20[4];
};
struct create_keyed_event_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};


struct open_keyed_event_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    /* VARARG(name,unicode_str); */
};
struct open_keyed_event_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct create_mutex_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    int          owned;
    /* VARARG(objattr,object_attributes); */
};
struct create_mutex_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct release_mutex_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct release_mutex_reply
{
    struct reply_header __header;
    unsigned int prev_count;
    char __pad_12[4];
};



struct open_mutex_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    /* VARARG(name,unicode_str); */
};
struct open_mutex_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct create_semaphore_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    unsigned int initial;
    unsigned int max;
    /* VARARG(objattr,object_attributes); */
    char __pad_28[4];
};
struct create_semaphore_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct release_semaphore_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int count;
    char __pad_20[4];
};
struct release_semaphore_reply
{
    struct reply_header __header;
    unsigned int prev_count;
    char __pad_12[4];
};

struct query_semaphore_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct query_semaphore_reply
{
    struct reply_header __header;
    unsigned int current;
    unsigned int max;
};


struct open_semaphore_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    /* VARARG(name,unicode_str); */
};
struct open_semaphore_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct create_file_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    unsigned int sharing;
    int          create;
    unsigned int options;
    unsigned int attrs;
    /* VARARG(objattr,object_attributes); */
    /* VARARG(filename,string); */
    char __pad_36[4];
};
struct create_file_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct open_file_object_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    unsigned int sharing;
    unsigned int options;
    /* VARARG(filename,unicode_str); */
};
struct open_file_object_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct alloc_file_handle_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    int          fd;
};
struct alloc_file_handle_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct get_handle_unix_name_request
{
    struct request_header __header;
    obj_handle_t   handle;
};
struct get_handle_unix_name_reply
{
    struct reply_header __header;
    data_size_t    name_len;
    /* VARARG(name,string); */
    char __pad_12[4];
};



struct get_handle_fd_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_handle_fd_reply
{
    struct reply_header __header;
    int          type;
    int          cacheable;
    unsigned int access;
    unsigned int options;
};
enum server_fd_type
{
    FD_TYPE_INVALID,
    FD_TYPE_FILE,
    FD_TYPE_DIR,
    FD_TYPE_SOCKET,
    FD_TYPE_SERIAL,
    FD_TYPE_PIPE,
    FD_TYPE_MAILSLOT,
    FD_TYPE_CHAR,
    FD_TYPE_DEVICE,
    FD_TYPE_NB_TYPES
};



struct flush_request
{
    struct request_header __header;
    int            blocking;
    async_data_t   async;
};
struct flush_reply
{
    struct reply_header __header;
    obj_handle_t event;
    char __pad_12[4];
};



struct lock_file_request
{
    struct request_header __header;
    obj_handle_t handle;
    file_pos_t   offset;
    file_pos_t   count;
    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;
    file_pos_t   offset;
    file_pos_t   count;
};
struct unlock_file_reply
{
    struct reply_header __header;
};



struct create_socket_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    int          family;
    int          type;
    int          protocol;
    unsigned int flags;
    char __pad_36[4];
};
struct create_socket_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct accept_socket_request
{
    struct request_header __header;
    obj_handle_t lhandle;
    unsigned int access;
    unsigned int attributes;
};
struct accept_socket_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct accept_into_socket_request
{
    struct request_header __header;
    obj_handle_t lhandle;
    obj_handle_t ahandle;
    char __pad_20[4];
};
struct accept_into_socket_reply
{
    struct reply_header __header;
};



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); */
    char __pad_20[4];
};



struct get_socket_info_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_socket_info_reply
{
    struct reply_header __header;
    int family;
    int type;
    int protocol;
    char __pad_20[4];
};



struct enable_socket_event_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int mask;
    unsigned int sstate;
    unsigned int cstate;
    char __pad_28[4];
};
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;
    char __pad_20[4];
};
struct set_socket_deferred_reply
{
    struct reply_header __header;
};


struct alloc_console_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    process_id_t pid;
    int          input_fd;
    char __pad_28[4];
};
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;
    char __pad_12[4];
};
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;
    obj_handle_t from;

    unsigned int access;
    unsigned int attributes;
    int          share;
    char __pad_28[4];
};
struct open_console_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct get_console_wait_event_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct get_console_wait_event_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};


struct get_console_mode_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_console_mode_reply
{
    struct reply_header __header;
    int          mode;
    char __pad_12[4];
};



struct set_console_mode_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          mode;
    char __pad_20[4];
};
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;
    int           input_cp;
    int           output_cp;
    user_handle_t win;
    /* 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
#define SET_CONSOLE_INPUT_INFO_INPUT_CODEPAGE   0x20
#define SET_CONSOLE_INPUT_INFO_OUTPUT_CODEPAGE  0x40
#define SET_CONSOLE_INPUT_INFO_WIN              0x80



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;
    int           input_cp;
    int           output_cp;
    user_handle_t win;
    /* VARARG(title,unicode_str); */
    char __pad_36[4];
};



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;
    char __pad_20[4];
};
struct get_console_input_history_reply
{
    struct reply_header __header;
    int          total;
    /* VARARG(line,unicode_str); */
    char __pad_12[4];
};



struct create_console_output_request
{
    struct request_header __header;
    obj_handle_t handle_in;
    unsigned int access;
    unsigned int attributes;
    unsigned int share;
    int          fd;
};
struct create_console_output_reply
{
    struct reply_header __header;
    obj_handle_t handle_out;
    char __pad_12[4];
};



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;
    char __pad_46[2];
};
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;
    char __pad_34[6];
};


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;
    char __pad_12[4];
};



struct read_console_input_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          flush;
    char __pad_20[4];
};
struct read_console_input_reply
{
    struct reply_header __header;
    int          read;
    /* VARARG(rec,input_records); */
    char __pad_12[4];
};



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;
    char __pad_20[4];
};
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;
    char __pad_12[4];
};



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;
    char __pad_28[4];
};
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;
    char __pad_20[4];
};
struct send_console_signal_reply
{
    struct reply_header __header;
};



struct read_directory_changes_request
{
    struct request_header __header;
    unsigned int filter;
    int          subtree;
    int          want_data;
    async_data_t async;
};
struct read_directory_changes_reply
{
    struct reply_header __header;
};


struct read_change_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct read_change_reply
{
    struct reply_header __header;
    /* VARARG(events,filesystem_event); */
};



struct create_mapping_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    unsigned int protect;
    mem_size_t   size;
    obj_handle_t file_handle;
    /* VARARG(objattr,object_attributes); */
    char __pad_36[4];
};
struct create_mapping_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};

#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_WRITEWATCH 0x80

#define VPROT_IMAGE      0x0100
#define VPROT_SYSTEM     0x0200
#define VPROT_VALLOC     0x0400
#define VPROT_NOEXEC     0x0800



struct open_mapping_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    /* VARARG(name,unicode_str); */
};
struct open_mapping_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct get_mapping_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int access;
    char __pad_20[4];
};
struct get_mapping_info_reply
{
    struct reply_header __header;
    mem_size_t   size;
    int          protect;
    int          header_size;
    client_ptr_t base;
    obj_handle_t mapping;
    obj_handle_t shared_file;
};



struct get_mapping_committed_range_request
{
    struct request_header __header;
    obj_handle_t handle;
    file_pos_t   offset;
};
struct get_mapping_committed_range_reply
{
    struct reply_header __header;
    mem_size_t   size;
    int          committed;
    char __pad_20[4];
};



struct add_mapping_committed_range_request
{
    struct request_header __header;
    obj_handle_t handle;
    file_pos_t   offset;
    mem_size_t   size;
};
struct add_mapping_committed_range_reply
{
    struct reply_header __header;
};


#define SNAP_PROCESS    0x00000001
#define SNAP_THREAD     0x00000002

struct create_snapshot_request
{
    struct request_header __header;
    unsigned int attributes;
    unsigned int flags;
    char __pad_20[4];
};
struct create_snapshot_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct next_process_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          reset;
    char __pad_20[4];
};
struct next_process_reply
{
    struct reply_header __header;
    int          count;
    process_id_t pid;
    process_id_t ppid;
    int          threads;
    int          priority;
    int          handles;
    int          unix_pid;
    /* VARARG(filename,unicode_str); */
    char __pad_36[4];
};



struct next_thread_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          reset;
    char __pad_20[4];
};
struct next_thread_reply
{
    struct reply_header __header;
    int          count;
    process_id_t pid;
    thread_id_t  tid;
    int          base_pri;
    int          delta_pri;
    char __pad_28[4];
};



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); */
    char __pad_20[4];
};



struct queue_exception_event_request
{
    struct request_header __header;
    int           first;
    unsigned int  code;
    unsigned int  flags;
    client_ptr_t  record;
    client_ptr_t  address;
    data_size_t   len;
    /* VARARG(params,uints64,len); */
    /* VARARG(context,context); */
    char __pad_44[4];
};
struct queue_exception_event_reply
{
    struct reply_header __header;
    obj_handle_t     handle;
    char __pad_12[4];
};



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



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;
    char __pad_20[4];
};
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;
    char __pad_12[4];
};



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;
    client_ptr_t 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;
    client_ptr_t addr;
    /* 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 attributes;
    unsigned int options;
    data_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;
    unsigned int attributes;
    /* VARARG(name,unicode_str); */
};
struct open_key_reply
{
    struct reply_header __header;
    obj_handle_t hkey;
    char __pad_12[4];
};



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



struct flush_key_request
{
    struct request_header __header;
    obj_handle_t hkey;
};
struct flush_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;
    timeout_t    modif;
    data_size_t  total;
    data_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;
    data_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;
    data_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;
    data_size_t  total;
    data_size_t  namelen;
    /* VARARG(name,unicode_str,namelen); */
    /* VARARG(data,bytes); */
    char __pad_20[4];
};



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); */
    char __pad_20[4];
};
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;
    char __pad_20[4];
};
struct save_registry_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;
    char __pad_28[4];
};
struct set_registry_notification_reply
{
    struct reply_header __header;
};



struct create_timer_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    int          manual;
    /* VARARG(name,unicode_str); */
    char __pad_28[4];
};
struct create_timer_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct open_timer_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    /* VARARG(name,unicode_str); */
};
struct open_timer_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};


struct set_timer_request
{
    struct request_header __header;
    obj_handle_t handle;
    timeout_t    expire;
    client_ptr_t callback;
    client_ptr_t arg;
    int          period;
    char __pad_44[4];
};
struct set_timer_reply
{
    struct reply_header __header;
    int          signaled;
    char __pad_12[4];
};


struct cancel_timer_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct cancel_timer_reply
{
    struct reply_header __header;
     int         signaled;
    char __pad_12[4];
};


struct get_timer_info_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_timer_info_reply
{
    struct reply_header __header;
    timeout_t    when;
    int          signaled;
    char __pad_20[4];
};



struct get_thread_context_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int flags;
    int          suspend;
};
struct get_thread_context_reply
{
    struct reply_header __header;
    int          self;
    /* VARARG(context,context); */
    char __pad_12[4];
};



struct set_thread_context_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          suspend;
    /* VARARG(context,context); */
    char __pad_20[4];
};
struct set_thread_context_reply
{
    struct reply_header __header;
    int          self;
    char __pad_12[4];
};



struct get_selector_entry_request
{
    struct request_header __header;
    obj_handle_t  handle;
    int           entry;
    char __pad_20[4];
};
struct get_selector_entry_reply
{
    struct reply_header __header;
    unsigned int  base;
    unsigned int  limit;
    unsigned char flags;
    char __pad_17[7];
};



struct add_atom_request
{
    struct request_header __header;
    obj_handle_t  table;
    /* VARARG(name,unicode_str); */
};
struct add_atom_reply
{
    struct reply_header __header;
    atom_t        atom;
    char __pad_12[4];
};



struct delete_atom_request
{
    struct request_header __header;
    obj_handle_t  table;
    atom_t        atom;
    char __pad_20[4];
};
struct delete_atom_reply
{
    struct reply_header __header;
};



struct find_atom_request
{
    struct request_header __header;
    obj_handle_t table;
    /* VARARG(name,unicode_str); */
};
struct find_atom_reply
{
    struct reply_header __header;
    atom_t       atom;
    char __pad_12[4];
};



struct get_atom_information_request
{
    struct request_header __header;
    obj_handle_t table;
    atom_t       atom;
    char __pad_20[4];
};
struct get_atom_information_reply
{
    struct reply_header __header;
    int          count;
    int          pinned;
    data_size_t  total;
    /* VARARG(name,unicode_str); */
    char __pad_20[4];
};



struct set_atom_information_request
{
    struct request_header __header;
    obj_handle_t table;
    atom_t       atom;
    int          pinned;
};
struct set_atom_information_reply
{
    struct reply_header __header;
};



struct empty_atom_table_request
{
    struct request_header __header;
    obj_handle_t table;
    int          if_pinned;
    char __pad_20[4];
};
struct empty_atom_table_reply
{
    struct reply_header __header;
};



struct init_atom_table_request
{
    struct request_header __header;
    int          entries;
};
struct init_atom_table_reply
{
    struct reply_header __header;
    obj_handle_t table;
    char __pad_12[4];
};



struct get_msg_queue_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct get_msg_queue_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct set_queue_fd_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct set_queue_fd_reply
{
    struct reply_header __header;
};



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;
    unsigned int clear_bits;
};
struct get_queue_status_reply
{
    struct reply_header __header;
    unsigned int wake_bits;
    unsigned int changed_bits;
};



struct get_process_idle_event_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_process_idle_event_reply
{
    struct reply_header __header;
    obj_handle_t event;
    char __pad_12[4];
};



struct send_message_request
{
    struct request_header __header;
    thread_id_t     id;
    int             type;
    int             flags;
    user_handle_t   win;
    unsigned int    msg;
    lparam_t        wparam;
    lparam_t        lparam;
    timeout_t       timeout;
    /* VARARG(data,message_data); */
};
struct send_message_reply
{
    struct reply_header __header;
};

struct post_quit_message_request
{
    struct request_header __header;
    int             exit_code;
};
struct post_quit_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,
    MSG_WINEVENT,
    MSG_HOOK_LL
};
#define SEND_MSG_ABORT_IF_HUNG  0x01



struct send_hardware_message_request
{
    struct request_header __header;
    user_handle_t   win;
    hw_input_t      input;
    unsigned int    flags;
    char __pad_52[4];
};
struct send_hardware_message_reply
{
    struct reply_header __header;
    int             wait;
    int             prev_x;
    int             prev_y;
    int             new_x;
    int             new_y;
    /* VARARG(keystate,bytes); */
    char __pad_28[4];
};
#define SEND_HWMSG_INJECTED    0x01



struct get_message_request
{
    struct request_header __header;
    unsigned int    flags;
    user_handle_t   get_win;
    unsigned int    get_first;
    unsigned int    get_last;
    unsigned int    hw_id;
    unsigned int    wake_mask;
    unsigned int    changed_mask;
};
struct get_message_reply
{
    struct reply_header __header;
    user_handle_t   win;
    unsigned int    msg;
    lparam_t        wparam;
    lparam_t        lparam;
    int             type;
    int             x;
    int             y;
    unsigned int    time;
    unsigned int    active_hooks;
    data_size_t     total;
    /* VARARG(data,message_data); */
};



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



struct accept_hardware_message_request
{
    struct request_header __header;
    unsigned int    hw_id;
    int             remove;
    char __pad_20[4];
};
struct accept_hardware_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;
    lparam_t        result;
    /* VARARG(data,bytes); */
};



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



struct kill_win_timer_request
{
    struct request_header __header;
    user_handle_t   win;
    lparam_t        id;
    unsigned int    msg;
    char __pad_28[4];
};
struct kill_win_timer_reply
{
    struct reply_header __header;
};



struct is_window_hung_request
{
    struct request_header __header;
    user_handle_t   win;
};
struct is_window_hung_reply
{
    struct reply_header __header;
    int is_hung;
    char __pad_12[4];
};



struct get_serial_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          flags;
    char __pad_20[4];
};
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 cookie;
    unsigned int pending_write;
};



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;
    char __pad_44[4];
};
struct set_serial_info_reply
{
    struct reply_header __header;
};
#define SERIALINFO_SET_TIMEOUTS  0x01
#define SERIALINFO_SET_MASK      0x02
#define SERIALINFO_PENDING_WRITE 0x04
#define SERIALINFO_PENDING_WAIT  0x08



struct register_async_request
{
    struct request_header __header;
    int          type;
    async_data_t async;
    int          count;
    char __pad_60[4];
};
struct register_async_reply
{
    struct reply_header __header;
};
#define ASYNC_TYPE_READ  0x01
#define ASYNC_TYPE_WRITE 0x02
#define ASYNC_TYPE_WAIT  0x03



struct cancel_async_request
{
    struct request_header __header;
    obj_handle_t handle;
    client_ptr_t iosb;
    int          only_thread;
    char __pad_28[4];
};
struct cancel_async_reply
{
    struct reply_header __header;
};



struct read_request
{
    struct request_header __header;
    int            blocking;
    async_data_t   async;
    file_pos_t     pos;
};
struct read_reply
{
    struct reply_header __header;
    obj_handle_t   wait;
    unsigned int   options;
    /* VARARG(data,bytes); */
};



struct write_request
{
    struct request_header __header;
    int            blocking;
    async_data_t   async;
    file_pos_t     pos;
    /* VARARG(data,bytes); */
};
struct write_reply
{
    struct reply_header __header;
    obj_handle_t   wait;
    unsigned int   options;
    data_size_t    size;
    char __pad_20[4];
};



struct ioctl_request
{
    struct request_header __header;
    ioctl_code_t   code;
    async_data_t   async;
    int            blocking;
    /* VARARG(in_data,bytes); */
    char __pad_60[4];
};
struct ioctl_reply
{
    struct reply_header __header;
    obj_handle_t   wait;
    unsigned int   options;
    /* VARARG(out_data,bytes); */
};



struct set_irp_result_request
{
    struct request_header __header;
    obj_handle_t manager;
    obj_handle_t handle;
    unsigned int status;
    data_size_t  size;
    /* VARARG(data,bytes); */
    char __pad_28[4];
};
struct set_irp_result_reply
{
    struct reply_header __header;
};



struct get_irp_result_request
{
    struct request_header __header;
    obj_handle_t   handle;
    client_ptr_t   user_arg;
};
struct get_irp_result_reply
{
    struct reply_header __header;
    data_size_t    size;
    /* VARARG(out_data,bytes); */
    char __pad_12[4];
};



struct create_named_pipe_request
{
    struct request_header __header;
    unsigned int   access;
    unsigned int   attributes;
    unsigned int   options;
    unsigned int   sharing;
    unsigned int   maxinstances;
    unsigned int   outsize;
    unsigned int   insize;
    timeout_t      timeout;
    unsigned int   flags;
    /* VARARG(objattr,object_attributes); */
    char __pad_52[4];
};
struct create_named_pipe_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
    char __pad_12[4];
};


#define NAMED_PIPE_MESSAGE_STREAM_WRITE 0x0001
#define NAMED_PIPE_MESSAGE_STREAM_READ  0x0002
#define NAMED_PIPE_NONBLOCKING_MODE     0x0004
#define NAMED_PIPE_SERVER_END           0x8000


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   sharing;
    unsigned int   maxinstances;
    unsigned int   instances;
    unsigned int   outsize;
    unsigned int   insize;
};


struct set_named_pipe_info_request
{
    struct request_header __header;
    obj_handle_t   handle;
    unsigned int   flags;
    char __pad_20[4];
};
struct set_named_pipe_info_reply
{
    struct reply_header __header;
};


struct create_window_request
{
    struct request_header __header;
    user_handle_t  parent;
    user_handle_t  owner;
    atom_t         atom;
    mod_handle_t   instance;
    /* VARARG(class,unicode_str); */
};
struct create_window_reply
{
    struct reply_header __header;
    user_handle_t  handle;
    user_handle_t  parent;
    user_handle_t  owner;
    int            extra;
    client_ptr_t   class_ptr;
};



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



struct get_desktop_window_request
{
    struct request_header __header;
    int            force;
};
struct get_desktop_window_reply
{
    struct reply_header __header;
    user_handle_t  top_window;
    user_handle_t  msg_window;
};



struct set_window_owner_request
{
    struct request_header __header;
    user_handle_t  handle;
    user_handle_t  owner;
    char __pad_20[4];
};
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;
    int            is_unicode;
};



struct set_window_info_request
{
    struct request_header __header;
    unsigned short flags;
    short int      is_unicode;
    user_handle_t  handle;
    unsigned int   style;
    unsigned int   ex_style;
    unsigned int   id;
    mod_handle_t   instance;
    lparam_t       user_data;
    int            extra_offset;
    data_size_t    extra_size;
    lparam_t       extra_value;
};
struct set_window_info_reply
{
    struct reply_header __header;
    unsigned int   old_style;
    unsigned int   old_ex_style;
    mod_handle_t   old_instance;
    lparam_t       old_user_data;
    lparam_t       old_extra_value;
    unsigned int   old_id;
    char __pad_44[4];
};
#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
#define SET_WIN_EXTRA     0x20
#define SET_WIN_UNICODE   0x40



struct set_parent_request
{
    struct request_header __header;
    user_handle_t  handle;
    user_handle_t  parent;
    char __pad_20[4];
};
struct set_parent_reply
{
    struct reply_header __header;
    user_handle_t  old_parent;
    user_handle_t  full_parent;
};



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); */
    char __pad_12[4];
};



struct get_window_children_request
{
    struct request_header __header;
    obj_handle_t   desktop;
    user_handle_t  parent;
    atom_t         atom;
    thread_id_t    tid;
    /* VARARG(class,unicode_str); */
    char __pad_28[4];
};
struct get_window_children_reply
{
    struct reply_header __header;
    int            count;
    /* VARARG(children,user_handles); */
    char __pad_12[4];
};



struct get_window_children_from_point_request
{
    struct request_header __header;
    user_handle_t  parent;
    int            x;
    int            y;
};
struct get_window_children_from_point_reply
{
    struct reply_header __header;
    int            count;
    /* VARARG(children,user_handles); */
    char __pad_12[4];
};



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_pos_request
{
    struct request_header __header;
    unsigned short swp_flags;
    unsigned short paint_flags;
    user_handle_t  handle;
    user_handle_t  previous;
    rectangle_t    window;
    rectangle_t    client;
    /* VARARG(valid,rectangles); */
};
struct set_window_pos_reply
{
    struct reply_header __header;
    unsigned int   new_style;
    unsigned int   new_ex_style;
    user_handle_t  surface_win;
    char __pad_20[4];
};
#define SET_WINPOS_PAINT_SURFACE 0x01
#define SET_WINPOS_PIXEL_FORMAT  0x02


struct get_window_rectangles_request
{
    struct request_header __header;
    user_handle_t  handle;
    int            relative;
    char __pad_20[4];
};
struct get_window_rectangles_reply
{
    struct reply_header __header;
    rectangle_t    window;
    rectangle_t    visible;
    rectangle_t    client;
};
enum coords_relative
{
    COORDS_CLIENT,
    COORDS_WINDOW,
    COORDS_PARENT,
    COORDS_SCREEN
};



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 get_windows_offset_request
{
    struct request_header __header;
    user_handle_t  from;
    user_handle_t  to;
    char __pad_20[4];
};
struct get_windows_offset_reply
{
    struct reply_header __header;
    int            x;
    int            y;
    int            mirror;
    char __pad_20[4];
};



struct get_visible_region_request
{
    struct request_header __header;
    user_handle_t  window;
    unsigned int   flags;
    char __pad_20[4];
};
struct get_visible_region_reply
{
    struct reply_header __header;
    user_handle_t  top_win;
    rectangle_t    top_rect;
    rectangle_t    win_rect;
    unsigned int   paint_flags;
    data_size_t    total_size;
    /* VARARG(region,rectangles); */
    char __pad_52[4];
};



struct get_surface_region_request
{
    struct request_header __header;
    user_handle_t  window;
};
struct get_surface_region_reply
{
    struct reply_header __header;
    rectangle_t    visible_rect;
    data_size_t    total_size;
    /* VARARG(region,rectangles); */
    char __pad_28[4];
};



struct get_window_region_request
{
    struct request_header __header;
    user_handle_t  window;
};
struct get_window_region_reply
{
    struct reply_header __header;
    data_size_t    total_size;
    /* VARARG(region,rectangles); */
    char __pad_12[4];
};



struct set_window_region_request
{
    struct request_header __header;
    user_handle_t  window;
    int            redraw;
    /* VARARG(region,rectangles); */
    char __pad_20[4];
};
struct set_window_region_reply
{
    struct reply_header __header;
};



struct get_update_region_request
{
    struct request_header __header;
    user_handle_t  window;
    user_handle_t  from_child;
    unsigned int   flags;
};
struct get_update_region_reply
{
    struct reply_header __header;
    user_handle_t  child;
    unsigned int   flags;
    data_size_t    total_size;
    /* VARARG(region,rectangles); */
    char __pad_20[4];
};
#define UPDATE_NONCLIENT       0x01
#define UPDATE_ERASE           0x02
#define UPDATE_PAINT           0x04
#define UPDATE_INTERNALPAINT   0x08
#define UPDATE_ALLCHILDREN     0x10
#define UPDATE_NOCHILDREN      0x20
#define UPDATE_NOREGION        0x40
#define UPDATE_DELAYED_ERASE   0x80



struct update_window_zorder_request
{
    struct request_header __header;
    user_handle_t  window;
    rectangle_t    rect;
};
struct update_window_zorder_reply
{
    struct reply_header __header;
};



struct redraw_window_request
{
    struct request_header __header;
    user_handle_t  window;
    unsigned int   flags;
    /* VARARG(region,rectangles); */
    char __pad_20[4];
};
struct redraw_window_reply
{
    struct reply_header __header;
};



struct set_window_property_request
{
    struct request_header __header;
    user_handle_t  window;
    lparam_t       data;
    atom_t         atom;
    /* VARARG(name,unicode_str); */
    char __pad_28[4];
};
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;
    /* VARARG(name,unicode_str); */
    char __pad_20[4];
};
struct remove_window_property_reply
{
    struct reply_header __header;
    lparam_t       data;
};



struct get_window_property_request
{
    struct request_header __header;
    user_handle_t  window;
    atom_t         atom;
    /* VARARG(name,unicode_str); */
    char __pad_20[4];
};
struct get_window_property_reply
{
    struct reply_header __header;
    lparam_t       data;
};



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); */
    char __pad_12[4];
};



struct create_winstation_request
{
    struct request_header __header;
    unsigned int flags;
    unsigned int access;
    unsigned int attributes;
    /* VARARG(name,unicode_str); */
};
struct create_winstation_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct open_winstation_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    /* VARARG(name,unicode_str); */
    char __pad_20[4];
};
struct open_winstation_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct close_winstation_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct close_winstation_reply
{
    struct reply_header __header;
};



struct get_process_winstation_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct get_process_winstation_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct set_process_winstation_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct set_process_winstation_reply
{
    struct reply_header __header;
};



struct enum_winstation_request
{
    struct request_header __header;
    unsigned int index;
};
struct enum_winstation_reply
{
    struct reply_header __header;
    unsigned int next;
    /* VARARG(name,unicode_str); */
    char __pad_12[4];
};



struct create_desktop_request
{
    struct request_header __header;
    unsigned int flags;
    unsigned int access;
    unsigned int attributes;
    /* VARARG(name,unicode_str); */
};
struct create_desktop_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct open_desktop_request
{
    struct request_header __header;
    obj_handle_t winsta;
    unsigned int flags;
    unsigned int access;
    unsigned int attributes;
    /* VARARG(name,unicode_str); */
    char __pad_28[4];
};
struct open_desktop_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct open_input_desktop_request
{
    struct request_header __header;
    unsigned int flags;
    unsigned int access;
    unsigned int attributes;
};
struct open_input_desktop_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct close_desktop_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct close_desktop_reply
{
    struct reply_header __header;
};



struct get_thread_desktop_request
{
    struct request_header __header;
    thread_id_t  tid;
};
struct get_thread_desktop_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct set_thread_desktop_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct set_thread_desktop_reply
{
    struct reply_header __header;
};



struct enum_desktop_request
{
    struct request_header __header;
    obj_handle_t winstation;
    unsigned int index;
    char __pad_20[4];
};
struct enum_desktop_reply
{
    struct reply_header __header;
    unsigned int next;
    /* VARARG(name,unicode_str); */
    char __pad_12[4];
};



struct set_user_object_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int flags;
    unsigned int obj_flags;
};
struct set_user_object_info_reply
{
    struct reply_header __header;
    int          is_desktop;
    unsigned int old_obj_flags;
    /* VARARG(name,unicode_str); */
};
#define SET_USER_OBJECT_FLAGS 1



struct register_hotkey_request
{
    struct request_header __header;
    user_handle_t  window;
    int            id;
    unsigned int   flags;
    unsigned int   vkey;
    char __pad_28[4];
};
struct register_hotkey_reply
{
    struct reply_header __header;
    int            replaced;
    unsigned int   flags;
    unsigned int   vkey;
    char __pad_20[4];
};



struct unregister_hotkey_request
{
    struct request_header __header;
    user_handle_t  window;
    int            id;
    char __pad_20[4];
};
struct unregister_hotkey_reply
{
    struct reply_header __header;
    unsigned int   flags;
    unsigned int   vkey;
};



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;
    user_handle_t  cursor;
    int            show_count;
    rectangle_t    rect;
    char __pad_60[4];
};



struct get_last_input_time_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct get_last_input_time_reply
{
    struct reply_header __header;
    unsigned int time;
    char __pad_12[4];
};



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


struct set_key_state_request
{
    struct request_header __header;
    thread_id_t    tid;
    int            async;
    /* VARARG(keystate,bytes); */
    char __pad_20[4];
};
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;
    char __pad_20[4];
};


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;
    char __pad_12[4];
};


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;
    char __pad_12[4];
};


struct set_capture_window_request
{
    struct request_header __header;
    user_handle_t  handle;
    unsigned int   flags;
    char __pad_20[4];
};
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;
    char __pad_36[4];
};



struct set_caret_info_request
{
    struct request_header __header;
    unsigned int   flags;
    user_handle_t  handle;
    int            x;
    int            y;
    int            hide;
    int            state;
    char __pad_36[4];
};
struct set_caret_info_reply
{
    struct reply_header __header;
    user_handle_t  full_handle;
    rectangle_t    old_rect;
    int            old_hide;
    int            old_state;
    char __pad_36[4];
};
#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;
    process_id_t   pid;
    thread_id_t    tid;
    int            event_min;
    int            event_max;
    client_ptr_t   proc;
    int            flags;
    int            unicode;
    /* VARARG(module,unicode_str); */
};
struct set_hook_reply
{
    struct reply_header __header;
    user_handle_t  handle;
    unsigned int   active_hooks;
};



struct remove_hook_request
{
    struct request_header __header;
    user_handle_t  handle;
    client_ptr_t   proc;
    int            id;
    char __pad_28[4];
};
struct remove_hook_reply
{
    struct reply_header __header;
    unsigned int   active_hooks;
    char __pad_12[4];
};



struct start_hook_chain_request
{
    struct request_header __header;
    int            id;
    int            event;
    user_handle_t  window;
    int            object_id;
    int            child_id;
};
struct start_hook_chain_reply
{
    struct reply_header __header;
    user_handle_t  handle;
    process_id_t   pid;
    thread_id_t    tid;
    int            unicode;
    client_ptr_t   proc;
    unsigned int   active_hooks;
    /* VARARG(module,unicode_str); */
    char __pad_36[4];
};



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



struct get_hook_info_request
{
    struct request_header __header;
    user_handle_t  handle;
    int            get_next;
    int            event;
    user_handle_t  window;
    int            object_id;
    int            child_id;
    char __pad_36[4];
};
struct get_hook_info_reply
{
    struct reply_header __header;
    user_handle_t  handle;
    int            id;
    process_id_t   pid;
    thread_id_t    tid;
    client_ptr_t   proc;
    int            unicode;
    /* VARARG(module,unicode_str); */
    char __pad_36[4];
};



struct create_class_request
{
    struct request_header __header;
    int            local;
    atom_t         atom;
    unsigned int   style;
    mod_handle_t   instance;
    int            extra;
    int            win_extra;
    client_ptr_t   client_ptr;
    /* VARARG(name,unicode_str); */
};
struct create_class_reply
{
    struct reply_header __header;
    atom_t         atom;
    char __pad_12[4];
};



struct destroy_class_request
{
    struct request_header __header;
    atom_t         atom;
    mod_handle_t   instance;
    /* VARARG(name,unicode_str); */
};
struct destroy_class_reply
{
    struct reply_header __header;
    client_ptr_t   client_ptr;
};



struct set_class_info_request
{
    struct request_header __header;
    user_handle_t  window;
    unsigned int   flags;
    atom_t         atom;
    unsigned int   style;
    int            win_extra;
    mod_handle_t   instance;
    int            extra_offset;
    data_size_t    extra_size;
    lparam_t       extra_value;
};
struct set_class_info_reply
{
    struct reply_header __header;
    atom_t         old_atom;
    unsigned int   old_style;
    int            old_extra;
    int            old_win_extra;
    mod_handle_t   old_instance;
    lparam_t       old_extra_value;
};
#define SET_CLASS_ATOM      0x0001
#define SET_CLASS_STYLE     0x0002
#define SET_CLASS_WINEXTRA  0x0004
#define SET_CLASS_INSTANCE  0x0008
#define SET_CLASS_EXTRA     0x0010



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;
    char __pad_28[4];
};

#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
#define CB_PROCESS       0x100



struct open_token_request
{
    struct request_header __header;
    obj_handle_t   handle;
    unsigned int   access;
    unsigned int   attributes;
    unsigned int   flags;
    char __pad_28[4];
};
struct open_token_reply
{
    struct reply_header __header;
    obj_handle_t   token;
    char __pad_12[4];
};
#define OPEN_TOKEN_THREAD   1
#define OPEN_TOKEN_AS_SELF  2



struct set_global_windows_request
{
    struct request_header __header;
    unsigned int   flags;
    user_handle_t  shell_window;
    user_handle_t  shell_listview;
    user_handle_t  progman_window;
    user_handle_t  taskman_window;
};
struct set_global_windows_reply
{
    struct reply_header __header;
    user_handle_t  old_shell_window;
    user_handle_t  old_shell_listview;
    user_handle_t  old_progman_window;
    user_handle_t  old_taskman_window;
};
#define SET_GLOBAL_SHELL_WINDOWS   0x01
#define SET_GLOBAL_PROGMAN_WINDOW  0x02
#define SET_GLOBAL_TASKMAN_WINDOW  0x04


struct adjust_token_privileges_request
{
    struct request_header __header;
    obj_handle_t  handle;
    int           disable_all;
    int           get_modified_state;
    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
};
struct adjust_token_privileges_reply
{
    struct reply_header __header;
    unsigned int  len;
    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
    char __pad_12[4];
};


struct get_token_privileges_request
{
    struct request_header __header;
    obj_handle_t  handle;
};
struct get_token_privileges_reply
{
    struct reply_header __header;
    unsigned int  len;
    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
    char __pad_12[4];
};


struct check_token_privileges_request
{
    struct request_header __header;
    obj_handle_t  handle;
    int           all_required;
    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
    char __pad_20[4];
};
struct check_token_privileges_reply
{
    struct reply_header __header;
    int           has_privileges;
    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
    char __pad_12[4];
};

struct duplicate_token_request
{
    struct request_header __header;
    obj_handle_t  handle;
    unsigned int  access;
    unsigned int  attributes;
    int           primary;
    int           impersonation_level;
};
struct duplicate_token_reply
{
    struct reply_header __header;
    obj_handle_t  new_handle;
    char __pad_12[4];
};

struct access_check_request
{
    struct request_header __header;
    obj_handle_t    handle;
    unsigned int    desired_access;
    unsigned int    mapping_read;
    unsigned int    mapping_write;
    unsigned int    mapping_execute;
    unsigned int    mapping_all;
    /* VARARG(sd,security_descriptor); */
    char __pad_36[4];
};
struct access_check_reply
{
    struct reply_header __header;
    unsigned int    access_granted;
    unsigned int    access_status;
    unsigned int    privileges_len;
    /* VARARG(privileges,LUID_AND_ATTRIBUTES); */
    char __pad_20[4];
};

struct get_token_sid_request
{
    struct request_header __header;
    obj_handle_t    handle;
    unsigned int    which_sid;
    char __pad_20[4];
};
struct get_token_sid_reply
{
    struct reply_header __header;
    data_size_t     sid_len;
    /* VARARG(sid,SID); */
    char __pad_12[4];
};

struct get_token_groups_request
{
    struct request_header __header;
    obj_handle_t    handle;
};
struct get_token_groups_reply
{
    struct reply_header __header;
    data_size_t     user_len;
    /* VARARG(user,token_groups); */
    char __pad_12[4];
};

struct get_token_default_dacl_request
{
    struct request_header __header;
    obj_handle_t    handle;
};
struct get_token_default_dacl_reply
{
    struct reply_header __header;
    data_size_t     acl_len;
    /* VARARG(acl,ACL); */
    char __pad_12[4];
};

struct set_token_default_dacl_request
{
    struct request_header __header;
    obj_handle_t    handle;
    /* VARARG(acl,ACL); */
};
struct set_token_default_dacl_reply
{
    struct reply_header __header;
};

struct set_security_object_request
{
    struct request_header __header;
    obj_handle_t    handle;
    unsigned int    security_info;
    /* VARARG(sd,security_descriptor); */
    char __pad_20[4];
};
struct set_security_object_reply
{
    struct reply_header __header;
};

struct get_security_object_request
{
    struct request_header __header;
    obj_handle_t    handle;
    unsigned int    security_info;
    char __pad_20[4];
};
struct get_security_object_reply
{
    struct reply_header __header;
    unsigned int    sd_len;
    /* VARARG(sd,security_descriptor); */
    char __pad_12[4];
};


struct create_mailslot_request
{
    struct request_header __header;
    unsigned int   access;
    unsigned int   attributes;
    obj_handle_t   rootdir;
    timeout_t      read_timeout;
    unsigned int   max_msgsize;
    /* VARARG(name,unicode_str); */
    char __pad_36[4];
};
struct create_mailslot_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
    char __pad_12[4];
};



struct set_mailslot_info_request
{
    struct request_header __header;
    obj_handle_t   handle;
    timeout_t      read_timeout;
    unsigned int   flags;
    char __pad_28[4];
};
struct set_mailslot_info_reply
{
    struct reply_header __header;
    timeout_t      read_timeout;
    unsigned int   max_msgsize;
    char __pad_20[4];
};
#define MAILSLOT_SET_READ_TIMEOUT  1



struct create_directory_request
{
    struct request_header __header;
    unsigned int   access;
    unsigned int   attributes;
    obj_handle_t   rootdir;
    /* VARARG(directory_name,unicode_str); */
};
struct create_directory_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
    char __pad_12[4];
};



struct open_directory_request
{
    struct request_header __header;
    unsigned int   access;
    unsigned int   attributes;
    obj_handle_t   rootdir;
    /* VARARG(directory_name,unicode_str); */
};
struct open_directory_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
    char __pad_12[4];
};



struct get_directory_entry_request
{
    struct request_header __header;
    obj_handle_t   handle;
    unsigned int   index;
    char __pad_20[4];
};
struct get_directory_entry_reply
{
    struct reply_header __header;
    data_size_t    name_len;
    /* VARARG(name,unicode_str,name_len); */
    /* VARARG(type,unicode_str); */
    char __pad_12[4];
};



struct create_symlink_request
{
    struct request_header __header;
    unsigned int   access;
    unsigned int   attributes;
    obj_handle_t   rootdir;
    data_size_t    name_len;
    /* VARARG(name,unicode_str,name_len); */
    /* VARARG(target_name,unicode_str); */
    char __pad_28[4];
};
struct create_symlink_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
    char __pad_12[4];
};



struct open_symlink_request
{
    struct request_header __header;
    unsigned int   access;
    unsigned int   attributes;
    obj_handle_t   rootdir;
    /* VARARG(name,unicode_str); */
};
struct open_symlink_reply
{
    struct reply_header __header;
    obj_handle_t   handle;
    char __pad_12[4];
};



struct query_symlink_request
{
    struct request_header __header;
    obj_handle_t   handle;
};
struct query_symlink_reply
{
    struct reply_header __header;
    data_size_t    total;
    /* VARARG(target_name,unicode_str); */
    char __pad_12[4];
};



struct get_object_info_request
{
    struct request_header __header;
    obj_handle_t   handle;
};
struct get_object_info_reply
{
    struct reply_header __header;
    unsigned int   access;
    unsigned int   ref_count;
    unsigned int   handle_count;
    data_size_t    total;
    /* VARARG(name,unicode_str); */
};



struct unlink_object_request
{
    struct request_header __header;
    obj_handle_t   handle;
};
struct unlink_object_reply
{
    struct reply_header __header;
};



struct get_token_impersonation_level_request
{
    struct request_header __header;
    obj_handle_t   handle;
};
struct get_token_impersonation_level_reply
{
    struct reply_header __header;
    int            impersonation_level;
    char __pad_12[4];
};


struct allocate_locally_unique_id_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct allocate_locally_unique_id_reply
{
    struct reply_header __header;
    luid_t         luid;
};



struct create_device_manager_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    char __pad_20[4];
};
struct create_device_manager_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct create_device_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    client_ptr_t user_ptr;
    obj_handle_t manager;
    /* VARARG(name,unicode_str); */
    char __pad_36[4];
};
struct create_device_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct delete_device_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct delete_device_reply
{
    struct reply_header __header;
};



struct get_next_device_request_request
{
    struct request_header __header;
    obj_handle_t manager;
    obj_handle_t prev;
    unsigned int status;
};
struct get_next_device_request_reply
{
    struct reply_header __header;
    client_ptr_t user_ptr;
    irp_params_t params;
    obj_handle_t next;
    process_id_t client_pid;
    thread_id_t  client_tid;
    data_size_t  in_size;
    data_size_t  out_size;
    /* VARARG(next_data,bytes); */
    char __pad_52[4];
};



struct make_process_system_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct make_process_system_reply
{
    struct reply_header __header;
    obj_handle_t event;
    char __pad_12[4];
};



struct get_token_statistics_request
{
    struct request_header __header;
    obj_handle_t   handle;
};
struct get_token_statistics_reply
{
    struct reply_header __header;
    luid_t         token_id;
    luid_t         modified_id;
    int            primary;
    int            impersonation_level;
    int            group_count;
    int            privilege_count;
};



struct create_completion_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    unsigned int concurrent;
    obj_handle_t rootdir;
    /* VARARG(filename,unicode_str); */
    char __pad_28[4];
};
struct create_completion_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct open_completion_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    /* VARARG(filename,unicode_str); */
};
struct open_completion_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct add_completion_request
{
    struct request_header __header;
    obj_handle_t  handle;
    apc_param_t   ckey;
    apc_param_t   cvalue;
    apc_param_t   information;
    unsigned int  status;
    char __pad_44[4];
};
struct add_completion_reply
{
    struct reply_header __header;
};



struct remove_completion_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct remove_completion_reply
{
    struct reply_header __header;
    apc_param_t   ckey;
    apc_param_t   cvalue;
    apc_param_t   information;
    unsigned int  status;
    char __pad_36[4];
};



struct query_completion_request
{
    struct request_header __header;
    obj_handle_t  handle;
};
struct query_completion_reply
{
    struct reply_header __header;
    unsigned int  depth;
    char __pad_12[4];
};



struct set_completion_info_request
{
    struct request_header __header;
    obj_handle_t  handle;
    apc_param_t   ckey;
    obj_handle_t  chandle;
    char __pad_28[4];
};
struct set_completion_info_reply
{
    struct reply_header __header;
};



struct add_fd_completion_request
{
    struct request_header __header;
    obj_handle_t   handle;
    apc_param_t    cvalue;
    apc_param_t    information;
    unsigned int   status;
    char __pad_36[4];
};
struct add_fd_completion_reply
{
    struct reply_header __header;
};



struct get_window_layered_info_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct get_window_layered_info_reply
{
    struct reply_header __header;
    unsigned int   color_key;
    unsigned int   alpha;
    unsigned int   flags;
    char __pad_20[4];
};



struct set_window_layered_info_request
{
    struct request_header __header;
    user_handle_t  handle;
    unsigned int   color_key;
    unsigned int   alpha;
    unsigned int   flags;
    char __pad_28[4];
};
struct set_window_layered_info_reply
{
    struct reply_header __header;
};



struct alloc_user_handle_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct alloc_user_handle_reply
{
    struct reply_header __header;
    user_handle_t  handle;
    char __pad_12[4];
};



struct free_user_handle_request
{
    struct request_header __header;
    user_handle_t  handle;
};
struct free_user_handle_reply
{
    struct reply_header __header;
};



struct set_cursor_request
{
    struct request_header __header;
    unsigned int   flags;
    user_handle_t  handle;
    int            show_count;
    int            x;
    int            y;
    rectangle_t    clip;
    unsigned int   clip_msg;
    char __pad_52[4];
};
struct set_cursor_reply
{
    struct reply_header __header;
    user_handle_t  prev_handle;
    int            prev_count;
    int            prev_x;
    int            prev_y;
    int            new_x;
    int            new_y;
    rectangle_t    new_clip;
    unsigned int   last_change;
    char __pad_52[4];
};
#define SET_CURSOR_HANDLE 0x01
#define SET_CURSOR_COUNT  0x02
#define SET_CURSOR_POS    0x04
#define SET_CURSOR_CLIP   0x08
#define SET_CURSOR_NOCLIP 0x10



struct update_rawinput_devices_request
{
    struct request_header __header;
    /* VARARG(devices,rawinput_devices); */
    char __pad_12[4];
};
struct update_rawinput_devices_reply
{
    struct reply_header __header;
};



struct get_suspend_context_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct get_suspend_context_reply
{
    struct reply_header __header;
    /* VARARG(context,context); */
};



struct set_suspend_context_request
{
    struct request_header __header;
    /* VARARG(context,context); */
    char __pad_12[4];
};
struct set_suspend_context_reply
{
    struct reply_header __header;
};



struct create_job_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    /* VARARG(objattr,object_attributes); */
    char __pad_20[4];
};
struct create_job_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct assign_job_request
{
    struct request_header __header;
    obj_handle_t job;
    obj_handle_t process;
    char __pad_20[4];
};
struct assign_job_reply
{
    struct reply_header __header;
};



struct process_in_job_request
{
    struct request_header __header;
    obj_handle_t job;
    obj_handle_t process;
    char __pad_20[4];
};
struct process_in_job_reply
{
    struct reply_header __header;
};



struct set_job_limits_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int limit_flags;
    char __pad_20[4];
};
struct set_job_limits_reply
{
    struct reply_header __header;
};



struct set_job_completion_port_request
{
    struct request_header __header;
    obj_handle_t job;
    obj_handle_t port;
    char __pad_20[4];
    client_ptr_t key;
};
struct set_job_completion_port_reply
{
    struct reply_header __header;
};



struct terminate_job_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          status;
    char __pad_20[4];
};
struct terminate_job_reply
{
    struct reply_header __header;
};


enum request
{
    REQ_new_process,
    REQ_get_new_process_info,
    REQ_new_thread,
    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_result,
    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_query_event,
    REQ_open_event,
    REQ_create_keyed_event,
    REQ_open_keyed_event,
    REQ_create_mutex,
    REQ_release_mutex,
    REQ_open_mutex,
    REQ_create_semaphore,
    REQ_release_semaphore,
    REQ_query_semaphore,
    REQ_open_semaphore,
    REQ_create_file,
    REQ_open_file_object,
    REQ_alloc_file_handle,
    REQ_get_handle_unix_name,
    REQ_get_handle_fd,
    REQ_flush,
    REQ_lock_file,
    REQ_unlock_file,
    REQ_create_socket,
    REQ_accept_socket,
    REQ_accept_into_socket,
    REQ_set_socket_event,
    REQ_get_socket_event,
    REQ_get_socket_info,
    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_read_directory_changes,
    REQ_read_change,
    REQ_create_mapping,
    REQ_open_mapping,
    REQ_get_mapping_info,
    REQ_get_mapping_committed_range,
    REQ_add_mapping_committed_range,
    REQ_create_snapshot,
    REQ_next_process,
    REQ_next_thread,
    REQ_wait_debug_event,
    REQ_queue_exception_event,
    REQ_get_exception_status,
    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_flush_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_set_registry_notification,
    REQ_create_timer,
    REQ_open_timer,
    REQ_set_timer,
    REQ_cancel_timer,
    REQ_get_timer_info,
    REQ_get_thread_context,
    REQ_set_thread_context,
    REQ_get_selector_entry,
    REQ_add_atom,
    REQ_delete_atom,
    REQ_find_atom,
    REQ_get_atom_information,
    REQ_set_atom_information,
    REQ_empty_atom_table,
    REQ_init_atom_table,
    REQ_get_msg_queue,
    REQ_set_queue_fd,
    REQ_set_queue_mask,
    REQ_get_queue_status,
    REQ_get_process_idle_event,
    REQ_send_message,
    REQ_post_quit_message,
    REQ_send_hardware_message,
    REQ_get_message,
    REQ_reply_message,
    REQ_accept_hardware_message,
    REQ_get_message_reply,
    REQ_set_win_timer,
    REQ_kill_win_timer,
    REQ_is_window_hung,
    REQ_get_serial_info,
    REQ_set_serial_info,
    REQ_register_async,
    REQ_cancel_async,
    REQ_read,
    REQ_write,
    REQ_ioctl,
    REQ_set_irp_result,
    REQ_get_irp_result,
    REQ_create_named_pipe,
    REQ_get_named_pipe_info,
    REQ_set_named_pipe_info,
    REQ_create_window,
    REQ_destroy_window,
    REQ_get_desktop_window,
    REQ_set_window_owner,
    REQ_get_window_info,
    REQ_set_window_info,
    REQ_set_parent,
    REQ_get_window_parents,
    REQ_get_window_children,
    REQ_get_window_children_from_point,
    REQ_get_window_tree,
    REQ_set_window_pos,
    REQ_get_window_rectangles,
    REQ_get_window_text,
    REQ_set_window_text,
    REQ_get_windows_offset,
    REQ_get_visible_region,
    REQ_get_surface_region,
    REQ_get_window_region,
    REQ_set_window_region,
    REQ_get_update_region,
    REQ_update_window_zorder,
    REQ_redraw_window,
    REQ_set_window_property,
    REQ_remove_window_property,
    REQ_get_window_property,
    REQ_get_window_properties,
    REQ_create_winstation,
    REQ_open_winstation,
    REQ_close_winstation,
    REQ_get_process_winstation,
    REQ_set_process_winstation,
    REQ_enum_winstation,
    REQ_create_desktop,
    REQ_open_desktop,
    REQ_open_input_desktop,
    REQ_close_desktop,
    REQ_get_thread_desktop,
    REQ_set_thread_desktop,
    REQ_enum_desktop,
    REQ_set_user_object_info,
    REQ_register_hotkey,
    REQ_unregister_hotkey,
    REQ_attach_thread_input,
    REQ_get_thread_input,
    REQ_get_last_input_time,
    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_hook_info,
    REQ_create_class,
    REQ_destroy_class,
    REQ_set_class_info,
    REQ_set_clipboard_info,
    REQ_open_token,
    REQ_set_global_windows,
    REQ_adjust_token_privileges,
    REQ_get_token_privileges,
    REQ_check_token_privileges,
    REQ_duplicate_token,
    REQ_access_check,
    REQ_get_token_sid,
    REQ_get_token_groups,
    REQ_get_token_default_dacl,
    REQ_set_token_default_dacl,
    REQ_set_security_object,
    REQ_get_security_object,
    REQ_create_mailslot,
    REQ_set_mailslot_info,
    REQ_create_directory,
    REQ_open_directory,
    REQ_get_directory_entry,
    REQ_create_symlink,
    REQ_open_symlink,
    REQ_query_symlink,
    REQ_get_object_info,
    REQ_unlink_object,
    REQ_get_token_impersonation_level,
    REQ_allocate_locally_unique_id,
    REQ_create_device_manager,
    REQ_create_device,
    REQ_delete_device,
    REQ_get_next_device_request,
    REQ_make_process_system,
    REQ_get_token_statistics,
    REQ_create_completion,
    REQ_open_completion,
    REQ_add_completion,
    REQ_remove_completion,
    REQ_query_completion,
    REQ_set_completion_info,
    REQ_add_fd_completion,
    REQ_get_window_layered_info,
    REQ_set_window_layered_info,
    REQ_alloc_user_handle,
    REQ_free_user_handle,
    REQ_set_cursor,
    REQ_update_rawinput_devices,
    REQ_get_suspend_context,
    REQ_set_suspend_context,
    REQ_create_job,
    REQ_assign_job,
    REQ_process_in_job,
    REQ_set_job_limits,
    REQ_set_job_completion_port,
    REQ_terminate_job,
    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 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_result_request get_apc_result_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 query_event_request query_event_request;
    struct open_event_request open_event_request;
    struct create_keyed_event_request create_keyed_event_request;
    struct open_keyed_event_request open_keyed_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 query_semaphore_request query_semaphore_request;
    struct open_semaphore_request open_semaphore_request;
    struct create_file_request create_file_request;
    struct open_file_object_request open_file_object_request;
    struct alloc_file_handle_request alloc_file_handle_request;
    struct get_handle_unix_name_request get_handle_unix_name_request;
    struct get_handle_fd_request get_handle_fd_request;
    struct flush_request flush_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 accept_into_socket_request accept_into_socket_request;
    struct set_socket_event_request set_socket_event_request;
    struct get_socket_event_request get_socket_event_request;
    struct get_socket_info_request get_socket_info_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 read_directory_changes_request read_directory_changes_request;
    struct read_change_request read_change_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 get_mapping_committed_range_request get_mapping_committed_range_request;
    struct add_mapping_committed_range_request add_mapping_committed_range_request;
    struct create_snapshot_request create_snapshot_request;
    struct next_process_request next_process_request;
    struct next_thread_request next_thread_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 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 flush_key_request flush_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 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_timer_info_request get_timer_info_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_information_request get_atom_information_request;
    struct set_atom_information_request set_atom_information_request;
    struct empty_atom_table_request empty_atom_table_request;
    struct init_atom_table_request init_atom_table_request;
    struct get_msg_queue_request get_msg_queue_request;
    struct set_queue_fd_request set_queue_fd_request;
    struct set_queue_mask_request set_queue_mask_request;
    struct get_queue_status_request get_queue_status_request;
    struct get_process_idle_event_request get_process_idle_event_request;
    struct send_message_request send_message_request;
    struct post_quit_message_request post_quit_message_request;
    struct send_hardware_message_request send_hardware_message_request;
    struct get_message_request get_message_request;
    struct reply_message_request reply_message_request;
    struct accept_hardware_message_request accept_hardware_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 is_window_hung_request is_window_hung_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 cancel_async_request cancel_async_request;
    struct read_request read_request;
    struct write_request write_request;
    struct ioctl_request ioctl_request;
    struct set_irp_result_request set_irp_result_request;
    struct get_irp_result_request get_irp_result_request;
    struct create_named_pipe_request create_named_pipe_request;
    struct get_named_pipe_info_request get_named_pipe_info_request;
    struct set_named_pipe_info_request set_named_pipe_info_request;
    struct create_window_request create_window_request;
    struct destroy_window_request destroy_window_request;
    struct get_desktop_window_request get_desktop_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 set_parent_request set_parent_request;
    struct get_window_parents_request get_window_parents_request;
    struct get_window_children_request get_window_children_request;
    struct get_window_children_from_point_request get_window_children_from_point_request;
    struct get_window_tree_request get_window_tree_request;
    struct set_window_pos_request set_window_pos_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 get_windows_offset_request get_windows_offset_request;
    struct get_visible_region_request get_visible_region_request;
    struct get_surface_region_request get_surface_region_request;
    struct get_window_region_request get_window_region_request;
    struct set_window_region_request set_window_region_request;
    struct get_update_region_request get_update_region_request;
    struct update_window_zorder_request update_window_zorder_request;
    struct redraw_window_request redraw_window_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 create_winstation_request create_winstation_request;
    struct open_winstation_request open_winstation_request;
    struct close_winstation_request close_winstation_request;
    struct get_process_winstation_request get_process_winstation_request;
    struct set_process_winstation_request set_process_winstation_request;
    struct enum_winstation_request enum_winstation_request;
    struct create_desktop_request create_desktop_request;
    struct open_desktop_request open_desktop_request;
    struct open_input_desktop_request open_input_desktop_request;
    struct close_desktop_request close_desktop_request;
    struct get_thread_desktop_request get_thread_desktop_request;
    struct set_thread_desktop_request set_thread_desktop_request;
    struct enum_desktop_request enum_desktop_request;
    struct set_user_object_info_request set_user_object_info_request;
    struct register_hotkey_request register_hotkey_request;
    struct unregister_hotkey_request unregister_hotkey_request;
    struct attach_thread_input_request attach_thread_input_request;
    struct get_thread_input_request get_thread_input_request;
    struct get_last_input_time_request get_last_input_time_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_hook_info_request get_hook_info_request;
    struct create_class_request create_class_request;
    struct destroy_class_request destroy_class_request;
    struct set_class_info_request set_class_info_request;
    struct set_clipboard_info_request set_clipboard_info_request;
    struct open_token_request open_token_request;
    struct set_global_windows_request set_global_windows_request;
    struct adjust_token_privileges_request adjust_token_privileges_request;
    struct get_token_privileges_request get_token_privileges_request;
    struct check_token_privileges_request check_token_privileges_request;
    struct duplicate_token_request duplicate_token_request;
    struct access_check_request access_check_request;
    struct get_token_sid_request get_token_sid_request;
    struct get_token_groups_request get_token_groups_request;
    struct get_token_default_dacl_request get_token_default_dacl_request;
    struct set_token_default_dacl_request set_token_default_dacl_request;
    struct set_security_object_request set_security_object_request;
    struct get_security_object_request get_security_object_request;
    struct create_mailslot_request create_mailslot_request;
    struct set_mailslot_info_request set_mailslot_info_request;
    struct create_directory_request create_directory_request;
    struct open_directory_request open_directory_request;
    struct get_directory_entry_request get_directory_entry_request;
    struct create_symlink_request create_symlink_request;
    struct open_symlink_request open_symlink_request;
    struct query_symlink_request query_symlink_request;
    struct get_object_info_request get_object_info_request;
    struct unlink_object_request unlink_object_request;
    struct get_token_impersonation_level_request get_token_impersonation_level_request;
    struct allocate_locally_unique_id_request allocate_locally_unique_id_request;
    struct create_device_manager_request create_device_manager_request;
    struct create_device_request create_device_request;
    struct delete_device_request delete_device_request;
    struct get_next_device_request_request get_next_device_request_request;
    struct make_process_system_request make_process_system_request;
    struct get_token_statistics_request get_token_statistics_request;
    struct create_completion_request create_completion_request;
    struct open_completion_request open_completion_request;
    struct add_completion_request add_completion_request;
    struct remove_completion_request remove_completion_request;
    struct query_completion_request query_completion_request;
    struct set_completion_info_request set_completion_info_request;
    struct add_fd_completion_request add_fd_completion_request;
    struct get_window_layered_info_request get_window_layered_info_request;
    struct set_window_layered_info_request set_window_layered_info_request;
    struct alloc_user_handle_request alloc_user_handle_request;
    struct free_user_handle_request free_user_handle_request;
    struct set_cursor_request set_cursor_request;
    struct update_rawinput_devices_request update_rawinput_devices_request;
    struct get_suspend_context_request get_suspend_context_request;
    struct set_suspend_context_request set_suspend_context_request;
    struct create_job_request create_job_request;
    struct assign_job_request assign_job_request;
    struct process_in_job_request process_in_job_request;
    struct set_job_limits_request set_job_limits_request;
    struct set_job_completion_port_request set_job_completion_port_request;
    struct terminate_job_request terminate_job_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 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_result_reply get_apc_result_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 query_event_reply query_event_reply;
    struct open_event_reply open_event_reply;
    struct create_keyed_event_reply create_keyed_event_reply;
    struct open_keyed_event_reply open_keyed_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 query_semaphore_reply query_semaphore_reply;
    struct open_semaphore_reply open_semaphore_reply;
    struct create_file_reply create_file_reply;
    struct open_file_object_reply open_file_object_reply;
    struct alloc_file_handle_reply alloc_file_handle_reply;
    struct get_handle_unix_name_reply get_handle_unix_name_reply;
    struct get_handle_fd_reply get_handle_fd_reply;
    struct flush_reply flush_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 accept_into_socket_reply accept_into_socket_reply;
    struct set_socket_event_reply set_socket_event_reply;
    struct get_socket_event_reply get_socket_event_reply;
    struct get_socket_info_reply get_socket_info_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 read_directory_changes_reply read_directory_changes_reply;
    struct read_change_reply read_change_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 get_mapping_committed_range_reply get_mapping_committed_range_reply;
    struct add_mapping_committed_range_reply add_mapping_committed_range_reply;
    struct create_snapshot_reply create_snapshot_reply;
    struct next_process_reply next_process_reply;
    struct next_thread_reply next_thread_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 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 flush_key_reply flush_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 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_timer_info_reply get_timer_info_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_information_reply get_atom_information_reply;
    struct set_atom_information_reply set_atom_information_reply;
    struct empty_atom_table_reply empty_atom_table_reply;
    struct init_atom_table_reply init_atom_table_reply;
    struct get_msg_queue_reply get_msg_queue_reply;
    struct set_queue_fd_reply set_queue_fd_reply;
    struct set_queue_mask_reply set_queue_mask_reply;
    struct get_queue_status_reply get_queue_status_reply;
    struct get_process_idle_event_reply get_process_idle_event_reply;
    struct send_message_reply send_message_reply;
    struct post_quit_message_reply post_quit_message_reply;
    struct send_hardware_message_reply send_hardware_message_reply;
    struct get_message_reply get_message_reply;
    struct reply_message_reply reply_message_reply;
    struct accept_hardware_message_reply accept_hardware_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 is_window_hung_reply is_window_hung_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 cancel_async_reply cancel_async_reply;
    struct read_reply read_reply;
    struct write_reply write_reply;
    struct ioctl_reply ioctl_reply;
    struct set_irp_result_reply set_irp_result_reply;
    struct get_irp_result_reply get_irp_result_reply;
    struct create_named_pipe_reply create_named_pipe_reply;
    struct get_named_pipe_info_reply get_named_pipe_info_reply;
    struct set_named_pipe_info_reply set_named_pipe_info_reply;
    struct create_window_reply create_window_reply;
    struct destroy_window_reply destroy_window_reply;
    struct get_desktop_window_reply get_desktop_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 set_parent_reply set_parent_reply;
    struct get_window_parents_reply get_window_parents_reply;
    struct get_window_children_reply get_window_children_reply;
    struct get_window_children_from_point_reply get_window_children_from_point_reply;
    struct get_window_tree_reply get_window_tree_reply;
    struct set_window_pos_reply set_window_pos_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 get_windows_offset_reply get_windows_offset_reply;
    struct get_visible_region_reply get_visible_region_reply;
    struct get_surface_region_reply get_surface_region_reply;
    struct get_window_region_reply get_window_region_reply;
    struct set_window_region_reply set_window_region_reply;
    struct get_update_region_reply get_update_region_reply;
    struct update_window_zorder_reply update_window_zorder_reply;
    struct redraw_window_reply redraw_window_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 create_winstation_reply create_winstation_reply;
    struct open_winstation_reply open_winstation_reply;
    struct close_winstation_reply close_winstation_reply;
    struct get_process_winstation_reply get_process_winstation_reply;
    struct set_process_winstation_reply set_process_winstation_reply;
    struct enum_winstation_reply enum_winstation_reply;
    struct create_desktop_reply create_desktop_reply;
    struct open_desktop_reply open_desktop_reply;
    struct open_input_desktop_reply open_input_desktop_reply;
    struct close_desktop_reply close_desktop_reply;
    struct get_thread_desktop_reply get_thread_desktop_reply;
    struct set_thread_desktop_reply set_thread_desktop_reply;
    struct enum_desktop_reply enum_desktop_reply;
    struct set_user_object_info_reply set_user_object_info_reply;
    struct register_hotkey_reply register_hotkey_reply;
    struct unregister_hotkey_reply unregister_hotkey_reply;
    struct attach_thread_input_reply attach_thread_input_reply;
    struct get_thread_input_reply get_thread_input_reply;
    struct get_last_input_time_reply get_last_input_time_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_hook_info_reply get_hook_info_reply;
    struct create_class_reply create_class_reply;
    struct destroy_class_reply destroy_class_reply;
    struct set_class_info_reply set_class_info_reply;
    struct set_clipboard_info_reply set_clipboard_info_reply;
    struct open_token_reply open_token_reply;
    struct set_global_windows_reply set_global_windows_reply;
    struct adjust_token_privileges_reply adjust_token_privileges_reply;
    struct get_token_privileges_reply get_token_privileges_reply;
    struct check_token_privileges_reply check_token_privileges_reply;
    struct duplicate_token_reply duplicate_token_reply;
    struct access_check_reply access_check_reply;
    struct get_token_sid_reply get_token_sid_reply;
    struct get_token_groups_reply get_token_groups_reply;
    struct get_token_default_dacl_reply get_token_default_dacl_reply;
    struct set_token_default_dacl_reply set_token_default_dacl_reply;
    struct set_security_object_reply set_security_object_reply;
    struct get_security_object_reply get_security_object_reply;
    struct create_mailslot_reply create_mailslot_reply;
    struct set_mailslot_info_reply set_mailslot_info_reply;
    struct create_directory_reply create_directory_reply;
    struct open_directory_reply open_directory_reply;
    struct get_directory_entry_reply get_directory_entry_reply;
    struct create_symlink_reply create_symlink_reply;
    struct open_symlink_reply open_symlink_reply;
    struct query_symlink_reply query_symlink_reply;
    struct get_object_info_reply get_object_info_reply;
    struct unlink_object_reply unlink_object_reply;
    struct get_token_impersonation_level_reply get_token_impersonation_level_reply;
    struct allocate_locally_unique_id_reply allocate_locally_unique_id_reply;
    struct create_device_manager_reply create_device_manager_reply;
    struct create_device_reply create_device_reply;
    struct delete_device_reply delete_device_reply;
    struct get_next_device_request_reply get_next_device_request_reply;
    struct make_process_system_reply make_process_system_reply;
    struct get_token_statistics_reply get_token_statistics_reply;
    struct create_completion_reply create_completion_reply;
    struct open_completion_reply open_completion_reply;
    struct add_completion_reply add_completion_reply;
    struct remove_completion_reply remove_completion_reply;
    struct query_completion_reply query_completion_reply;
    struct set_completion_info_reply set_completion_info_reply;
    struct add_fd_completion_reply add_fd_completion_reply;
    struct get_window_layered_info_reply get_window_layered_info_reply;
    struct set_window_layered_info_reply set_window_layered_info_reply;
    struct alloc_user_handle_reply alloc_user_handle_reply;
    struct free_user_handle_reply free_user_handle_reply;
    struct set_cursor_reply set_cursor_reply;
    struct update_rawinput_devices_reply update_rawinput_devices_reply;
    struct get_suspend_context_reply get_suspend_context_reply;
    struct set_suspend_context_reply set_suspend_context_reply;
    struct create_job_reply create_job_reply;
    struct assign_job_reply assign_job_reply;
    struct process_in_job_reply process_in_job_reply;
    struct set_job_limits_reply set_job_limits_reply;
    struct set_job_completion_port_reply set_job_completion_port_reply;
    struct terminate_job_reply terminate_job_reply;
};

#define SERVER_PROTOCOL_VERSION 474

#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
