/*
 * 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    iosb;
    client_ptr_t    user;
    client_ptr_t    apc;
    apc_param_t     apc_context;
} 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;
    unsigned int attributes;
    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     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;
        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     access;
        unsigned int     sharing;
        unsigned int     options;
        client_ptr_t     device;
    } create;
    struct
    {
        unsigned int     major;
        int              __pad;
        client_ptr_t     file;
    } close;
    struct
    {
        unsigned int     major;
        unsigned int     key;
        client_ptr_t     file;
        file_pos_t       pos;
    } read;
    struct
    {
        unsigned int     major;
        unsigned int     key;
        client_ptr_t     file;
        file_pos_t       pos;
    } write;
    struct
    {
        unsigned int     major;
        int              __pad;
        client_ptr_t     file;
    } flush;
    struct
    {
        unsigned int     major;
        ioctl_code_t     code;
        client_ptr_t     file;
    } ioctl;
} irp_params_t;


typedef struct
{
    client_ptr_t   base;
    client_ptr_t   entry_point;
    mem_size_t     map_size;
    mem_size_t     stack_size;
    mem_size_t     stack_commit;
    unsigned int   zerobits;
    unsigned int   subsystem;
    unsigned short subsystem_low;
    unsigned short subsystem_high;
    unsigned int   gp;
    unsigned short image_charact;
    unsigned short dll_charact;
    unsigned short machine;
    unsigned char  contains_code;
    unsigned char  image_flags;
    unsigned int   loader_flags;
    unsigned int   header_size;
    unsigned int   file_size;
    unsigned int   checksum;
} pe_image_info_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;
    int          suspend;
    char __pad_12[4];
};



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;
    short int    debugger_present;
    short int    debug_children;
};



struct get_process_vm_counters_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_process_vm_counters_reply
{
    struct reply_header __header;
    mem_size_t peak_virtual_size;
    mem_size_t virtual_size;
    mem_size_t peak_working_set_size;
    mem_size_t working_set_size;
    mem_size_t pagefile_usage;
    mem_size_t peak_pagefile_usage;
};



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;
    client_ptr_t entry_point;
    affinity_t   affinity;
    int          exit_code;
    int          priority;
    int          last;
    char __pad_52[4];
};



struct get_thread_times_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_thread_times_reply
{
    struct reply_header __header;
    timeout_t    creation_time;
    timeout_t    exit_time;
};



struct set_thread_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          mask;
    int          priority;
    affinity_t   affinity;
    client_ptr_t entry_point;
    obj_handle_t token;
    char __pad_44[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
#define SET_THREAD_INFO_ENTRYPOINT 0x08



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  filename_len;
    /* VARARG(filename,unicode_str); */
    char __pad_20[4];
};



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;
    data_size_t  dbg_offset;
    mod_handle_t base;
    client_ptr_t name;
    data_size_t  dbg_size;
    /* VARARG(filename,unicode_str); */
    char __pad_36[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;
    int          manual_reset;
    int          initial_state;
    /* VARARG(objattr,object_attributes); */
};
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;
    /* VARARG(objattr,object_attributes); */
};
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;
    int          owned;
    /* VARARG(objattr,object_attributes); */
    char __pad_20[4];
};
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 query_mutex_request
{
    struct request_header __header;
    obj_handle_t  handle;
};
struct query_mutex_reply
{
    struct reply_header __header;
    unsigned int count;
    int          owned;
    int          abandoned;
    char __pad_20[4];
};



struct create_semaphore_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int initial;
    unsigned int max;
    /* VARARG(objattr,object_attributes); */
};
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 sharing;
    int          create;
    unsigned int options;
    unsigned int attrs;
    /* VARARG(objattr,object_attributes); */
    /* VARARG(filename,string); */
};
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 get_directory_cache_entry_request
{
    struct request_header __header;
    obj_handle_t handle;
};
struct get_directory_cache_entry_reply
{
    struct reply_header __header;
    int          entry;
    /* VARARG(free,ints); */
    char __pad_12[4];
};



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


