#define NULL    0
#define MAX_PATH          260
#define ANYSIZE_ARRAY 1
#define ANY_SIZE 1
#define IMAGE_SIZEOF_SHORT_NAME 8
#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES    16
#define INFINITE            0xFFFFFFFF

#define STD_INPUT_HANDLE  -10
#define STD_OUTPUT_HANDLE -11
#define STD_ERROR_HANDLE -12

#define WARMING_NOT_SAME_FLAG_FOR_WINXP 0
#define PROCESS_ALL_ACCESS  0x001F0FFF
#define THREAD_ALL_ACCESS  0x001F03FF


#define STARTF_USESHOWWINDOW    0x00000001
#define STARTF_USESIZE          0x00000002
#define STARTF_USEPOSITION      0x00000004
#define STARTF_USECOUNTCHARS    0x00000008
#define STARTF_USEFILLATTRIBUTE 0x00000010
#define STARTF_RUNFULLSCREEN    0x00000020
#define STARTF_FORCEONFEEDBACK  0x00000040
#define STARTF_FORCEOFFFEEDBACK 0x00000080
#define STARTF_USESTDHANDLES    0x00000100

#define SW_HIDE             0
#define SW_SHOWNORMAL       1
#define SW_NORMAL           1
#define SW_SHOWMINIMIZED    2
#define SW_SHOWMAXIMIZED    3
#define SW_MAXIMIZE         3
#define SW_SHOWNOACTIVATE   4
#define SW_SHOW             5
#define SW_MINIMIZE         6
#define SW_SHOWMINNOACTIVE  7
#define SW_SHOWNA           8
#define SW_RESTORE          9
#define SW_SHOWDEFAULT      10
#define SW_FORCEMINIMIZE    11
#define SW_MAX              11


#define DEBUG_PROCESS                     0x00000001
#define DEBUG_ONLY_THIS_PROCESS           0x00000002
#define CREATE_SUSPENDED                  0x00000004
#define DETACHED_PROCESS                  0x00000008

#define CREATE_NEW_CONSOLE                0x00000010
#define NORMAL_PRIORITY_CLASS             0x00000020
#define IDLE_PRIORITY_CLASS               0x00000040
#define HIGH_PRIORITY_CLASS               0x00000080

#define REALTIME_PRIORITY_CLASS           0x00000100
#define CREATE_NEW_PROCESS_GROUP          0x00000200
#define CREATE_UNICODE_ENVIRONMENT        0x00000400
#define CREATE_SEPARATE_WOW_VDM           0x00000800

#define CREATE_SHARED_WOW_VDM             0x00001000
#define CREATE_FORCEDOS                   0x00002000
#define BELOW_NORMAL_PRIORITY_CLASS       0x00004000
#define ABOVE_NORMAL_PRIORITY_CLASS       0x00008000

#define INHERIT_PARENT_AFFINITY           0x00010000
#define INHERIT_CALLER_PRIORITY           0x00020000
#define CREATE_PROTECTED_PROCESS          0x00040000
#define EXTENDED_STARTUPINFO_PRESENT      0x00080000

#define PROCESS_MODE_BACKGROUND_BEGIN     0x00100000
#define PROCESS_MODE_BACKGROUND_END       0x00200000

#define CREATE_BREAKAWAY_FROM_JOB         0x01000000
#define CREATE_PRESERVE_CODE_AUTHZ_LEVEL  0x02000000
#define CREATE_DEFAULT_ERROR_MODE         0x04000000
#define CREATE_NO_WINDOW                  0x08000000

#define PROFILE_USER                      0x10000000
#define PROFILE_KERNEL                    0x20000000
#define PROFILE_SERVER                    0x40000000
#define CREATE_IGNORE_SYSTEM_DEFAULT      0x80000000