struct get_volume_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    unsigned int info_class;
    char __pad_20[4];
};
struct get_volume_info_reply
{
    struct reply_header __header;
    /* VARARG(data,bytes); */
};


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    popup_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;
    short int    font_width;
    short int    font_height;
    /* VARARG(colors,uints); */
    char __pad_52[4];
};
struct set_console_output_info_reply
{
    struct reply_header __header;
};
#define SET_CONSOLE_OUTPUT_INFO_CURSOR_GEOM     0x0001
#define SET_CONSOLE_OUTPUT_INFO_CURSOR_POS      0x0002
#define SET_CONSOLE_OUTPUT_INFO_SIZE            0x0004
#define SET_CONSOLE_OUTPUT_INFO_ATTR            0x0008
#define SET_CONSOLE_OUTPUT_INFO_DISPLAY_WINDOW  0x0010
#define SET_CONSOLE_OUTPUT_INFO_MAX_SIZE        0x0020
#define SET_CONSOLE_OUTPUT_INFO_FONT            0x0040
#define SET_CONSOLE_OUTPUT_INFO_COLORTABLE      0x0080
#define SET_CONSOLE_OUTPUT_INFO_POPUP_ATTR      0x0100



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    popup_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;
    short int    font_width;
    short int    font_height;
    /* VARARG(colors,uints); */
};


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 flags;
    unsigned int file_access;
    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];
};



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;
    unsigned int flags;
    obj_handle_t shared_file;
    /* VARARG(image,pe_image_info); */
};



struct map_view_request
{
    struct request_header __header;
    obj_handle_t mapping;
    unsigned int access;
    char __pad_20[4];
    client_ptr_t base;
    mem_size_t   size;
    file_pos_t   start;
};
struct map_view_reply
{
    struct reply_header __header;
};



struct unmap_view_request
{
    struct request_header __header;
    char __pad_12[4];
    client_ptr_t base;
};
struct unmap_view_reply
{
    struct reply_header __header;
};



struct get_mapping_committed_range_request
{
    struct request_header __header;
    char __pad_12[4];
    client_ptr_t base;
    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;
    char __pad_12[4];
    client_ptr_t base;
    file_pos_t   offset;
    mem_size_t   size;
};
struct add_mapping_committed_range_reply
{
    struct reply_header __header;
};



struct is_same_mapping_request
{
    struct request_header __header;
    char __pad_12[4];
    client_ptr_t base1;
    client_ptr_t base2;
};
struct is_same_mapping_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;
    unsigned int access;
    unsigned int options;
    /* VARARG(objattr,object_attributes); */
    /* VARARG(class,unicode_str); */
    char __pad_20[4];
};
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 file;
    /* VARARG(objattr,object_attributes); */
};
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;
    int          manual;
    /* VARARG(objattr,object_attributes); */
    char __pad_20[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 eventmask;
    unsigned int cookie;
    unsigned int pending_write;
    char __pad_20[4];
};



struct set_serial_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          flags;
    char __pad_20[4];
};
struct set_serial_info_reply
{
    struct reply_header __header;
};
#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 get_async_result_request
{
    struct request_header __header;
    char __pad_12[4];
    client_ptr_t   user_arg;
};
struct get_async_result_reply
{
    struct reply_header __header;
    data_size_t    size;
    /* VARARG(out_data,bytes); */
    char __pad_12[4];
};



struct read_request
{
    struct request_header __header;
    char __pad_12[4];
    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;
    char __pad_12[4];
    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;
    /* VARARG(in_data,bytes); */
};
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 handle;
    unsigned int status;
    data_size_t  size;
    client_ptr_t file_ptr;
    /* VARARG(data,bytes); */
};
struct set_irp_result_reply
{
    struct reply_header __header;
};



struct create_named_pipe_request
{
    struct request_header __header;
    unsigned int   access;
    unsigned int   options;
    unsigned int   sharing;
    unsigned int   maxinstances;
    unsigned int   outsize;
    unsigned int   insize;
    char __pad_36[4];
    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;
    int            needs_update;
};
#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       0x001
#define UPDATE_ERASE           0x002
#define UPDATE_PAINT           0x004
#define UPDATE_INTERNALPAINT   0x008
#define UPDATE_ALLCHILDREN     0x010
#define UPDATE_NOCHILDREN      0x020
#define UPDATE_NOREGION        0x040
#define UPDATE_DELAYED_ERASE   0x080
#define UPDATE_CLIPCHILDREN    0x100



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;
    obj_handle_t rootdir;
    /* VARARG(name,unicode_str); */
    char __pad_28[4];
};
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;
    obj_handle_t rootdir;
    /* VARARG(name,unicode_str); */
};
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_SET_FLAGS       1
#define SET_USER_OBJECT_GET_FULL_NAME   2



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
enum caret_state
{
    CARET_STATE_OFF,
    CARET_STATE_ON,
    CARET_STATE_TOGGLE,
    CARET_STATE_ON_IF_MOVED
};



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 open_clipboard_request
{
    struct request_header __header;
    user_handle_t  window;
};
struct open_clipboard_reply
{
    struct reply_header __header;
    user_handle_t  owner;
    char __pad_12[4];
};



struct close_clipboard_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct close_clipboard_reply
{
    struct reply_header __header;
    user_handle_t  viewer;
    user_handle_t  owner;
};



struct empty_clipboard_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct empty_clipboard_reply
{
    struct reply_header __header;
};