#define STATUS_WAIT_0                    (0x00000000L)
#define STATUS_ABANDONED_WAIT_0          (0x00000080L)
#define STATUS_USER_APC                  (0x000000C0L)
#define STATUS_TIMEOUT                   (0x00000102L)
#define STATUS_PENDING                   (0x00000103L)
#define DBG_EXCEPTION_HANDLED            (0x00010001L)
#define DBG_CONTINUE                     (0x00010002L)
#define STATUS_SEGMENT_NOTIFICATION      (0x40000005L)
#define DBG_TERMINATE_THREAD             (0x40010003L)
#define DBG_TERMINATE_PROCESS            (0x40010004L)
#define DBG_CONTROL_C                    (0x40010005L)
#define DBG_PRINTEXCEPTION_C             (0x40010006L)
#define DBG_RIPEXCEPTION                 (0x40010007L)
#define DBG_CONTROL_BREAK                (0x40010008L)
#define DBG_COMMAND_EXCEPTION            (0x40010009L)
#define STATUS_GUARD_PAGE_VIOLATION      (0x80000001L)
#define STATUS_DATATYPE_MISALIGNMENT     (0x80000002L)
#define STATUS_BREAKPOINT                (0x80000003L)
#define STATUS_SINGLE_STEP               (0x80000004L)
#define STATUS_LONGJUMP                  (0x80000026L)
#define STATUS_UNWIND_CONSOLIDATE        (0x80000029L)
#define DBG_EXCEPTION_NOT_HANDLED        (0x80010001L)
#define STATUS_ACCESS_VIOLATION          (0xC0000005L)
#define STATUS_IN_PAGE_ERROR             (0xC0000006L)
#define STATUS_INVALID_HANDLE            (0xC0000008L)
#define STATUS_INVALID_PARAMETER         (0xC000000DL)
#define STATUS_NO_MEMORY                 (0xC0000017L)
#define STATUS_ILLEGAL_INSTRUCTION       (0xC000001DL)
#define STATUS_NONCONTINUABLE_EXCEPTION  (0xC0000025L)
#define STATUS_INVALID_DISPOSITION       (0xC0000026L)
#define STATUS_ARRAY_BOUNDS_EXCEEDED     (0xC000008CL)
#define STATUS_FLOAT_DENORMAL_OPERAND    (0xC000008DL)
#define STATUS_FLOAT_DIVIDE_BY_ZERO      (0xC000008EL)
#define STATUS_FLOAT_INEXACT_RESULT      (0xC000008FL)
#define STATUS_FLOAT_INVALID_OPERATION   (0xC0000090L)
#define STATUS_FLOAT_OVERFLOW            (0xC0000091L)
#define STATUS_FLOAT_STACK_CHECK         (0xC0000092L)
#define STATUS_FLOAT_UNDERFLOW           (0xC0000093L)
#define STATUS_INTEGER_DIVIDE_BY_ZERO    (0xC0000094L)
#define STATUS_INTEGER_OVERFLOW          (0xC0000095L)
#define STATUS_PRIVILEGED_INSTRUCTION    (0xC0000096L)
#define STATUS_STACK_OVERFLOW            (0xC00000FDL)
#define STATUS_DLL_NOT_FOUND             (0xC0000135L)
#define STATUS_ORDINAL_NOT_FOUND         (0xC0000138L)
#define STATUS_ENTRYPOINT_NOT_FOUND      (0xC0000139L)
#define STATUS_CONTROL_C_EXIT            (0xC000013AL)
#define STATUS_DLL_INIT_FAILED           (0xC0000142L)
#define STATUS_FLOAT_MULTIPLE_FAULTS     (0xC00002B4L)
#define STATUS_FLOAT_MULTIPLE_TRAPS      (0xC00002B5L)
#define STATUS_REG_NAT_CONSUMPTION       (0xC00002C9L)
#define STATUS_STACK_BUFFER_OVERRUN      (0xC0000409L)
#define STATUS_INVALID_CRUNTIME_PARAMETER (0xC0000417L)
#define STATUS_ASSERTION_FAILURE         (0xC0000420L)
#define STATUS_POSSIBLE_DEADLOCK        (0xC0000194)


#define WAIT_IO_COMPLETION                  STATUS_USER_APC
#define STILL_ACTIVE                        STATUS_PENDING
#define EXCEPTION_ACCESS_VIOLATION          STATUS_ACCESS_VIOLATION
#define EXCEPTION_DATATYPE_MISALIGNMENT     STATUS_DATATYPE_MISALIGNMENT
#define EXCEPTION_BREAKPOINT                STATUS_BREAKPOINT
#define EXCEPTION_SINGLE_STEP               STATUS_SINGLE_STEP
#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED     STATUS_ARRAY_BOUNDS_EXCEEDED
#define EXCEPTION_FLT_DENORMAL_OPERAND      STATUS_FLOAT_DENORMAL_OPERAND
#define EXCEPTION_FLT_DIVIDE_BY_ZERO        STATUS_FLOAT_DIVIDE_BY_ZERO
#define EXCEPTION_FLT_INEXACT_RESULT        STATUS_FLOAT_INEXACT_RESULT
#define EXCEPTION_FLT_INVALID_OPERATION     STATUS_FLOAT_INVALID_OPERATION
#define EXCEPTION_FLT_OVERFLOW              STATUS_FLOAT_OVERFLOW
#define EXCEPTION_FLT_STACK_CHECK           STATUS_FLOAT_STACK_CHECK
#define EXCEPTION_FLT_UNDERFLOW             STATUS_FLOAT_UNDERFLOW
#define EXCEPTION_INT_DIVIDE_BY_ZERO        STATUS_INTEGER_DIVIDE_BY_ZERO
#define EXCEPTION_INT_OVERFLOW              STATUS_INTEGER_OVERFLOW
#define EXCEPTION_PRIV_INSTRUCTION          STATUS_PRIVILEGED_INSTRUCTION
#define EXCEPTION_IN_PAGE_ERROR             STATUS_IN_PAGE_ERROR
#define EXCEPTION_ILLEGAL_INSTRUCTION       STATUS_ILLEGAL_INSTRUCTION
#define EXCEPTION_NONCONTINUABLE_EXCEPTION  STATUS_NONCONTINUABLE_EXCEPTION
#define EXCEPTION_STACK_OVERFLOW            STATUS_STACK_OVERFLOW
#define EXCEPTION_INVALID_DISPOSITION       STATUS_INVALID_DISPOSITION
#define EXCEPTION_GUARD_PAGE                STATUS_GUARD_PAGE_VIOLATION
#define EXCEPTION_INVALID_HANDLE            STATUS_INVALID_HANDLE
#define EXCEPTION_POSSIBLE_DEADLOCK         STATUS_POSSIBLE_DEADLOCK
#define CONTROL_C_EXIT                      STATUS_CONTROL_C_EXIT

#define EXCEPTION_DEBUG_EVENT       1
#define CREATE_THREAD_DEBUG_EVENT   2
#define CREATE_PROCESS_DEBUG_EVENT  3
#define EXIT_THREAD_DEBUG_EVENT     4
#define EXIT_PROCESS_DEBUG_EVENT    5
#define LOAD_DLL_DEBUG_EVENT        6
#define UNLOAD_DLL_DEBUG_EVENT      7
#define OUTPUT_DEBUG_STRING_EVENT   8
#define RIP_EVENT                   9


#define TH32CS_SNAPHEAPLIST 0x00000001
#define TH32CS_SNAPPROCESS  0x00000002
#define TH32CS_SNAPTHREAD   0x00000004
#define TH32CS_SNAPMODULE   0x00000008
#define TH32CS_SNAPMODULE32 0x00000010
#define TH32CS_SNAPALL      (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
#define TH32CS_INHERIT      0x80000000

#define CONTEXT_I386    0x00010000

#define CONTEXT_CONTROL             0x00000001L
#define CONTEXT_INTEGER             0x00000002L
#define CONTEXT_SEGMENTS            0x00000004L
#define CONTEXT_FLOATING_POINT      0x00000008L
#define CONTEXT_DEBUG_REGISTERS     0x00000010L
#define CONTEXT_EXTENDED_REGISTERS  0x00000020L
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
#define CONTEXT_ALL (CONTEXT_FULL | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS)

#define CONTEXT_FULL CONTEXT_I386 | CONTEXT_FULL
#define CONTEXT_ALL  CONTEXT_I386 | CONTEXT_ALL