struct set_clipboard_data_request
{
    struct request_header __header;
    unsigned int   format;
    unsigned int   lcid;
    /* VARARG(data,bytes); */
    char __pad_20[4];
};
struct set_clipboard_data_reply
{
    struct reply_header __header;
    unsigned int   seqno;
    char __pad_12[4];
};



struct get_clipboard_data_request
{
    struct request_header __header;
    unsigned int   format;
    int            render;
    int            cached;
    unsigned int   seqno;
    char __pad_28[4];
};
struct get_clipboard_data_reply
{
    struct reply_header __header;
    unsigned int   from;
    user_handle_t  owner;
    unsigned int   seqno;
    data_size_t    total;
    /* VARARG(data,bytes); */
};



struct get_clipboard_formats_request
{
    struct request_header __header;
    unsigned int   format;
};
struct get_clipboard_formats_reply
{
    struct reply_header __header;
    unsigned int   count;
    /* VARARG(formats,uints); */
    char __pad_12[4];
};



struct enum_clipboard_formats_request
{
    struct request_header __header;
    unsigned int   previous;
};
struct enum_clipboard_formats_reply
{
    struct reply_header __header;
    unsigned int   format;
    char __pad_12[4];
};



struct release_clipboard_request
{
    struct request_header __header;
    user_handle_t  owner;
};
struct release_clipboard_reply
{
    struct reply_header __header;
    user_handle_t  viewer;
    user_handle_t  owner;
};



struct get_clipboard_info_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct get_clipboard_info_reply
{
    struct reply_header __header;
    user_handle_t  window;
    user_handle_t  owner;
    user_handle_t  viewer;
    unsigned int   seqno;
};



struct set_clipboard_viewer_request
{
    struct request_header __header;
    user_handle_t  viewer;
    user_handle_t  previous;
    char __pad_20[4];
};
struct set_clipboard_viewer_reply
{
    struct reply_header __header;
    user_handle_t  old_viewer;
    user_handle_t  owner;
};



struct add_clipboard_listener_request
{
    struct request_header __header;
    user_handle_t  window;
};
struct add_clipboard_listener_reply
{
    struct reply_header __header;
};



struct remove_clipboard_listener_request
{
    struct request_header __header;
    user_handle_t  window;
};
struct remove_clipboard_listener_reply
{
    struct reply_header __header;
};



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;
    int           primary;
    int           impersonation_level;
    /* VARARG(objattr,object_attributes); */
    char __pad_28[4];
};
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 handle_info
{
    process_id_t owner;
    obj_handle_t handle;
    unsigned int access;
};


struct get_system_handles_request
{
    struct request_header __header;
    char __pad_12[4];
};
struct get_system_handles_reply
{
    struct reply_header __header;
    unsigned int    count;
    /* VARARG(data,handle_infos); */
    char __pad_12[4];
};



struct create_mailslot_request
{
    struct request_header __header;
    unsigned int   access;
    timeout_t      read_timeout;
    unsigned int   max_msgsize;
    /* VARARG(objattr,object_attributes); */
    char __pad_28[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;
    /* VARARG(objattr,object_attributes); */
};
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;
    /* VARARG(objattr,object_attributes); */
    /* VARARG(target_name,unicode_str); */
};
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 get_object_type_request
{
    struct request_header __header;
    obj_handle_t   handle;
};
struct get_object_type_reply
{
    struct reply_header __header;
    data_size_t    total;
    /* VARARG(type,unicode_str); */
    char __pad_12[4];
};



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;
    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 concurrent;
    /* VARARG(objattr,object_attributes); */
    char __pad_20[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 set_fd_disp_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    int          unlink;
    char __pad_20[4];
};
struct set_fd_disp_info_reply
{
    struct reply_header __header;
};



struct set_fd_name_info_request
{
    struct request_header __header;
    obj_handle_t handle;
    obj_handle_t rootdir;
    int          link;
    /* VARARG(filename,string); */
};
struct set_fd_name_info_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;
    /* VARARG(objattr,object_attributes); */
};
struct create_job_reply
{
    struct reply_header __header;
    obj_handle_t handle;
    char __pad_12[4];
};