#define PAGE_NOACCESS          0x01
#define PAGE_READONLY          0x02
#define PAGE_READWRITE         0x04
#define PAGE_WRITECOPY         0x08
#define PAGE_EXECUTE           0x10
#define PAGE_EXECUTE_READ      0x20
#define PAGE_EXECUTE_READWRITE 0x40
#define PAGE_EXECUTE_WRITECOPY 0x80
#define PAGE_GUARD            0x100
#define PAGE_NOCACHE          0x200
#define PAGE_WRITECOMBINE     0x400
#define MEM_COMMIT           0x1000
#define MEM_RESERVE          0x2000
#define MEM_DECOMMIT         0x4000
#define MEM_RELEASE          0x8000
#define MEM_FREE            0x10000
#define MEM_PRIVATE         0x20000
#define MEM_MAPPED          0x40000
#define MEM_RESET           0x80000
#define MEM_TOP_DOWN       0x100000
#define MEM_WRITE_WATCH    0x200000
#define MEM_PHYSICAL       0x400000
#define MEM_ROTATE         0x800000
#define MEM_LARGE_PAGES  0x20000000
#define MEM_4MB_PAGES    0x80000000

#define SEC_FILE           0x800000
#define SEC_IMAGE         0x1000000
#define SEC_PROTECTED_IMAGE  0x2000000
#define SEC_RESERVE       0x4000000
#define SEC_COMMIT        0x8000000
#define SEC_NOCACHE      0x10000000
#define SEC_WRITECOMBINE 0x40000000
#define SEC_LARGE_PAGES  0x80000000
#define MEM_IMAGE         SEC_IMAGE
#define WRITE_WATCH_FLAG_RESET 0x01

#define DELETE                           (0x00010000L)
#define READ_CONTROL                     (0x00020000L)
#define WRITE_DAC                        (0x00040000L)
#define WRITE_OWNER                      (0x00080000L)
#define SYNCHRONIZE                      (0x00100000L)
#define STANDARD_RIGHTS_REQUIRED         (0x000F0000L)
#define STANDARD_RIGHTS_READ             (READ_CONTROL)
#define STANDARD_RIGHTS_WRITE            (READ_CONTROL)
#define STANDARD_RIGHTS_EXECUTE          (READ_CONTROL)

#define STANDARD_RIGHTS_ALL              (0x001F0000L)

#define SPECIFIC_RIGHTS_ALL              (0x0000FFFFL)

#define TOKEN_ASSIGN_PRIMARY    (0x0001)
#define TOKEN_DUPLICATE         (0x0002)
#define TOKEN_IMPERSONATE       (0x0004)
#define TOKEN_QUERY             (0x0008)
#define TOKEN_QUERY_SOURCE      (0x0010)
#define TOKEN_ADJUST_PRIVILEGES (0x0020)
#define TOKEN_ADJUST_GROUPS     (0x0040)
#define TOKEN_ADJUST_DEFAULT    (0x0080)
#define TOKEN_ADJUST_SESSIONID  (0x0100)

#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT)


#define TOKEN_ALL_ACCESS  (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID )

#define SE_PRIVILEGE_ENABLED_BY_DEFAULT (0x00000001L)
#define SE_PRIVILEGE_ENABLED            (0x00000002L)
#define SE_PRIVILEGE_REMOVED            (0X00000004L)
#define SE_PRIVILEGE_USED_FOR_ACCESS    (0x80000000L)


#define AF_UNSPEC       0
#define AF_UNIX         1
#define AF_INET         2
#define AF_IMPLINK      3
#define AF_PUP          4
#define AF_CHAOS        5
#define AF_NS           6
#define AF_IPX          AF_NS
#define AF_ISO          7
#define AF_OSI          AF_ISO
#define AF_ECMA         8
#define AF_DATAKIT      9
#define AF_CCITT        10
#define AF_SNA          11
#define AF_DECnet       12
#define AF_DLI          13
#define AF_LAT          14
#define AF_HYLINK       15
#define AF_APPLETALK    16
#define AF_NETBIOS      17
#define AF_VOICEVIEW    18
#define AF_FIREFOX      19
#define AF_UNKNOWN1     20
#define AF_BAN          21
#define AF_ATM          22
#define AF_INET6        23
#define AF_CLUSTER      24
#define AF_12844        25
#define AF_IRDA         26
#define AF_NETDES       28


#define EXCEPTION_NONCONTINUABLE 0x1
#define EXCEPTION_MAXIMUM_PARAMETERS 15


#define STATUS_WAIT_0                    (0x00000000)
#define STATUS_ABANDONED_WAIT_0          (0x00000080)
#define STATUS_USER_APC                  (0x000000C0)
#define STATUS_TIMEOUT                   (0x00000102)
#define STATUS_PENDING                   (0x00000103)
#define DBG_EXCEPTION_HANDLED            (0x00010001)
#define DBG_CONTINUE                     (0x00010002)
#define STATUS_SEGMENT_NOTIFICATION      (0x40000005)
#define DBG_TERMINATE_THREAD             (0x40010003)
#define DBG_TERMINATE_PROCESS            (0x40010004)
#define DBG_CONTROL_C                    (0x40010005)
#define DBG_PRINTEXCEPTION_C             (0x40010006)
#define DBG_RIPEXCEPTION                 (0x40010007)
#define DBG_CONTROL_BREAK                (0x40010008)
#define DBG_COMMAND_EXCEPTION            (0x40010009)
#define STATUS_GUARD_PAGE_VIOLATION      (0x80000001)
#define STATUS_DATATYPE_MISALIGNMENT     (0x80000002)
#define STATUS_BREAKPOINT                (0x80000003)
#define STATUS_SINGLE_STEP               (0x80000004)
#define STATUS_LONGJUMP                  (0x80000026)
#define STATUS_UNWIND_CONSOLIDATE        (0x80000029)
#define DBG_EXCEPTION_NOT_HANDLED        (0x80010001)
#define STATUS_ACCESS_VIOLATION          (0xC0000005)
#define STATUS_IN_PAGE_ERROR             (0xC0000006)
#define STATUS_INVALID_HANDLE            (0xC0000008)
#define STATUS_INVALID_PARAMETER         (0xC000000D)
#define STATUS_NO_MEMORY                 (0xC0000017)
#define STATUS_ILLEGAL_INSTRUCTION       (0xC000001D)
#define STATUS_NONCONTINUABLE_EXCEPTION  (0xC0000025)
#define STATUS_INVALID_DISPOSITION       (0xC0000026)
#define STATUS_ARRAY_BOUNDS_EXCEEDED     (0xC000008C)
#define STATUS_FLOAT_DENORMAL_OPERAND    (0xC000008D)
#define STATUS_FLOAT_DIVIDE_BY_ZERO      (0xC000008E)
#define STATUS_FLOAT_INEXACT_RESULT      (0xC000008F)
#define STATUS_FLOAT_INVALID_OPERATION   (0xC0000090)
#define STATUS_FLOAT_OVERFLOW            (0xC0000091)
#define STATUS_FLOAT_STACK_CHECK         (0xC0000092)
#define STATUS_FLOAT_UNDERFLOW           (0xC0000093)
#define STATUS_INTEGER_DIVIDE_BY_ZERO    (0xC0000094)
#define STATUS_INTEGER_OVERFLOW          (0xC0000095)
#define STATUS_PRIVILEGED_INSTRUCTION    (0xC0000096)
#define STATUS_STACK_OVERFLOW            (0xC00000FD)
#define STATUS_DLL_NOT_FOUND             (0xC0000135)
#define STATUS_ORDINAL_NOT_FOUND         (0xC0000138)
#define STATUS_ENTRYPOINT_NOT_FOUND      (0xC0000139)
#define STATUS_CONTROL_C_EXIT            (0xC000013A)
#define STATUS_DLL_INIT_FAILED           (0xC0000142)
#define STATUS_FLOAT_MULTIPLE_FAULTS     (0xC00002B4)
#define STATUS_FLOAT_MULTIPLE_TRAPS      (0xC00002B5)
#define STATUS_REG_NAT_CONSUMPTION       (0xC00002C9)
#define STATUS_STACK_BUFFER_OVERRUN      (0xC0000409)
#define STATUS_INVALID_CRUNTIME_PARAMETER (0xC0000417)
#define STATUS_ASSERTION_FAILURE         (0xC0000420)