struct open_job_request
{
    struct request_header __header;
    unsigned int access;
    unsigned int attributes;
    obj_handle_t rootdir;
    /* VARARG(name,unicode_str); */
};
struct open_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_get_process_vm_counters,
    REQ_set_process_info,
    REQ_get_thread_info,
    REQ_get_thread_times,
    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_query_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_get_directory_cache_entry,
    REQ_flush,
    REQ_get_volume_info,
    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_map_view,
    REQ_unmap_view,
    REQ_get_mapping_committed_range,
    REQ_add_mapping_committed_range,
    REQ_is_same_mapping,
    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_get_async_result,
    REQ_read,
    REQ_write,
    REQ_ioctl,
    REQ_set_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_open_clipboard,
    REQ_close_clipboard,
    REQ_empty_clipboard,
    REQ_set_clipboard_data,
    REQ_get_clipboard_data,
    REQ_get_clipboard_formats,
    REQ_enum_clipboard_formats,
    REQ_release_clipboard,
    REQ_get_clipboard_info,
    REQ_set_clipboard_viewer,
    REQ_add_clipboard_listener,
    REQ_remove_clipboard_listener,
    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_get_system_handles,
    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_get_object_type,
    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_set_fd_disp_info,
    REQ_set_fd_name_info,
    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_open_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 get_process_vm_counters_request get_process_vm_counters_request;
    struct set_process_info_request set_process_info_request;
    struct get_thread_info_request get_thread_info_request;
    struct get_thread_times_request get_thread_times_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 query_mutex_request query_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 get_directory_cache_entry_request get_directory_cache_entry_request;
    struct flush_request flush_request;
    struct get_volume_info_request get_volume_info_request;
    struct lock_file_request lock_file_request;
    struct unlock_file_request unlock_file_request;
    struct create_socket_request create_socket_request;
    struct accept_socket_request accept_socket_request;
    struct 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 map_view_request map_view_request;
    struct unmap_view_request unmap_view_request;
    struct get_mapping_committed_range_request get_mapping_committed_range_request;
    struct add_mapping_committed_range_request add_mapping_committed_range_request;
    struct is_same_mapping_request is_same_mapping_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 get_async_result_request get_async_result_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 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 open_clipboard_request open_clipboard_request;
    struct close_clipboard_request close_clipboard_request;
    struct empty_clipboard_request empty_clipboard_request;
    struct set_clipboard_data_request set_clipboard_data_request;
    struct get_clipboard_data_request get_clipboard_data_request;
    struct get_clipboard_formats_request get_clipboard_formats_request;
    struct enum_clipboard_formats_request enum_clipboard_formats_request;
    struct release_clipboard_request release_clipboard_request;
    struct get_clipboard_info_request get_clipboard_info_request;
    struct set_clipboard_viewer_request set_clipboard_viewer_request;
    struct add_clipboard_listener_request add_clipboard_listener_request;
    struct remove_clipboard_listener_request remove_clipboard_listener_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 get_system_handles_request get_system_handles_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 get_object_type_request get_object_type_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 set_fd_disp_info_request set_fd_disp_info_request;
    struct set_fd_name_info_request set_fd_name_info_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 open_job_request open_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 get_process_vm_counters_reply get_process_vm_counters_reply;
    struct set_process_info_reply set_process_info_reply;
    struct get_thread_info_reply get_thread_info_reply;
    struct get_thread_times_reply get_thread_times_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 query_mutex_reply query_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 get_directory_cache_entry_reply get_directory_cache_entry_reply;
    struct flush_reply flush_reply;
    struct get_volume_info_reply get_volume_info_reply;
    struct lock_file_reply lock_file_reply;
    struct unlock_file_reply unlock_file_reply;
    struct create_socket_reply create_socket_reply;
    struct accept_socket_reply accept_socket_reply;
    struct 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 map_view_reply map_view_reply;
    struct unmap_view_reply unmap_view_reply;
    struct get_mapping_committed_range_reply get_mapping_committed_range_reply;
    struct add_mapping_committed_range_reply add_mapping_committed_range_reply;
    struct is_same_mapping_reply is_same_mapping_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 get_async_result_reply get_async_result_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 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 open_clipboard_reply open_clipboard_reply;
    struct close_clipboard_reply close_clipboard_reply;
    struct empty_clipboard_reply empty_clipboard_reply;
    struct set_clipboard_data_reply set_clipboard_data_reply;
    struct get_clipboard_data_reply get_clipboard_data_reply;
    struct get_clipboard_formats_reply get_clipboard_formats_reply;
    struct enum_clipboard_formats_reply enum_clipboard_formats_reply;
    struct release_clipboard_reply release_clipboard_reply;
    struct get_clipboard_info_reply get_clipboard_info_reply;
    struct set_clipboard_viewer_reply set_clipboard_viewer_reply;
    struct add_clipboard_listener_reply add_clipboard_listener_reply;
    struct remove_clipboard_listener_reply remove_clipboard_listener_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 get_system_handles_reply get_system_handles_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 get_object_type_reply get_object_type_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 set_fd_disp_info_reply set_fd_disp_info_reply;
    struct set_fd_name_info_reply set_fd_name_info_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 open_job_reply open_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 543

#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