#define WAIT_IO_COMPLETION                  STATUS_USER_APC
#define STILL_ACTIVE                        STATUS_PENDING
#define EXCEPTION_ACCESS_VIOLATION          STATUS_ACCESS_VIOLATION
#define EXCEPTION_DATATYPE_MISALIGNMENT     STATUS_DATATYPE_MISALIGNMENT
#define EXCEPTION_BREAKPOINT                STATUS_BREAKPOINT
#define EXCEPTION_SINGLE_STEP               STATUS_SINGLE_STEP
#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED     STATUS_ARRAY_BOUNDS_EXCEEDED
#define EXCEPTION_FLT_DENORMAL_OPERAND      STATUS_FLOAT_DENORMAL_OPERAND
#define EXCEPTION_FLT_DIVIDE_BY_ZERO        STATUS_FLOAT_DIVIDE_BY_ZERO
#define EXCEPTION_FLT_INEXACT_RESULT        STATUS_FLOAT_INEXACT_RESULT
#define EXCEPTION_FLT_INVALID_OPERATION     STATUS_FLOAT_INVALID_OPERATION
#define EXCEPTION_FLT_OVERFLOW              STATUS_FLOAT_OVERFLOW
#define EXCEPTION_FLT_STACK_CHECK           STATUS_FLOAT_STACK_CHECK
#define EXCEPTION_FLT_UNDERFLOW             STATUS_FLOAT_UNDERFLOW
#define EXCEPTION_INT_DIVIDE_BY_ZERO        STATUS_INTEGER_DIVIDE_BY_ZERO
#define EXCEPTION_INT_OVERFLOW              STATUS_INTEGER_OVERFLOW
#define EXCEPTION_PRIV_INSTRUCTION          STATUS_PRIVILEGED_INSTRUCTION
#define EXCEPTION_IN_PAGE_ERROR             STATUS_IN_PAGE_ERROR
#define EXCEPTION_ILLEGAL_INSTRUCTION       STATUS_ILLEGAL_INSTRUCTION
#define EXCEPTION_NONCONTINUABLE_EXCEPTION  STATUS_NONCONTINUABLE_EXCEPTION
#define EXCEPTION_STACK_OVERFLOW            STATUS_STACK_OVERFLOW
#define EXCEPTION_INVALID_DISPOSITION       STATUS_INVALID_DISPOSITION
#define EXCEPTION_GUARD_PAGE                STATUS_GUARD_PAGE_VIOLATION
#define EXCEPTION_INVALID_HANDLE            STATUS_INVALID_HANDLE
#define EXCEPTION_POSSIBLE_DEADLOCK         STATUS_POSSIBLE_DEADLOCK
#define CONTROL_C_EXIT                      STATUS_CONTROL_C_EXIT


#define EXCEPTION_EXECUTE_HANDLER       1
#define EXCEPTION_CONTINUE_SEARCH       0
#define EXCEPTION_CONTINUE_EXECUTION    -1


#define GENERIC_READ                     (0x80000000)
#define GENERIC_WRITE                    (0x40000000)
#define GENERIC_EXECUTE                  (0x20000000)
#define GENERIC_ALL                      (0x10000000)

#define FILE_FLAG_WRITE_THROUGH         0x80000000
#define FILE_FLAG_OVERLAPPED            0x40000000
#define FILE_FLAG_NO_BUFFERING          0x20000000
#define FILE_FLAG_RANDOM_ACCESS         0x10000000
#define FILE_FLAG_SEQUENTIAL_SCAN       0x08000000
#define FILE_FLAG_DELETE_ON_CLOSE       0x04000000
#define FILE_FLAG_BACKUP_SEMANTICS      0x02000000
#define FILE_FLAG_POSIX_SEMANTICS       0x01000000
#define FILE_FLAG_OPEN_REPARSE_POINT    0x00200000
#define FILE_FLAG_OPEN_NO_RECALL        0x00100000
#define FILE_FLAG_FIRST_PIPE_INSTANCE   0x00080000

#define CREATE_NEW          1
#define CREATE_ALWAYS       2
#define OPEN_EXISTING       3
#define OPEN_ALWAYS         4
#define TRUNCATE_EXISTING   5


#define FILE_SHARE_READ                 0x00000001
#define FILE_SHARE_WRITE                0x00000002
#define FILE_SHARE_DELETE               0x00000004
#define FILE_ATTRIBUTE_READONLY             0x00000001
#define FILE_ATTRIBUTE_HIDDEN               0x00000002
#define FILE_ATTRIBUTE_SYSTEM               0x00000004
#define FILE_ATTRIBUTE_DIRECTORY            0x00000010
#define FILE_ATTRIBUTE_ARCHIVE              0x00000020
#define FILE_ATTRIBUTE_DEVICE               0x00000040
#define FILE_ATTRIBUTE_NORMAL               0x00000080
#define FILE_ATTRIBUTE_TEMPORARY            0x00000100
#define FILE_ATTRIBUTE_SPARSE_FILE          0x00000200
#define FILE_ATTRIBUTE_REPARSE_POINT        0x00000400
#define FILE_ATTRIBUTE_COMPRESSED           0x00000800
#define FILE_ATTRIBUTE_OFFLINE              0x00001000
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED  0x00002000
#define FILE_ATTRIBUTE_ENCRYPTED            0x00004000
#define FILE_ATTRIBUTE_VIRTUAL              0x00010000
#define FILE_NOTIFY_CHANGE_FILE_NAME    0x00000001
#define FILE_NOTIFY_CHANGE_DIR_NAME     0x00000002
#define FILE_NOTIFY_CHANGE_ATTRIBUTES   0x00000004
#define FILE_NOTIFY_CHANGE_SIZE         0x00000008
#define FILE_NOTIFY_CHANGE_LAST_WRITE   0x00000010
#define FILE_NOTIFY_CHANGE_LAST_ACCESS  0x00000020
#define FILE_NOTIFY_CHANGE_CREATION     0x00000040
#define FILE_NOTIFY_CHANGE_SECURITY     0x00000100
#define FILE_ACTION_ADDED                   0x00000001
#define FILE_ACTION_REMOVED                 0x00000002
#define FILE_ACTION_MODIFIED                0x00000003
#define FILE_ACTION_RENAMED_OLD_NAME        0x00000004
#define FILE_ACTION_RENAMED_NEW_NAME        0x00000005
#define MAILSLOT_NO_MESSAGE             (-1)
#define MAILSLOT_WAIT_FOREVER           (-1)
#define FILE_CASE_SENSITIVE_SEARCH          0x00000001
#define FILE_CASE_PRESERVED_NAMES           0x00000002
#define FILE_UNICODE_ON_DISK                0x00000004
#define FILE_PERSISTENT_ACLS                0x00000008
#define FILE_FILE_COMPRESSION               0x00000010
#define FILE_VOLUME_QUOTAS                  0x00000020
#define FILE_SUPPORTS_SPARSE_FILES          0x00000040
#define FILE_SUPPORTS_REPARSE_POINTS        0x00000080
#define FILE_SUPPORTS_REMOTE_STORAGE        0x00000100
#define FILE_VOLUME_IS_COMPRESSED           0x00008000
#define FILE_SUPPORTS_OBJECT_IDS            0x00010000
#define FILE_SUPPORTS_ENCRYPTION            0x00020000
#define FILE_NAMED_STREAMS                  0x00040000
#define FILE_READ_ONLY_VOLUME               0x00080000
#define FILE_SEQUENTIAL_WRITE_ONCE          0x00100000
#define FILE_SUPPORTS_TRANSACTIONS          0x00200000
#define FILE_SUPPORTS_HARD_LINKS            0x00400000
#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES   0x00800000
#define FILE_SUPPORTS_OPEN_BY_FILE_ID       0x01000000
#define FILE_SUPPORTS_USN_JOURNAL           0x02000000


#define HKEY_CLASSES_ROOT                   (0x80000000)
#define HKEY_CURRENT_USER                   (0x80000001)
#define HKEY_LOCAL_MACHINE                  (0x80000002)
#define HKEY_USERS                          (0x80000003)
#define HKEY_PERFORMANCE_DATA               (0x80000004)
#define HKEY_PERFORMANCE_TEXT               (0x80000050)
#define HKEY_PERFORMANCE_NLSTEXT            (0x80000060)


#define RRF_RT_REG_NONE        0x00000001
#define RRF_RT_REG_SZ          0x00000002
#define RRF_RT_REG_EXPAND_SZ   0x00000004
#define RRF_RT_REG_BINARY      0x00000008
#define RRF_RT_REG_DWORD       0x00000010
#define RRF_RT_REG_MULTI_SZ    0x00000020
#define RRF_RT_REG_QWORD       0x00000040
#define RRF_RT_DWORD           (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
#define RRF_RT_QWORD           (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
#define RRF_RT_ANY             0x0000ffff
#define RRF_NOEXPAND           0x10000000
#define RRF_ZEROONFAILURE      0x20000000


#define KEY_QUERY_VALUE         (0x0001)
#define KEY_SET_VALUE           (0x0002)
#define KEY_CREATE_SUB_KEY      (0x0004)
#define KEY_ENUMERATE_SUB_KEYS  (0x0008)
#define KEY_NOTIFY              (0x0010)
#define KEY_CREATE_LINK         (0x0020)
#define KEY_WOW64_32KEY         (0x0200)
#define KEY_WOW64_64KEY         (0x0100)
#define KEY_WOW64_RES           (0x0300)


#define KEY_READ                ((STANDARD_RIGHTS_READ|KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY)&(~SYNCHRONIZE))
#define KEY_WRITE               ((STANDARD_RIGHTS_WRITE|KEY_SET_VALUE|KEY_CREATE_SUB_KEY)&(~SYNCHRONIZE))
#define KEY_EXECUTE             ((KEY_READ)&(~SYNCHRONIZE))
#define KEY_ALL_ACCESS          ((STANDARD_RIGHTS_ALL|KEY_QUERY_VALUE|KEY_SET_VALUE|KEY_CREATE_SUB_KEY|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY|KEY_CREATE_LINK)&(~SYNCHRONIZE))

#define STATUS_INFO_LENGTH_MISMATCH      (0xC0000004L)

#define ERROR_NOT_ALL_ASSIGNED           1300


#define S_OK                     0
#define S_FALSE                  1
#define E_NOINTERFACE            0x80004002
#define E_FAIL                   0x80004005


#define DEBUG_EVENT_BREAKPOINT              0x00000001
#define DEBUG_EVENT_EXCEPTION               0x00000002
#define DEBUG_EVENT_CREATE_THREAD           0x00000004
#define DEBUG_EVENT_EXIT_THREAD             0x00000008
#define DEBUG_EVENT_CREATE_PROCESS          0x00000010
#define DEBUG_EVENT_EXIT_PROCESS            0x00000020
#define DEBUG_EVENT_LOAD_MODULE             0x00000040
#define DEBUG_EVENT_UNLOAD_MODULE           0x00000080
#define DEBUG_EVENT_SYSTEM_ERROR            0x00000100
#define DEBUG_EVENT_SESSION_STATUS          0x00000200
#define DEBUG_EVENT_CHANGE_DEBUGGEE_STATE   0x00000400
#define DEBUG_EVENT_CHANGE_ENGINE_STATE     0x00000800
#define DEBUG_EVENT_CHANGE_SYMBOL_STATE     0x00001000

#define WOW64_MAXIMUM_SUPPORTED_EXTENSION     512
#define WOW64_SIZE_OF_80387_REGISTERS      80


#define REG_NONE                    ( 0 )
#define REG_SZ                      ( 1 )
#define REG_EXPAND_SZ               ( 2 )

#define REG_BINARY                  ( 3 )
#define REG_DWORD                   ( 4 )
#define REG_DWORD_LITTLE_ENDIAN     ( 4 )
#define REG_DWORD_BIG_ENDIAN        ( 5 )
#define REG_LINK                    ( 6 )
#define REG_MULTI_SZ                ( 7 )
#define REG_RESOURCE_LIST           ( 8 )
#define REG_FULL_RESOURCE_DESCRIPTOR ( 9 )
#define REG_RESOURCE_REQUIREMENTS_LIST ( 10 )
#define REG_QWORD                   ( 11 )
#define REG_QWORD_LITTLE_ENDIAN     ( 11 )
