/*
 *  winbase.h   Win32 base functions
 *
 * =========================================================================
 *
 *                          Open Watcom Project
 *
 * Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
 *
 *    This file is automatically generated. Do not edit directly.
 *
 * =========================================================================
 */

#ifndef _WINBASE_
#define _WINBASE_

#ifndef _ENABLE_AUTODEPEND
 #pragma read_only_file;
#endif

#include <winerror.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Macros to specify kernel and advanced functions */
#define WINBASEAPI  DECLSPEC_IMPORT
#define WINADVAPI   DECLSPEC_IMPORT

/* Macro to define an atom identifier */
#define MAKEINTATOM( x )    ((LPTSTR)(ULONG_PTR)(WORD)(x))

/* Invalid return values */
#define INVALID_HANDLE_VALUE        ((HANDLE)(LONG_PTR)-1)
#define INVALID_FILE_SIZE           0xFFFFFFFFL
#define INVALID_SET_FILE_POINTER    0xFFFFFFFFL
#define INVALID_FILE_ATTRIBUTES     0xFFFFFFFFL

/* SetFilePointer() options */
#define FILE_BEGIN      0L
#define FILE_CURRENT    1L
#define FILE_END        2L

/* Invalid time zone identifier */
#define TIME_ZONE_ID_INVALID    0xFFFFFFFFL

/* Return values for wait functions */
#define WAIT_FAILED         0xFFFFFFFFL
#define WAIT_OBJECT_0       STATUS_WAIT_0
#define WAIT_ABANDONED      STATUS_ABANDONED_WAIT_0
#define WAIT_ABANDONED_0    STATUS_ABANDONED_WAIT_0
#define WAIT_IO_COMPLETION  STATUS_USER_APC

/* Return value for GetExitCodeProcess() and GetExitCodeThread() */
#define STILL_ACTIVE    STATUS_PENDING

/* Exception codes */
#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

/* CTRL+C exit value */
#define CONTROL_C_EXIT                      STATUS_CONTROL_C_EXIT

/* File flags */
#define FILE_FLAG_WRITE_THROUGH         0x80000000L
#define FILE_FLAG_OVERLAPPED            0x40000000L
#define FILE_FLAG_NO_BUFFERING          0x20000000L
#define FILE_FLAG_RANDOM_ACCESS         0x10000000L
#define FILE_FLAG_SEQUENTIAL_SCAN       0x08000000L
#define FILE_FLAG_DELETE_ON_CLOSE       0x04000000L
#define FILE_FLAG_BACKUP_SEMANTICS      0x02000000L
#define FILE_FLAG_POSIX_SEMANTICS       0x01000000L
#define FILE_FLAG_OPEN_REPARSE_POINT    0x00200000L
#define FILE_FLAG_OPEN_NO_RECALL        0x00100000L
#define FILE_FLAG_FIRST_PIPE_INSTANCE   0x00080000L

/* File creation disposition */
#define CREATE_NEW          1L
#define CREATE_ALWAYS       2L
#define OPEN_EXISTING       3L
#define OPEN_ALWAYS         4L
#define TRUNCATE_EXISTING   5L

/* CopyFileEx() callback return codes */
#if (_WIN32_WINNT >= 0x0400)
    #define PROGRESS_CONTINUE   0L
    #define PROGRESS_CANCEL     1L
    #define PROGRESS_STOP       2L
    #define PROGRESS_QUIET      3L
#endif

/* CopyFileEx() callback flags */
#if (_WIN32_WINNT >= 0x0400)
    #define CALLBACK_CHUNK_FINISHED 0x00000000L
    #define CALLBACK_STREAM_SWITCH  0x00000001L
#endif

/* CopyFileEx() flags */
#if (_WIN32_WINNT >= 0x0400)
    #define COPY_FILE_FAIL_IF_EXISTS                0x00000001L
    #define COPY_FILE_RESTARTABLE                   0x00000002L
    #define COPY_FILE_OPEN_SOURCE_FOR_WRITE         0x00000004L
    #define COPY_FILE_ALLOW_DECRYPTED_DESTINATION   0x00000008L
#endif
#if (_WIN32_WINNT >= 0x0600)
    #define COPY_FILE_COPY_SYMLINK                  0x00000800L
    #define COPY_FILE_NO_BUFFERING                  0x00001000L
#endif

/* ReplaceFile() flags */
#if (_WIN32_WINNT >= 0x0500)
    #define REPLACEFILE_WRITE_THROUGH       0x00000001L
    #define REPLACEFILE_IGNORE_MERGE_ERRORS 0x00000002L
#endif
#if (_WIN32_WINNT >= 0x0600)
    #define REPLACEFILE_IGNORE_ACL_ERRORS   0x00000004L
#endif

/* Named pipe open modes */
#define PIPE_ACCESS_INBOUND     0x00000001L
#define PIPE_ACCESS_OUTBOUND    0x00000002L
#define PIPE_ACCESS_DUPLEX      0x00000003L

/* Named pipe end flags */
#define PIPE_CLIENT_END 0x00000000L
#define PIPE_SERVER_END 0x00000001L

/* Named pipe modes */
#define PIPE_WAIT                   0x00000000L
#define PIPE_NOWAIT                 0x00000001L
#define PIPE_READMODE_BYTE          0x00000000L
#define PIPE_READMODE_MESSAGE       0x00000002L
#define PIPE_TYPE_BYTE              0x00000000L
#define PIPE_TYPE_MESSAGE           0x00000004L
#define PIPE_ACCEPT_REMOTE_CLIENTS  0x00000000L
#define PIPE_REJECT_REMOTE_CLIENTS  0x00000008L

/* Special maximum instance values for CreateNamedPipe() */
#define PIPE_UNLIMITED_INSTANCES    255

/* Security quality of service flags for CreateFile() */
#define SECURITY_ANONYMOUS          (SecurityAnonymous << 16)
#define SECURITY_IDENTIFICATION     (SecurityIdentification << 16)
#define SECURITY_IMPERSONATION      (SecurityImpersonation << 16)
#define SECURITY_DELEGATION         (SecurityDelegation << 16)
#define SECURITY_CONTEXT_TRACKING   0x00040000L
#define SECURITY_EFFECTIVE_ONLY     0x00080000L
#define SECURITY_SQOS_PRESENT       0x00100000L
#define SECURITY_VALID_SQOS_FLAGS   0x001F0000L

/* Run once flags */
#define INIT_ONCE_CHECK_ONLY    RTL_RUN_ONCE_CHECK_ONLY
#define INIT_ONCE_ASYNC         RTL_RUN_ONCE_ASYNC
#define INIT_ONCE_INIT_FAILED   RTL_RUN_ONCE_INIT_FAILED

/* RaiseFailFastException() flags */
#define FAIL_FAST_GENERATE_EXCEPTION_ADDRESS    0x00000001L
#define FAIL_FAST_NO_HARD_ERROR_DLG             0x00000002L

/* Condition variable flags */
#define CONDITION_VARIABLE_LOCKMODE_SHARED  RTL_CONDITION_VARIABLE_LOCKMODE_SHARED

/* Mutex access rights */
#define MUTEX_MODIFY_STATE  MUTANT_QUERY_STATE
#define MUTEX_ALL_ACCESS    MUTANT_ALL_ACCESS

/* Communications provider type */
#define SP_SERIALCOMM   0x00000001L

/* Communications provider subtypes */
#define PST_UNSPECIFIED     0x00000000L
#define PST_RS232           0x00000001L
#define PST_PARALLELPORT    0x00000002L
#define PST_RS422           0x00000003L
#define PST_RS423           0x00000004L
#define PST_RS449           0x00000005L
#define PST_MODEM           0x00000006L
#define PST_FAX             0x00000021L
#define PST_SCANNER         0x00000022L
#define PST_NETWORK_BRIDGE  0x00000100L
#define PST_LAT             0x00000101L
#define PST_TCPIP_TELNET    0x00000102L
#define PST_X25             0x00000103L

/* Communications provider capabilities flags */
#define PCF_DTRDSR          0x00000001L
#define PCF_RTSCTS          0x00000002L
#define PCF_RLSD            0x00000004L
#define PCF_PARITY_CHECK    0x00000008L
#define PCF_XONXOFF         0x00000010L
#define PCF_SETXCHAR        0x00000020L
#define PCF_TOTALTIMEOUTS   0x00000040L
#define PCF_INTTIMEOUTS     0x00000080L
#define PCF_SPECIALCHARS    0x00000100L
#define PCF_16BITMODE       0x00000200L

/* Communications settable parameters */
#define SP_PARITY       0x00000001L
#define SP_BAUD         0x00000002L
#define SP_DATABITS     0x00000004L
#define SP_STOPBITS     0x00000008L
#define SP_HANDSHAKING  0x00000010L
#define SP_PARITY_CHECK 0x00000020L
#define SP_RLSD         0x00000040L

/* Communications baud rates */
#define BAUD_075    0x00000001L
#define BAUD_110    0x00000002L
#define BAUD_134_5  0x00000004L
#define BAUD_150    0x00000008L
#define BAUD_300    0x00000010L
#define BAUD_600    0x00000020L
#define BAUD_1200   0x00000040L
#define BAUD_1800   0x00000080L
#define BAUD_2400   0x00000100L
#define BAUD_4800   0x00000200L
#define BAUD_7200   0x00000400L
#define BAUD_9600   0x00000800L
#define BAUD_14400  0x00001000L
#define BAUD_19200  0x00002000L
#define BAUD_38400  0x00004000L
#define BAUD_56K    0x00008000L
#define BAUD_128K   0x00010000L
#define BAUD_115200 0x00020000L
#define BAUD_57600  0x00040000L
#define BAUD_USER   0x10000000L

/* Communications data bits */
#define DATABITS_5      0x0001
#define DATABITS_6      0x0002
#define DATABITS_7      0x0004
#define DATABITS_8      0x0008
#define DATABITS_16     0x0010
#define DATABITS_16X    0x0020

/* Stop bits and parity flags */
#define STOPBITS_10     0x0001
#define STOPBITS_15     0x0002
#define STOPBITS_20     0x0004
#define PARITY_NONE     0x0100
#define PARITY_ODD      0x0200
#define PARITY_EVEN     0x0400
#define PARITY_MARK     0x0800
#define PARITY_SPACE    0x1000

/* Special value used with COMMPROP */
#define COMMPROP_INITIALIZED 0xE73CF52EL

/* DTR control values */
#define DTR_CONTROL_DISABLE     0x00
#define DTR_CONTROL_ENABLE      0x01
#define DTR_CONTROL_HANDSHAKE   0x02

/* RTS control values */
#define RTS_CONTROL_DISABLE     0x00
#define RTS_CONTROL_ENABLE      0x01
#define RTS_CONTROL_HANDSHAKE   0x02
#define RTS_CONTROL_TOGGLE      0x03

/* Global memory flags */
#define GMEM_FIXED          0x0000
#define GMEM_MOVEABLE       0x0002
#define GMEM_NOCOMPACT      0x0010
#define GMEM_NODISCARD      0x0020
#define GMEM_ZEROINIT       0x0040
#define GMEM_MODIFY         0x0080
#define GMEM_DISCARDABLE    0x0100
#define GMEM_NOT_BANKED     0x1000
#define GMEM_SHARE          0x2000
#define GMEM_DDESHARE       0x2000
#define GMEM_NOTIFY         0x4000
#define GMEM_LOWER          GMEM_NOT_BANKED
#define GMEM_VALID_FLAGS    0x7F72
#define GMEM_INVALID_HANDLE 0x8000
#define GHND                (GMEM_MOVEABLE | GMEM_ZEROINIT)
#define GPTR                (GMEM_FIXED | GMEM_ZEROINIT)

/* Flags used with GlobalFlags() */
#define GMEM_DISCARDED  0x4000
#define GMEM_LOCKCOUNT  0x00FF

/* Local memory flags */
#define LMEM_FIXED          0x0000
#define LMEM_MOVEABLE       0x0002
#define LMEM_NOCOMPACT      0x0010
#define LMEM_NODISCARD      0x0020
#define LMEM_ZEROINIT       0x0040
#define LMEM_MODIFY         0x0080
#define LMEM_DISCARDABLE    0x0F00
#define LMEM_VALID_FLAGS    0x0F72
#define LMEM_INVALID_HANDLE 0x8000
#define LHND                (LMEM_MOVEABLE | LMEM_ZEROINIT)
#define LPTR                (LMEM_FIXED | LMEM_ZEROINIT)
#define NONZEROLHND         (LMEM_MOVEABLE)
#define NONZEROLPTR         (LMEM_FIXED)

/* Flags used with LocalFlags() */
#define LMEM_DISCARDED  0x4000
#define LMEM_LOCKCOUNT  0x00FF

/* Numa special values */
#define NUMA_NO_PREFERRED_NODE  0xFFFFFFFFL

/* Process creation flags */
#define DEBUG_PROCESS                       0x00000001L
#define DEBUG_ONLY_THIS_PROCESS             0x00000002L
#define CREATE_SUSPENDED                    0x00000004L
#define DETACHED_PROCESS                    0x00000008L
#define CREATE_NEW_CONSOLE                  0x00000010L
#define NORMAL_PRIORITY_CLASS               0x00000020L
#define IDLE_PRIORITY_CLASS                 0x00000040L
#define HIGH_PRIORITY_CLASS                 0x00000080L
#define REALTIME_PRIORITY_CLASS             0x00000100L
#define CREATE_NEW_PROCESS_GROUP            0x00000200L
#define CREATE_UNICODE_ENVIRONMENT          0x00000400L
#define CREATE_SEPARATE_WOW_VDM             0x00000800L
#define CREATE_SHARED_WOW_VDM               0x00001000L
#define CREATE_FORCEDOS                     0x00002000L
#define BELOW_NORMAL_PRIORITY_CLASS         0x00004000L
#define ABOVE_NORMAL_PRIORITY_CLASS         0x00008000L
#define INHERIT_PARENT_AFFINITY             0x00010000L
#define INHERIT_CALLER_PRIORITY             0x00020000L
#define CREATE_PROTECTED_PROCESS            0x00040000L
#define EXTENDED_STARTUPINFO_PRESENT        0x00080000L
#define PROCESS_MODE_BACKGROUND_BEGIN       0x00100000L
#define PROCESS_MODE_BACKGROUND_END         0x00200000L
#define CREATE_BREAKAWAY_FROM_JOB           0x01000000L
#define CREATE_PRESERVE_CODE_AUTHZ_LEVEL    0x02000000L
#define CREATE_DEFAULT_ERROR_MODE           0x04000000L
#define CREATE_NO_WINDOW                    0x08000000L
#define PROFILE_USER                        0x10000000L
#define PROFILE_KERNEL                      0x20000000L
#define PROFILE_SERVER                      0x40000000L
#define CREATE_IGNORE_SYSTEM_DEFAULT        0x80000000L

/* Thread creation flags */
#define STACK_SIZE_PARAM_IS_A_RESERVATION   0x00010000L

/* Thread priority values */
#define THREAD_PRIORITY_LOWEST          THREAD_BASE_PRIORITY_MIN
#define THREAD_PRIORITY_BELOW_NORMAL    (THREAD_PRIORITY_LOWEST + 1)
#define THREAD_PRIORITY_NORMAL          0
#define THREAD_PRIORITY_HIGHEST         THREAD_BASE_PRIORITY_MAX
#define THREAD_PRIORITY_ABOVE_NORMAL    (THREAD_PRIORITY_HIGHEST - 1)
#define THREAD_PRIORITY_ERROR_RETURN    MAXLONG
#define THREAD_PRIORITY_TIME_CRITICAL   THREAD_BASE_PRIORITY_LOWRT
#define THREAD_PRIORITY_IDLE            THREAD_BASE_PRIORITY_IDLE

/* Thread modes */
#define THREAD_MODE_BACKGROUND_BEGIN    0x00010000L
#define THREAD_MODE_BACKGROUND_END      0x00020000L

/* GetFinalPathNameByHandle() flags */
#define VOLUME_NAME_DOS         0x00000000L
#define VOLUME_NAME_GUID        0x00000001L
#define VOLUME_NAME_NT          0x00000002L
#define VOLUME_NAME_NONE        0x00000004L
#define FILE_NAME_NORMALIZED    0x00000000L
#define FILE_NAME_OPENED        0x00000008L

/* Debug event types */
#define EXCEPTION_DEBUG_EVENT       1L
#define CREATE_THREAD_DEBUG_EVENT   2L
#define CREATE_PROCESS_DEBUG_EVENT  3L
#define EXIT_THREAD_DEBUG_EVENT     4L
#define EXIT_PROCESS_DEBUG_EVENT    5L
#define LOAD_DLL_DEBUG_EVENT        6L
#define UNLOAD_DLL_DEBUG_EVENT      7L
#define OUTPUT_DEBUG_STRING_EVENT   8L
#define RIP_EVENT                   9L

/* Drive types */
#define DRIVE_UNKNOWN       0
#define DRIVE_NO_ROOT_DIR   1
#define DRIVE_REMOVABLE     2
#define DRIVE_FIXED         3
#define DRIVE_REMOTE        4
#define DRIVE_CDROM         5
#define DRIVE_RAMDISK       6

/* File types */
#define FILE_TYPE_UNKNOWN   0x00000000L
#define FILE_TYPE_DISK      0x00000001L
#define FILE_TYPE_CHAR      0x00000002L
#define FILE_TYPE_PIPE      0x00000003L
#define FILE_TYPE_REMOTE    0x00008000L

/* Standard handles */
#define STD_INPUT_HANDLE    ((DWORD)-10)
#define STD_OUTPUT_HANDLE   ((DWORD)-11)
#define STD_ERROR_HANDLE    ((DWORD)-12)

/* Communications parity values */
#define NOPARITY    0
#define ODDPARITY   1
#define EVENPARITY  2
#define MARKPARITY  3
#define SPACEPARITY 4

/* Communications stop bits */
#define ONESTOPBIT      0
#define ONE5STOPBITS    1
#define TWOSTOPBITS     2

/* Infinite timeout value */
#define INFINITE    0xFFFFFFFFL

/* Communications baud rates */
#define CBR_110     110L
#define CBR_300     300L
#define CBR_600     600L
#define CBR_1200    1200L
#define CBR_2400    2400L
#define CBR_4800    4800L
#define CBR_9600    9600L
#define CBR_14400   14400L
#define CBR_19200   19200L
#define CBR_38400   38400L
#define CBR_56000   56000L
#define CBR_57600   57600L
#define CBR_115200  115200L
#define CBR_128000  128000L
#define CBR_256000  256000L

/* Communications error flags */
#define CE_RXOVER   0x00000001L
#define CE_OVERRUN  0x00000002L
#define CE_RXPARITY 0x00000004L
#define CE_FRAME    0x00000008L
#define CE_BREAK    0x00000010L
#define CE_TXFULL   0x00000100L
#define CE_PTO      0x00000200L
#define CE_IOE      0x00000400L
#define CE_DNS      0x00000800L
#define CE_OOP      0x00001000L
#define CE_MODE     0x00008000L

/* Communications events */
#define EV_RXCHAR   0x00000001L
#define EV_RXFLAG   0x00000002L
#define EV_TXEMPTY  0x00000004L
#define EV_CTS      0x00000008L
#define EV_DSR      0x00000010L
#define EV_RLSD     0x00000020L
#define EV_BREAK    0x00000040L
#define EV_ERR      0x00000080L
#define EV_RING     0x00000100L
#define EV_PERR     0x00000200L
#define EV_RX80FULL 0x00000400L
#define EV_EVENT1   0x00000800L
#define EV_EVENT2   0x00001000L

/* Communications escape functions */
#define SETXOFF     1L
#define SETXON      2L
#define SETRTS      3L
#define CLRRTS      4L
#define SETDTR      5L
#define CLRDTR      6L
#define RESETDEV    7L
#define SETBREAK    8L
#define CLRBREAK    9L

/* PurgeComm() flags */
#define PURGE_TXABORT   0x00000001L
#define PURGE_RXABORT   0x00000002L
#define PURGE_TXCLEAR   0x00000004L
#define PURGE_RXCLEAR   0x00000008L

/* Communications modem status flags */
#define MS_CTS_ON   0x00000010L
#define MS_DSR_ON   0x00000020L
#define MS_RING_ON  0x00000040L
#define MS_RLSD_ON  0x00000080L

/* WaitNamedPipe() special timeout values */
#define NMPWAIT_WAIT_FOREVER        0xFFFFFFFFL
#define NMPWAIT_NOWAIT              0x00000001L
#define NMPWAIT_USE_DEFAULT_WAIT    0x00000000L

/* File system flags */
#define FS_CASE_IS_PRESERVED        FILE_CASE_PRESERVED_NAMES
#define FS_CASE_SENSITIVE           FILE_CASE_SENSITIVE_SEARCH
#define FS_UNICODE_STORED_ON_DISK   FILE_UNICODE_ON_DISK
#define FS_PERSISTENT_ACLS          FILE_PERSISTENT_ACLS
#define FS_VOL_IS_COMPRESSED        FILE_VOLUME_IS_COMPRESSED
#define FS_FILE_COMPRESSION         FILE_FILE_COMPRESSION
#define FS_FILE_ENCRYPTION          FILE_SUPPORTS_ENCRYPTION

/* File mapping access rights */
#define FILE_MAP_COPY       SECTION_QUERY
#define FILE_MAP_WRITE      SECTION_MAP_WRITE
#define FILE_MAP_READ       SECTION_MAP_READ
#define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
#define FILE_MAP_EXECUTE    SECTION_MAP_EXECUTE_EXPLICIT

/* OpenFile() flags */
#define OF_READ             0x00000000
#define OF_WRITE            0x00000001
#define OF_READWRITE        0x00000002
#define OF_SHARE_COMPAT     0x00000000
#define OF_SHARE_EXCLUSIVE  0x00000010
#define OF_SHARE_DENY_WRITE 0x00000020
#define OF_SHARE_DENY_READ  0x00000030
#define OF_SHARE_DENY_NONE  0x00000040
#define OF_PARSE            0x00000100
#define OF_DELETE           0x00000200
#define OF_VERIFY           0x00000400
#define OF_CANCEL           0x00000800
#define OF_CREATE           0x00001000
#define OF_PROMPT           0x00002000
#define OF_EXIST            0x00004000
#define OF_REOPEN           0x00008000

/* Maximum path name size for OFSTRUCT */
#define OFS_MAXPATHNAME 128

/* Process heap flags */
#define PROCESS_HEAP_REGION             0x0001
#define PROCESS_HEAP_UNCOMMITTED_RANGE  0x0002
#define PROCESS_HEAP_ENTRY_BUSY         0x0004
#define PROCESS_HEAP_ENTRY_MOVEABLE     0x0010
#define PROCESS_HEAP_ENTRY_DDESHARE     0x0020

/* GetBinaryType() return values */
#define SCS_32BIT_BINARY            0L
#define SCS_DOS_BINARY              1L
#define SCS_WOW_BINARY              2L
#define SCS_PIF_BINARY              3L
#define SCS_POSIX_BINARY            4L
#define SCS_OS216_BINARY            5L
#define SCS_64BIT_BINARY            6L
#define SCS_THIS_PLATFORM_BINARY    SCS_32BIT_BINARY

/* Process affinity update mode flags */
#if (_WIN32_WINNT >= 0x0600)
    #define PROCESS_AFFINITY_ENABLE_AUTO_UPDATE 0x00000001L
#endif

/* CreateFiberEx() flags */
#if (_WIN32_WINNT >= 0x0400)
    #define FIBER_FLAG_FLOAT_SWITCH 0x00000001L
#endif

/* Process data execution prevention (DEP) flags */
#if (_WIN32_WINNT >= 0x0600)
    #define PROCESS_DEP_ENABLE                      0x00000001L
    #define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 0x00000002L
#endif

/* SetFileCompletionNotificationModes() flags */
#if (_WIN32_WINNT >= 0x0600)
    #define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS    0x01
    #define FILE_SKIP_SET_EVENT_ON_HANDLE           0x02
#endif

/* SetErrorMode() modes */
#define SEM_FAILCRITICALERRORS      0x0001
#define SEM_NOGPFAULTERRORBOX       0x0002
#define SEM_NOALIGNMENTFAULTEXCEPT  0x0004
#define SEM_NOOPENFILEERRORBOX      0x8000

/* Critical section flags */
#if (_WIN32_WINNT >= 0x0403)
    #define CRITICAL_SECTION_NO_DEBUG_INFO  RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO
#endif

/* LockFileEx() flags */
#define LOCKFILE_FAIL_IMMEDIATELY   0x00000001L
#define LOCKFILE_EXCLUSIVE_LOCK     0x00000002L

/* Handle flags */
#define HANDLE_FLAG_INHERIT             0x00000001L
#define HANDLE_FLAG_PROTECT_FROM_CLOSE  0x00000002L

/* Invalid instance handle value */
#define HINSTANCE_ERROR 32

/* GetTapeParameters() operations */
#define GET_TAPE_MEDIA_INFORMATION  0L
#define GET_TAPE_DRIVE_INFORMATION  1L

/* SetTapeParameters() operations */
#define SET_TAPE_MEDIA_INFORMATION  0L
#define SET_TAPE_DRIVE_INFORMATION  1L

/* File cache flags */
#if (_WIN32_WINNT >= 0x0502)
    #define FILE_CACHE_MAX_HARD_ENABLE  0x00000001L
    #define FILE_CACHE_MAX_HARD_DISABLE 0x00000002L
    #define FILE_CACHE_MIN_HARD_ENABLE  0x00000004L
    #define FILE_CACHE_MIN_HARD_DISABLE 0x00000008L
#endif

/* FormatMessage() flags */
#define FORMAT_MESSAGE_ALLOCATE_BUFFER  0x00000100L
#define FORMAT_MESSAGE_IGNORE_INSERTS   0x00000200L
#define FORMAT_MESSAGE_FROM_STRING      0x00000400L
#define FORMAT_MESSAGE_FROM_HMODULE     0x00000800L
#define FORMAT_MESSAGE_FROM_SYSTEM      0x00001000L
#define FORMAT_MESSAGE_ARGUMENT_ARRAY   0x00002000L
#define FORMAT_MESSAGE_MAX_WIDTH_MASK   0x000000FFL

/* File encryption status values */
#define FILE_ENCRYPTABLE        0L
#define FILE_IS_ENCRYPTED       1L
#define FILE_SYSTEM_ATTR        2L
#define FILE_ROOT_DIR           3L
#define FILE_SYSTEM_DIR         4L
#define FILE_UNKNOWN            5L
#define FILE_SYSTEM_NOT_SUPPORT 6L
#define FILE_USER_DISALLOWED    7L
#define FILE_READ_ONLY          8L
#define FILE_DIR_DISALLOWED     9L

/* OpenEncryptedFileRaw() flags */
#define CREATE_FOR_IMPORT   1L
#define CREATE_FOR_DIR      2L
#define OVERWRITE_HIDDEN    4L
#define EFSRPC_SECURE_ONLY  8L

/* FLS and TLS error values */
#define FLS_OUT_OF_INDEXES  0xFFFFFFFFL
#define TLS_OUT_OF_INDEXES  0xFFFFFFFFL

/* Stream identifiers */
#define BACKUP_INVALID          0x00000000L
#define BACKUP_DATA             0x00000001L
#define BACKUP_EA_DATA          0x00000002L
#define BACKUP_SECURITY_DATA    0x00000003L
#define BACKUP_ALTERNATE_DATA   0x00000004L
#define BACKUP_LINK             0x00000005L
#define BACKUP_PROPERTY_DATA    0x00000006L
#define BACKUP_OBJECT_ID        0x00000007L
#define BACKUP_REPARSE_DATA     0x00000008L
#define BACKUP_SPARSE_BLOCK     0x00000009L
#define BACKUP_TXFS_DATA        0x0000000AL

/* Stream attributes */
#define STREAM_NORMAL_ATTRIBUTE     0x00000000L
#define STREAM_MODIFIED_WHEN_READ   0x00000001L
#define STREAM_CONTAINS_SECURITY    0x00000002L
#define STREAM_CONTAINS_PROPERTIES  0x00000004L
#define STREAM_SPARSE_ATTRIBUTE     0x00000008L

/* Startup information flags */
#define STARTF_USESHOWWINDOW        0x00000001L
#define STARTF_USESIZE              0x00000002L
#define STARTF_USEPOSITION          0x00000004L
#define STARTF_USECOUNTCHARS        0x00000008L
#define STARTF_USEFILLATTRIBUTE     0x00000010L
#define STARTF_RUNFULLSCREEN        0x00000020L
#define STARTF_FORCEONFEEDBACK      0x00000040L
#define STARTF_FORCEOFFFEEDBACK     0x00000080L
#define STARTF_USESTDHANDLES        0x00000100L
#if (WINVER >= 0x0400)
    #define STARTF_USEHOTKEY        0x00000200L
    #define STARTF_TITLEISLINKNAME  0x00000800L
    #define STARTF_TITLEISAPPID     0x00001000L
    #define STARTF_PREVENTPINNING   0x00002000L
#endif

/* Process shutdown flags */
#define SHUTDOWN_NORETRY    0x00000001L

/* CreateMutexEx() flags */
#if (_WIN32_WINNT >= 0x0600)
    #define CREATE_MUTEX_INITIAL_OWNER  0x00000001L
#endif

/* CreateEventEx() flags */
#if (_WIN32_WINNT >= 0x0600)
    #define CREATE_EVENT_MANUAL_RESET   0x00000001L
    #define CREATE_EVENT_INITIAL_SET    0x00000002L
#endif

/* CreateWaitableTimerEx() flags */
#if (_WIN32_WINNT >= 0x0600)
    #define CREATE_WAITABLE_TIMER_MANUAL_RESET  0x00000001L
#endif

/* LoadLibraryEx() flags */
#define DONT_RESOLVE_DLL_REFERENCES         0x00000001L
#define LOAD_LIBRARY_AS_DATAFILE            0x00000002L
#define LOAD_WITH_ALTERED_SEARCH_PATH       0x00000008L
#define LOAD_IGNORE_CODE_AUTHZ_LEVEL        0x00000010L
#define LOAD_LIBRARY_AS_IMAGE_RESOURCE      0x00000020L
#define LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE  0x00000040L
#define LOAD_LIBRARY_REQUIRE_SIGNED_TARGET  0x00000080L

/* GetModuleHandleEx() flags */
#if (_WIN32_WINNT >= 0x0501)
    #define GET_MODULE_HANDLE_EX_FLAG_PIN                   0x00000001L
    #define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT    0x00000002L
    #define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS          0x00000004L
#endif

/* QueryFullProcessImageName() flags */
#if (_WIN32_WINNT >= 0x0600)
    #define PROCESS_NAME_NATIVE 0x00000001L
#endif

/* DefineDosDevice() flags */
#define DDD_RAW_TARGET_PATH         0x00000001L
#define DDD_REMOVE_DEFINITION       0x00000002L
#define DDD_EXACT_MATCH_ON_REMOVE   0x00000004L
#define DDD_NO_BROADCAST_SYSTEM     0x00000008L
#define DDD_LUID_BROADCAST_DEVICE   0x00000010L

/* FindFirstFileEx() flags */
#if (_WIN32_WINNT >= 0x0400)
    #define FIND_FIRST_EX_CASE_SENSITIVE    0x00000001L
    #define FIND_FIRST_EX_LARGE_FETCH       0x00000002L
#endif

/* Process and thread attributes */
#if (_WIN32_WINNT >= 0x0600)
    #define PROC_THREAD_ATTRIBUTE_NUMBER    0x0000FFFFL
    #define PROC_THREAD_ATTRIBUTE_THREAD    0x00010000L
    #define PROC_THREAD_ATTRIBUTE_INPUT     0x00020000L
    #define PROC_THREAD_ATTRIBUTE_ADDITIVE  0x00040000L
#endif

/* Process creation mitigation policy flags */
#if (_WIN32_WINNT >= 0x0600)
    #define PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE           0x00000001L
    #define PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE 0x00000002L
    #define PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE         0x00000004L
#endif

/* UpdateProcThreadAttribute() flags */
#if (_WIN32_WINNT >= 0x0600)
    #define PROC_THREAD_ATTRIBUTE_REPLACE_VALUE 0x00000001L
#endif

/* Resource enumeration flags */
#define RESOURCE_ENUM_LN            0x00000001L
#define RESOURCE_ENUM_MUI           0x00000002L
#define RESOURCE_ENUM_MUI_SYSTEM    0x00000004L
#define RESOURCE_ENUM_VALIDATE      0x00000008L
#define RESOURCE_ENUM_MODULE_EXACT  0x00000010L

/* SetSearchPathMode() flags */
#define BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE     0x00000001L
#define BASE_SEARCH_PATH_DISABLE_SAFE_SEARCHMODE    0x00010000L
#define BASE_SEARCH_PATH_PERMANENT                  0x00008000L

/* MoveFileEx() and MoveFileWithProgress() flags */
#define MOVEFILE_REPLACE_EXISTING           0x00000001L
#define MOVEFILE_COPY_ALLOWED               0x00000002L
#define MOVEFILE_DELAY_UNTIL_REBOOT         0x00000004L
#define MOVEFILE_WRITE_THROUGH              0x00000008L
#if (_WIN32_WINNT >= 0x0500)
    #define MOVEFILE_CREATE_HARDLINK        0x00000010L
    #define MOVEFILE_FAIL_IF_NOT_TRACKABLE  0x00000020L
#endif

/* Event log information classes */
#define EVENTLOG_FULL_INFO  0

/* Maximum computer name length */
#define MAX_COMPUTERNAME_LENGTH 15

/* Logon types */
#define LOGON32_LOGON_INTERACTIVE           2L
#define LOGON32_LOGON_NETWORK               3L
#define LOGON32_LOGON_BATCH                 4L
#define LOGON32_LOGON_SERVICE               5L
#define LOGON32_LOGON_UNLOCK                7L
#if (_WIN32_WINNT >= 0x0500)
    #define LOGON32_LOGON_NETWORK_CLEARTEXT 8L
    #define LOGON32_LOGON_NEW_CREDENTIALS   9L
#endif
/* Logon providers */
#define LOGON32_PROVIDER_DEFAULT        0L
#define LOGON32_PROVIDER_WINNT35        1L
#if (_WIN32_WINNT >= 0x0400)
    #define LOGON32_PROVIDER_WINNT40    2L
#endif
#if (_WIN32_WINNT >= 0x0500)
    #define LOGON32_PROVIDER_WINNT50    3L
#endif
#if (_WIN32_WINNT >= 0x0600)
    #define LOGON32_PROVIDER_VIRTUAL    4L
#endif

/* CreateProcessWithLogonW() flags */
#if (_WIN32_WINNT >= 0x0500)
    #define LOGON_WITH_PROFILE          0x00000001L
    #define LOGON_NETCREDENTIALS_ONLY   0x00000002L
    #define LOGON_ZERO_PASSWORD_BUFFER  0x80000000L
#endif

/* Hardware profile GUID length */
#if (_WIN32_WINNT >= 0x0400)
    #define HW_PROFILE_GUIDLEN  39
#endif

/* Maximum hardware profile name length */
#if (_WIN32_WINNT >= 0x0400)
    #define MAX_PROFILE_LEN 80
#endif

/* Hardware profile docking flags */
#if (_WIN32_WINNT >= 0x0400)
    #define DOCKINFO_UNDOCKED       0x00000001L
    #define DOCKINFO_DOCKED         0x00000002L
    #define DOCKINFO_USER_SUPPLIED  0x00000004L
    #define DOCKINFO_USER_UNDOCKED  (DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED)
    #define DOCKINFO_USER_DOCKED    (DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED)
#endif

/* AC line status values */
#if (WINVER >= 0x0400)
    #define AC_LINE_OFFLINE         0x00
    #define AC_LINE_ONLINE          0x01
    #define AC_LINE_BACKUP_POWER    0x02
    #define AC_LINE_UNKNOWN         0xFF
#endif

/* Battery flags */
#if (WINVER >= 0x0400)
    #define BATTERY_FLAG_HIGH       0x01
    #define BATTERY_FLAG_LOW        0x02
    #define BATTERY_FLAG_CRITICAL   0x04
    #define BATTERY_FLAG_CHARGING   0x08
    #define BATTERY_FLAG_NO_BATTERY 0x80
    #define BATTERY_FLAG_UNKNOWN    0xFF
#endif

/* Battery percentage special value */
#if (WINVER >= 0x0400)
    #define BATTERY_PERCENTAGE_UNKNOWN  0xFF
#endif

/* Battery life special value */
#if (WINVER >= 0x0400)
    #define BATTERY_LIFE_UNKNOWN    0xFFFFFFFFL
#endif

/* ClosePrivateNamespcae() flags */
#if (_WIN32_WINNT >= 0x0600)
    #define PRIVATE_NAMESPACE_FLAG_DESTROY  0x00000001L
#endif

/* Activation context flags */
#if (_WIN32_WINNT >= 0x0500)
    #define ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID    0x00000001L
    #define ACTCTX_FLAG_LANGID_VALID                    0x00000002L
    #define ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID        0x00000004L
    #define ACTCTX_FLAG_RESOURCE_NAME_VALID             0x00000008L
    #define ACTCTX_FLAG_SET_PROCESS_DEFAULT             0x00000010L
    #define ACTCTX_FLAG_APPLICATION_NAME_VALID          0x00000020L
    #define ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF           0x00000040L
    #define ACTCTX_FLAG_HMODULE_VALID                   0x00000080L
#endif

/* DeactivateActCtx() flags */
#if (_WIN32_WINNT >= 0x0500)
    #define DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION 0x00000001L
#endif

/* FindActCtxSectionString() and FindActCtxSectionGuid() flags */
#if (_WIN32_WINNT >= 0x0500)
    #define FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX              0x00000001L
    #define FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS                0x00000002L
    #define FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA    0x00000004L
#endif

/* QueryActCtxW() flags */
#if (_WIN32_WINNT >= 0x0500)
    #define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX 0x00000004L
    #define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE 0x00000008L
    #define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS 0x00000010L
    #define QUERY_ACTCTX_FLAG_NO_ADDREF         0x80000000L
#endif

/* Maximum command line length */
#define RESTART_MAX_CMD_LINE    1024

/* Restart flags */
#define RESTART_NO_CRASH    1L
#define RESTART_NO_HANG     2L
#define RESTART_NO_PATCH    4L
#define RESTART_NO_REBOOT   8L

/* Application recovery constants */
#define RECOVERY_DEFAULT_PING_INTERVAL  5000L
#define RECOVERY_MAX_PING_INTERVAL      300000L

/* File remote protocol information flags */
#if (_WIN32_WINNT >= 0x0600)
    #define REMOTE_PROTOCOL_INFO_FLAG_LOOPBACK  0x00000001L
    #define REMOTE_PROTOCOL_INFO_FLAG_OFFLINE   0x00000002L
#endif

/* Symbolic link flags */
#if (_WIN32_WINNT >= 0x0600)
    #define SYMBOLIC_LINK_FLAG_DIRECTORY    0x00000001L
    #define VALID_SYMBOLIC_LINK_FLAGS       SYMBOLIC_LINK_FLAG_DIRECTORY
#endif

/* Aliases for types defined in winnt.h */
typedef RTL_CRITICAL_SECTION        CRITICAL_SECTION;
typedef PRTL_CRITICAL_SECTION       PCRITICAL_SECTION;
typedef PRTL_CRITICAL_SECTION       LPCRITICAL_SECTION;
typedef RTL_CRITICAL_SECTION_DEBUG  CRITICAL_SECTION_DEBUG;
typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG;
#if defined(_X86_)
typedef PLDT_ENTRY                  LPLDT_ENTRY;
#else
typedef LPVOID                      LPLDT_ENTRY;
#endif
typedef PCONTEXT                    LPCONTEXT;
typedef PEXCEPTION_RECORD           LPEXCEPTION_RECORD;
typedef PEXCEPTION_POINTERS         LPEXCEPTION_POINTERS;
#if (_WIN32_WINNT >= 0x0500)
typedef WAITORTIMERCALLBACKFUNC     WAITORTIMERCALLBACK;
#endif
#if (_WIN32_WINNT >= 0x0600)
typedef RTL_RUN_ONCE                INIT_ONCE;
typedef PRTL_RUN_ONCE               PINIT_ONCE;
typedef PRTL_RUN_ONCE               LPINIT_ONCE;
#endif
typedef RTL_SRWLOCK                 SRWLOCK;
typedef RTL_SRWLOCK                 *PSRWLOCK;
typedef RTL_CONDITION_VARIABLE      CONDITION_VARIABLE;
typedef RTL_CONDITION_VARIABLE      *PCONDITION_VARIABLE;

/* Opaque data types */
typedef struct _PROC_THREAD_ATTRIBUTE_LIST  *PPROC_THREAD_ATTRIBUTE_LIST;
typedef struct _PROC_THREAD_ATTRIBUTE_LIST  *LPPROC_THREAD_ATTRIBUTE_LIST;

/* Structure for asynchronous I/O */
typedef struct _OVERLAPPED {
    ULONG_PTR   Internal;
    ULONG_PTR   InternalHigh;
    union {
        struct {
            DWORD   Offset;
            DWORD   OffsetHigh;
        };
        PVOID   Pointer;
    };
    HANDLE  hEvent;
} OVERLAPPED;
typedef OVERLAPPED  *LPOVERLAPPED;

/* Overlapped entry */
typedef struct _OVERLAPPED_ENTRY {
    ULONG_PTR       lpCompletionKey;
    LPOVERLAPPED    lpOverlapped;
    ULONG_PTR       Internal;
    DWORD           dwNumberOfBytesTransferred;
} OVERLAPPED_ENTRY;
typedef OVERLAPPED_ENTRY    *LPOVERLAPPED_ENTRY;

/* Kernel object security attributes */
typedef struct _SECURITY_ATTRIBUTES {
    DWORD   nLength;
    LPVOID  lpSecurityDescriptor;
    BOOL    bInheritHandle;
} SECURITY_ATTRIBUTES;
typedef SECURITY_ATTRIBUTES *PSECURITY_ATTRIBUTES;
typedef SECURITY_ATTRIBUTES *LPSECURITY_ATTRIBUTES;

/* Process information returned by CreateProcess() */
typedef struct _PROCESS_INFORMATION {
    HANDLE  hProcess;
    HANDLE  hThread;
    DWORD   dwProcessId;
    DWORD   dwThreadId;
} PROCESS_INFORMATION;
typedef PROCESS_INFORMATION *PPROCESS_INFORMATION;
typedef PROCESS_INFORMATION *LPPROCESS_INFORMATION;

/* File time */
#ifndef _FILETIME_
#define _FILETIME_
typedef struct _FILETIME {
    DWORD   dwLowDateTime;
    DWORD   dwHighDateTime;
} FILETIME;
typedef FILETIME    *PFILETIME;
typedef FILETIME    *LPFILETIME;
#endif

/* System time */
typedef struct _SYSTEMTIME {
    WORD    wYear;
    WORD    wMonth;
    WORD    wDayOfWeek;
    WORD    wDay;
    WORD    wHour;
    WORD    wMinute;
    WORD    wSecond;
    WORD    wMilliseconds;
} SYSTEMTIME;
typedef SYSTEMTIME  *PSYSTEMTIME;
typedef SYSTEMTIME  *LPSYSTEMTIME;

/* Run once callback */
#if (_WIN32_WINNT >= 0x0600)
typedef BOOL (WINAPI *PINIT_ONCE_FN)( PINIT_ONCE, PVOID, PVOID * );
#endif

/* Thread procedure */
typedef DWORD (WINAPI *PTHREAD_START_ROUTINE)( LPVOID );
typedef PTHREAD_START_ROUTINE   LPTHREAD_START_ROUTINE;

/* Fiber procedure */
#if (_WIN32_WINNT >= 0x0400)
typedef VOID (WINAPI *PFIBER_START_ROUTINE)( LPVOID );
typedef PFIBER_START_ROUTINE    LPFIBER_START_ROUTINE;
#endif

/* Communications properties */
typedef struct _COMMPROP {
    WORD    wPacketLength;
    WORD    wPacketVersion;
    DWORD   dwServiceMask;
    DWORD   dwReserved1;
    DWORD   dwMaxTxQueue;
    DWORD   dwMaxRxQueue;
    DWORD   dwMaxBaud;
    DWORD   dwProvSubType;
    DWORD   dwProvCapabilities;
    DWORD   dwSettableParams;
    DWORD   dwSettableBaud;
    WORD    wSettableData;
    WORD    wSettableStopParity;
    DWORD   dwCurrentTxQueue;
    DWORD   dwCurrentRxQueue;
    DWORD   dwProvSpec1;
    DWORD   dwProvSpec2;
    WCHAR   wcProvChar[1];
} COMMPROP;
typedef COMMPROP    *LPCOMMPROP;

/* Communications status */
typedef struct _COMSTAT {
    DWORD   fCtsHold    : 1;
    DWORD   fDsrHold    : 1;
    DWORD   fRlsdHold   : 1;
    DWORD   fXoffHold   : 1;
    DWORD   fXoffSent   : 1;
    DWORD   fEof        : 1;
    DWORD   fTxim       : 1;
    DWORD   fReserved   : 25;
    DWORD   cbInQue;
    DWORD   cbOutQue;
} COMSTAT;
typedef COMSTAT *LPCOMSTAT;

/* Communications device settings */
typedef struct _DCB {
    DWORD   DCBlength;
    DWORD   BaudRate;
    DWORD   fBinary             : 1;
    DWORD   fParity             : 1;
    DWORD   fOutxCtsFlow        : 1;
    DWORD   fOutxDsrFlow        : 1;
    DWORD   fDtrControl         : 2;
    DWORD   fDsrSensitivity     : 1;
    DWORD   fTXContinueOnXoff   : 1;
    DWORD   fOutX               : 1;
    DWORD   fInX                : 1;
    DWORD   fErrorChar          : 1;
    DWORD   fNull               : 1;
    DWORD   fRtsControl         : 2;
    DWORD   fAbortOnError       : 1;
    DWORD   fDummy2             : 17;
    WORD    wReserved;
    WORD    XonLim;
    WORD    XoffLim;
    BYTE    ByteSize;
    BYTE    Parity;
    BYTE    StopBits;
    char    XonChar;
    char    XoffChar;
    char    ErrorChar;
    char    EofChar;
    char    EvtChar;
    WORD    wReserved1;
} DCB;
typedef DCB *LPDCB;

/* Communications timeouts */
typedef struct _COMMTIMEOUTS {
    DWORD   ReadIntervalTimeout;
    DWORD   ReadTotalTimeoutMultiplier;
    DWORD   ReadTotalTimeoutConstant;
    DWORD   WriteTotalTimeoutMultiplier;
    DWORD   WriteTotalTimeoutConstant;
} COMMTIMEOUTS;
typedef COMMTIMEOUTS    *LPCOMMTIMEOUTS;

/* Communications configuration */
typedef struct _COMMCONFIG {
    DWORD   dwSize;
    WORD    wVersion;
    WORD    wReserved;
    DCB     dcb;
    DWORD   dwProviderSubType;
    DWORD   dwProviderOffset;
    DWORD   dwProviderSize;
    WCHAR   wcProviderData[1];
} COMMCONFIG;
typedef COMMCONFIG  *LPCOMMCONFIG;

/* System information */
typedef struct _SYSTEM_INFO {
    union {
        DWORD   dwOemId;
        struct {
            WORD    wProcessorArchitecture;
            WORD    wReserved;
        };
    };
    DWORD       dwPageSize;
    LPVOID      lpMinimumApplicationAddress;
    LPVOID      lpMaximumApplicationAddress;
    DWORD_PTR   dwActiveProcessorMask;
    DWORD       dwNumberOfProcessors;
    DWORD       dwProcessorType;
    DWORD       dwAllocationGranularity;
    WORD        wProcessorLevel;
    WORD        wProcessorRevision;
} SYSTEM_INFO;
typedef SYSTEM_INFO *LPSYSTEM_INFO;

/* Memory status */
typedef struct _MEMORYSTATUS {
    DWORD   dwLength;
    DWORD   dwMemoryLoad;
    SIZE_T  dwTotalPhys;
    SIZE_T  dwAvailPhys;
    SIZE_T  dwTotalPageFile;
    SIZE_T  dwAvailPageFile;
    SIZE_T  dwTotalVirtual;
    SIZE_T  dwAvailVirtual;
} MEMORYSTATUS;
typedef MEMORYSTATUS    *LPMEMORYSTATUS;

/* Exception debug information */
typedef struct _EXCEPTION_DEBUG_INFO {
    EXCEPTION_RECORD    ExceptionRecord;
    DWORD               dwFirstChance;
} EXCEPTION_DEBUG_INFO;
typedef EXCEPTION_DEBUG_INFO    *LPEXCEPTION_DEBUG_INFO;

/* Create thread debug information */
typedef struct _CREATE_THREAD_DEBUG_INFO {
    HANDLE                  hThread;
    LPVOID                  lpThreadLocalBase;
    LPTHREAD_START_ROUTINE  lpStartAddress;
} CREATE_THREAD_DEBUG_INFO;
typedef CREATE_THREAD_DEBUG_INFO    *LPCREATE_THREAD_DEBUG_INFO;

/* Create process debug information */
typedef struct _CREATE_PROCESS_DEBUG_INFO {
    HANDLE                  hFile;
    HANDLE                  hProcess;
    HANDLE                  hThread;
    LPVOID                  lpBaseOfImage;
    DWORD                   dwDebugInfoFileOffset;
    DWORD                   nDebugInfoSize;
    LPVOID                  lpThreadLocalBase;
    LPTHREAD_START_ROUTINE  lpStartAddress;
    LPVOID                  lpImageName;
    WORD                    fUnicode;
} CREATE_PROCESS_DEBUG_INFO;
typedef CREATE_PROCESS_DEBUG_INFO   *LPCREATE_PROCESS_DEBUG_INFO;

/* Exit thread debug information */
typedef struct _EXIT_THREAD_DEBUG_INFO {
    DWORD   dwExitCode;
} EXIT_THREAD_DEBUG_INFO;
typedef EXIT_THREAD_DEBUG_INFO  *LPEXIT_THREAD_DEBUG_INFO;

/* Exit process debug information */
typedef struct _EXIT_PROCESS_DEBUG_INFO {
    DWORD   dwExitCode;
} EXIT_PROCESS_DEBUG_INFO;
typedef EXIT_PROCESS_DEBUG_INFO *LPEXIT_PROCESS_DEBUG_INFO;

/* Load DLL debug information */
typedef struct _LOAD_DLL_DEBUG_INFO {
    HANDLE  hFile;
    LPVOID  lpBaseOfDll;
    DWORD   dwDebugInfoFileOffset;
    DWORD   nDebugInfoSize;
    LPVOID  lpImageName;
    WORD    fUnicode;
} LOAD_DLL_DEBUG_INFO;
typedef LOAD_DLL_DEBUG_INFO *LPLOAD_DLL_DEBUG_INFO;

/* Unload DLL debug information */
typedef struct _UNLOAD_DLL_DEBUG_INFO {
    LPVOID  lpBaseOfDll;
} UNLOAD_DLL_DEBUG_INFO;
typedef UNLOAD_DLL_DEBUG_INFO   *LPUNLOAD_DLL_DEBUG_INFO;

/* Debug string information */
typedef struct _OUTPUT_DEBUG_STRING_INFO {
    LPSTR   lpDebugStringData;
    WORD    fUnicode;
    WORD    nDebugStringLength;
} OUTPUT_DEBUG_STRING_INFO;
typedef OUTPUT_DEBUG_STRING_INFO    *LPOUTPUT_DEBUG_STRING_INFO;

/* Debug error information */
typedef struct _RIP_INFO {
    DWORD   dwError;
    DWORD   dwType;
} RIP_INFO;
typedef RIP_INFO    *LPRIP_INFO;

/* Debug event */
typedef struct _DEBUG_EVENT {
    DWORD   dwDebugEventCode;
    DWORD   dwProcessId;
    DWORD   dwThreadId;
    union {
        EXCEPTION_DEBUG_INFO        Exception;
        CREATE_THREAD_DEBUG_INFO    CreateThread;
        CREATE_PROCESS_DEBUG_INFO   CreateProcessInfo;
        EXIT_THREAD_DEBUG_INFO      ExitThread;
        EXIT_PROCESS_DEBUG_INFO     ExitProcess;
        LOAD_DLL_DEBUG_INFO         LoadDll;
        UNLOAD_DLL_DEBUG_INFO       UnloadDll;
        OUTPUT_DEBUG_STRING_INFO    DebugString;
        RIP_INFO                    RipInfo;
    } u;
} DEBUG_EVENT;
typedef DEBUG_EVENT *LPDEBUG_EVENT;

/* JIT debugging information */
typedef struct _JIT_DEBUG_INFO {
    DWORD   dwSize;
    DWORD   dwProcessorArchitecture;
    DWORD   dwThreadID;
    DWORD   dwReserved0;
    ULONG64 lpExceptionAddress;
    ULONG64 lpExceptionRecord;
    ULONG64 lpContextRecord;
} JIT_DEBUG_INFO;
typedef JIT_DEBUG_INFO  *PJIT_DEBUG_INFO;
typedef JIT_DEBUG_INFO  JIT_DEBUG_INFO32;
typedef JIT_DEBUG_INFO  *PJIT_DEBUG_INFO32;
typedef JIT_DEBUG_INFO  JIT_DEBUG_INFO64;
typedef JIT_DEBUG_INFO  *PJIT_DEBUG_INFO64;

/* OpenFile() structure */
typedef struct _OFSTRUCT {
    BYTE    cBytes;
    BYTE    fFixedDisk;
    WORD    nErrCode;
    WORD    Reserved1;
    WORD    Reserved2;
    CHAR    szPathName[OFS_MAXPATHNAME];
} OFSTRUCT;
typedef OFSTRUCT    *POFSTRUCT;
typedef OFSTRUCT    *LPOFSTRUCT;

/* Memory status (extended version) */
typedef struct _MEMORYSTATUSEX {
    DWORD       dwLength;
    DWORD       dwMemoryLoad;
    DWORDLONG   ullTotalPhys;
    DWORDLONG   ullAvailPhys;
    DWORDLONG   ullTotalPageFile;
    DWORDLONG   ullAvailPageFile;
    DWORDLONG   ullTotalVirtual;
    DWORDLONG   ullAvailVirtual;
    DWORDLONG   ullAvailExtendedVirtual;
} MEMORYSTATUSEX;
typedef MEMORYSTATUSEX  *LPMEMORYSTATUSEX;

/* Process heap entry */
typedef struct _PROCESS_HEAP_ENTRY {
    PVOID   lpData;
    DWORD   cbData;
    BYTE    cbOverhead;
    BYTE    iRegionIndex;
    WORD    wFlags;
    union {
        struct {
            HANDLE  hMem;
            DWORD   dwReserved[3];
        } Block;
        struct {
            DWORD   dwCommittedSize;
            DWORD   dwUnCommittedSize;
            LPVOID  lpFirstBlock;
            LPVOID  lpLastBlock;
        } Region;
    };
} PROCESS_HEAP_ENTRY;
typedef PROCESS_HEAP_ENTRY  *PPROCESS_HEAP_ENTRY;
typedef PROCESS_HEAP_ENTRY  *LPPROCESS_HEAP_ENTRY;

/* Unhandled exception filter callback */
typedef LONG (WINAPI *PTOP_LEVEL_EXCEPTION_FILTER)( struct _EXCEPTION_POINTERS * );
typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;

/* Reason context */
#if (_WIN32_WINNT >= 0x0601)
typedef struct _REASON_CONTEXT {
    ULONG   Version;
    DWORD   Flags;
    union {
        struct {
            HMODULE LocalizedReasonModule;
            ULONG   LocalizedReasonId;
            ULONG   ReasonStringCount;
            LPWSTR  *ReasonStrings;
        } Detailed;
        LPWSTR  SimpleReasonString;
    } Reason;
} REASON_CONTEXT;
typedef REASON_CONTEXT  *PREASON_CONTEXT;
typedef REASON_CONTEXT  POWER_REQUEST_CONTEXT;
typedef REASON_CONTEXT  *PPOWER_REQUEST_CONTEXT;
typedef REASON_CONTEXT  *LPPOWER_REQUEST_CONTEXT;
#endif

/* Structure returned by GetFileInformationByHandle() */
typedef struct _BY_HANDLE_FILE_INFORMATION {
    DWORD       dwFileAttributes;
    FILETIME    ftCreationTime;
    FILETIME    ftLastAccessTime;
    FILETIME    ftLastWriteTime;
    DWORD       dwVolumeSerialNumber;
    DWORD       nFileSizeHigh;
    DWORD       nFileSizeLow;
    DWORD       nNumberOfLinks;
    DWORD       nFileIndexHigh;
    DWORD       nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION;
typedef BY_HANDLE_FILE_INFORMATION  *PBY_HANDLE_FILE_INFORMATION;
typedef BY_HANDLE_FILE_INFORMATION  *LPBY_HANDLE_FILE_INFORMATION;

/* Data execution prevention (DEP) system policy types */
typedef enum _DEP_SYSTEM_POLICY_TYPE {
    DEPPolicyAlwaysOff  = 0,
    DEPPolicyAlwaysOn   = 1,
    DEPPolicyOptIn      = 2,
    DEPPolicyOptOut     = 3,
    DEPTotalPolicyCount = 4
} DEP_SYSTEM_POLICY_TYPE;

/* Time zone information */
typedef struct _TIME_ZONE_INFORMATION {
    LONG        Bias;
    WCHAR       StandardName[32];
    SYSTEMTIME  StandardDate;
    LONG        StandardBias;
    WCHAR       DaylightName[32];
    SYSTEMTIME  DaylightDate;
    LONG        DaylightBias;
} TIME_ZONE_INFORMATION;
typedef TIME_ZONE_INFORMATION   *PTIME_ZONE_INFORMATION;
typedef TIME_ZONE_INFORMATION   *LPTIME_ZONE_INFORMATION;

/* Dynamic time zone information */
typedef struct _TIME_DYNAMIC_ZONE_INFORMATION {
    LONG        Bias;
    WCHAR       StandardName[32];
    SYSTEMTIME  StandardDate;
    LONG        StandardBias;
    WCHAR       DaylightName[32];
    SYSTEMTIME  DaylightDate;
    LONG        DaylightBias;
    WCHAR       TimeZoneKeyName[128];
    BOOLEAN     DynamicDaylightTimeDisabled;
} DYNAMIC_TIME_ZONE_INFORMATION;
typedef DYNAMIC_TIME_ZONE_INFORMATION   *PDYNAMIC_TIME_ZONE_INFORMATION;

/* Encryption callbacks */
typedef DWORD (WINAPI* PFE_EXPORT_FUNC)( PBYTE, PVOID, ULONG );
typedef DWORD (WINAPI* PFE_IMPORT_FUNC)( PBYTE, PVOID, PULONG );

/* Asynchronous I/O completion callback */
typedef VOID (WINAPI* LPOVERLAPPED_COMPLETION_ROUTINE)( DWORD, DWORD, LPOVERLAPPED );

/* Stream identifier */
typedef struct _WIN32_STREAM_ID {
    DWORD           dwStreamId;
    DWORD           dwStreamAttributes;
    LARGE_INTEGER   Size;
    DWORD           dwStreamNameSize;
    WCHAR           cStreamName[ANYSIZE_ARRAY];
} WIN32_STREAM_ID;
typedef WIN32_STREAM_ID *PWIN32_STREAM_ID;

/* Process startup information */
typedef struct _STARTUPINFOA {
    DWORD   cb;
    LPSTR   lpReserved;
    LPSTR   lpDesktop;
    LPSTR   lpTitle;
    DWORD   dwX;
    DWORD   dwY;
    DWORD   dwXSize;
    DWORD   dwYSize;
    DWORD   dwXCountChars;
    DWORD   dwYCountChars;
    DWORD   dwFillAttribute;
    DWORD   dwFlags;
    WORD    wShowWindow;
    WORD    cbReserved2;
    LPBYTE  lpReserved2;
    HANDLE  hStdInput;
    HANDLE  hStdOutput;
    HANDLE  hStdError;
} STARTUPINFOA;
typedef STARTUPINFOA    *LPSTARTUPINFOA;
typedef struct _STARTUPINFOW {
    DWORD   cb;
    LPWSTR  lpReserved;
    LPWSTR  lpDesktop;
    LPWSTR  lpTitle;
    DWORD   dwX;
    DWORD   dwY;
    DWORD   dwXSize;
    DWORD   dwYSize;
    DWORD   dwXCountChars;
    DWORD   dwYCountChars;
    DWORD   dwFillAttribute;
    DWORD   dwFlags;
    WORD    wShowWindow;
    WORD    cbReserved2;
    LPBYTE  lpReserved2;
    HANDLE  hStdInput;
    HANDLE  hStdOutput;
    HANDLE  hStdError;
} STARTUPINFOW;
typedef STARTUPINFOW    *LPSTARTUPINFOW;
#ifdef UNICODE
typedef STARTUPINFOW    STARTUPINFO;
typedef LPSTARTUPINFOW  LPSTARTUPINFO;
#else
typedef STARTUPINFOA    STARTUPINFO;
typedef LPSTARTUPINFOA  LPSTARTUPINFO;
#endif

/* Process startup information (extended version) */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _STARTUPINFOEXA {
    STARTUPINFOA                    StartupInfo;
    LPPROC_THREAD_ATTRIBUTE_LIST    lpAttributeList;
} STARTUPINFOEXA;
typedef STARTUPINFOEXA  *LPSTARTUPINFOEXA;
typedef struct _STARTUPINFOEXW {
    STARTUPINFOW                    StartupInfo;
    LPPROC_THREAD_ATTRIBUTE_LIST    lpAttributeList;
} STARTUPINFOEXW;
typedef STARTUPINFOEXW  *LPSTARTUPINFOEXW;
#ifdef UNICODE
typedef STARTUPINFOEXW      STARTUPINFOEX;
typedef LPSTARTUPINFOEXW    LPSTARTUPINFOEX;
#else
typedef STARTUPINFOEXA      STARTUPINFOEX;
typedef LPSTARTUPINFOEXA    LPSTARTUPINFOEX;
#endif
#endif

/* Structure used with FindFirstFile(), etc. */
typedef struct _WIN32_FIND_DATAA {
    DWORD       dwFileAttributes;
    FILETIME    ftCreationTime;
    FILETIME    ftLastAccessTime;
    FILETIME    ftLastWriteTime;
    DWORD       nFileSizeHigh;
    DWORD       nFileSizeLow;
    DWORD       dwReserved0;
    DWORD       dwReserved1;
    CHAR        cFileName[MAX_PATH];
    CHAR        cAlternateFileName[14];
} WIN32_FIND_DATAA;
typedef WIN32_FIND_DATAA    *PWIN32_FIND_DATAA;
typedef WIN32_FIND_DATAA    *LPWIN32_FIND_DATAA;
typedef struct _WIN32_FIND_DATAW {
    DWORD       dwFileAttributes;
    FILETIME    ftCreationTime;
    FILETIME    ftLastAccessTime;
    FILETIME    ftLastWriteTime;
    DWORD       nFileSizeHigh;
    DWORD       nFileSizeLow;
    DWORD       dwReserved0;
    DWORD       dwReserved1;
    WCHAR       cFileName[MAX_PATH];
    WCHAR       cAlternateFileName[14];
} WIN32_FIND_DATAW;
typedef WIN32_FIND_DATAW    *PWIN32_FIND_DATAW;
typedef WIN32_FIND_DATAW    *LPWIN32_FIND_DATAW;
#ifdef UNICODE
typedef WIN32_FIND_DATAW    WIN32_FIND_DATA;
typedef PWIN32_FIND_DATAW   PWIN32_FIND_DATA;
typedef LPWIN32_FIND_DATAW  LPWIN32_FIND_DATA;
#else
typedef WIN32_FIND_DATAA    WIN32_FIND_DATA;
typedef PWIN32_FIND_DATAA   PWIN32_FIND_DATA;
typedef LPWIN32_FIND_DATAA  LPWIN32_FIND_DATA;
#endif

/* File attribute data */
typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
    DWORD       dwFileAttributes;
    FILETIME    ftCreationTime;
    FILETIME    ftLastAccessTime;
    FILETIME    ftLastWriteTime;
    DWORD       nFileSizeHigh;
    DWORD       nFileSizeLow;
} WIN32_FILE_ATTRIBUTE_DATA;
typedef WIN32_FILE_ATTRIBUTE_DATA   *LPWIN32_FILE_ATTRIBUTE_DATA;

/* Waitable timer callback */
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
typedef VOID (WINAPI *PTIMERAPCROUTINE)( LPVOID, DWORD, DWORD );
#endif

/* Memory resource notification types */
#if (_WIN32_WINNT >= 0x0501)
typedef enum _MEMORY_RESOURCE_NOTIFICATION_TYPE {
    LowMemoryResourceNotification,
    HighMemoryResourceNotification
} MEMORY_RESOURCE_NOTIFICATION_TYPE;
#endif

/* Process and thread attribute numbers */
#if (_WIN32_WINNT >= 0x0600)
typedef enum _PROC_THREAD_ATTRIBUTE_NUM {
    ProcThreadAttributeParentProcess    = 0,
    ProcThreadAttributeExtendedFlags    = 1,
    ProcThreadAttributeHandleList       = 2,
    ProcThreadAttributeGroupAffinity    = 3,
    ProcThreadAttributePreferredNode    = 4,
    ProcThreadAttributeIdealProcessor   = 5,
    ProcThreadAttributeUmsThread        = 6,
    ProcThreadAttributeMitigationPolicy = 7,
    ProcThreadAttributeMax              = 8
} PROC_THREAD_ATTRIBUTE_NUM;
#endif

/* Resource enumeration callbacks */
typedef BOOL (CALLBACK *ENUMRESTYPEPROCA)( HMODULE, LPSTR, LONG_PTR );
typedef BOOL (CALLBACK *ENUMRESTYPEPROCW)( HMODULE, LPWSTR, LONG_PTR );
typedef BOOL (CALLBACK *ENUMRESNAMEPROCA)( HMODULE, LPCSTR, LPSTR, LONG_PTR );
typedef BOOL (CALLBACK *ENUMRESNAMEPROCW)( HMODULE, LPCWSTR, LPWSTR, LONG_PTR );
typedef BOOL (CALLBACK *ENUMRESLANGPROCA)( HMODULE, LPCSTR, LPCSTR, WORD, LONG_PTR );
typedef BOOL (CALLBACK *ENUMRESLANGPROCW)( HMODULE, LPCWSTR, LPCWSTR, WORD, LONG_PTR );
#ifdef UNICODE
    #define ENUMRESTYPEPROC ENUMRESTYPEPROCW
    #define ENUMRESNAMEPROC ENUMRESNAMEPROCW
    #define ENUMRESLANGPROC ENUMRESLANGPROCW
#else
    #define ENUMRESTYPEPROC ENUMRESTYPEPROCA
    #define ENUMRESNAMEPROC ENUMRESNAMEPROCA
    #define ENUMRESLANGPROC ENUMRESLANGPROCA
#endif

/* GetFileAttributesEx() information levels */
typedef enum _GET_FILEEX_INFO_LEVELS {
    GetFileExInfoStandard,
    GetFileExMaxInfoLevel
} GET_FILEEX_INFO_LEVELS;

/* FindFirstFileEx() information levels */
#if (_WIN32_WINNT >= 0x0400)
typedef enum _FINDEX_INFO_LEVELS {
    FindExInfoStandard      = 0,
    FindExInfoBasic         = 1,
    FindExInfoMaxInfoLevel  = 2
} FINDEX_INFO_LEVELS;
#endif

/* FindFirstFileEx() search operations */
#if (_WIN32_WINNT >= 0x0400)
typedef enum _FINDEX_SEARCH_OPS {
    FindExSearchNameMatch,
    FindExSearchLimitToDirectories,
    FindExSearchLimitToDevices,
    FindExSearchMaxSearchOp
} FINDEX_SEARCH_OPS;
#endif

/* Copy progress callback */
#if (_WIN32_WINNT >= 0x0400)
typedef DWORD (WINAPI *LPPROGRESS_ROUTINE)( LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, DWORD, DWORD, HANDLE, HANDLE, LPVOID );
#endif

/* Stream information levels */
#if (_WIN32_WINNT >= 0x0501)
typedef enum _STREAM_INFO_LEVELS {
    FindStreamInfoStandard,
    FindStreamInfoMaxInfoLevel
} STREAM_INFO_LEVELS;
#endif

/* Structure used with FindFirstStreamW(), etc. */
#if (_WIN32_WINNT >= 0x0501)
typedef struct _WIN32_FIND_STREAM_DATA {
    LARGE_INTEGER   StreamSize;
    WCHAR           cStreamName[MAX_PATH + 36];
} WIN32_FIND_STREAM_DATA;
typedef WIN32_FIND_STREAM_DATA  *PWIN32_FIND_STREAM_DATA;
#endif

/* Pipe attribute types */
typedef enum {
    PipeAttribute,
    PipeConnectionAttribute,
    PipeHandleAttribute
} PIPE_ATTRIBUTE_TYPE;

/* Event log full information */
typedef struct _EVENTLOG_FULL_INFORMATION {
    DWORD   dwFull;
} EVENTLOG_FULL_INFORMATION;
typedef EVENTLOG_FULL_INFORMATION   *LPEVENTLOG_FULL_INFORMATION;

/* Thread pool callback */
#if (_WIN32_WINNT >= 0x0600)
typedef VOID (WINAPI *PTP_WIN32_IO_CALLBACK)( PTP_CALLBACK_INSTANCE, PVOID, PVOID, ULONG, ULONG_PTR, PTP_IO );
#endif

/* Computer name formats */
#if (_WIN32_WINNT >= 0x0500)
typedef enum _COMPUTER_NAME_FORMAT {
    ComputerNameNetBIOS,
    ComputerNameDnsHostname,
    ComputerNameDnsDomain,
    ComputerNameDnsFullyQualified,
    ComputerNamePhysicalNetBIOS,
    ComputerNamePhysicalDnsHostname,
    ComputerNamePhysicalDnsDomain,
    ComputerNamePhysicalDnsFullyQualified,
    ComputerNameMax
} COMPUTER_NAME_FORMAT;
#endif

/* Hardware profile information */
#if (_WIN32_WINNT >= 0x0400)
typedef struct tagHW_PROFILE_INFOA {
    DWORD   dwDockInfo;
    CHAR    szHwProfileGuid[HW_PROFILE_GUIDLEN];
    CHAR    szHwProfileName[MAX_PROFILE_LEN];
} HW_PROFILE_INFOA;
typedef HW_PROFILE_INFOA    *LPHW_PROFILE_INFOA;
typedef struct tagHW_PROFILE_INFOW {
    DWORD   dwDockInfo;
    WCHAR   szHwProfileGuid[HW_PROFILE_GUIDLEN];
    WCHAR   szHwProfileName[MAX_PROFILE_LEN];
} HW_PROFILE_INFOW;
typedef HW_PROFILE_INFOW    *LPHW_PROFILE_INFOW;
#ifdef UNICODE
typedef HW_PROFILE_INFOW    HW_PROFILE_INFO;
typedef LPHW_PROFILE_INFOW  LPHW_PROFILE_INFO;
#else
typedef HW_PROFILE_INFOA    HW_PROFILE_INFO;
typedef LPHW_PROFILE_INFOA  LPHW_PROFILE_INFO;
#endif
#endif

/* System power status */
#if (WINVER >= 0x0400)
typedef struct _SYSTEM_POWER_STATUS {
    BYTE    ACLineStatus;
    BYTE    BatteryFlag;
    BYTE    BatteryLifePercent;
    BYTE    Reserved1;
    DWORD   BatteryLifeTime;
    DWORD   BatteryFullLifeTime;
} SYSTEM_POWER_STATUS;
typedef SYSTEM_POWER_STATUS *LPSYSTEM_POWER_STATUS;
#endif

/* Activation context */
#if (_WIN32_WINNT >= 0x0500)
typedef struct tagACTCTXA {
    ULONG   cbSize;
    DWORD   dwFlags;
    LPCSTR  lpSource;
    USHORT  wProcessorArchitecture;
    LANGID  wLangId;
    LPCSTR  lpAssemblyDirectory;
    LPCSTR  lpResourceName;
    LPCSTR  lpApplicationName;
    HMODULE hModule;
} ACTCTXA;
typedef ACTCTXA         *PACTCTXA;
typedef const ACTCTXA   *PCACTCTXA;
typedef struct tagACTCTXW {
    ULONG   cbSize;
    DWORD   dwFlags;
    LPCWSTR lpSource;
    USHORT  wProcessorArchitecture;
    LANGID  wLangId;
    LPCWSTR lpAssemblyDirectory;
    LPCWSTR lpResourceName;
    LPCWSTR lpApplicationName;
    HMODULE hModule;
} ACTCTXW;
typedef ACTCTXW         *PACTCTXW;
typedef const ACTCTXW   *PCACTCTXW;
#ifdef UNICODE
typedef ACTCTXW         ACTCTXW;
typedef PACTCTXW        PACTCTXW;
typedef PCACTCTXW       PCACTCTXW;
#else
typedef ACTCTXA         ACTCTXA;
typedef PACTCTXA        PACTCTXA;
typedef PCACTCTXA       PCACTCTXA;
#endif
#endif

/* Activation context section keyed data (version from build 2600) */
#if (_WIN32_WINNT >= 0x0500)
typedef struct tagACTCTX_SECTION_KEYED_DATA_2600 {
    ULONG   cbSize;
    ULONG   ulDataFormatVersion;
    PVOID   lpData;
    ULONG   ulLength;
    PVOID   lpSectionGlobalData;
    ULONG   ulSectionGlobalDataLength;
    PVOID   lpSectionBase;
    ULONG   ulSectionTotalLength;
    HANDLE  hActCtx;
    ULONG   ulAssemblyRosterIndex;
} ACTCTX_SECTION_KEYED_DATA_2600;
typedef ACTCTX_SECTION_KEYED_DATA_2600          *PACTCTX_SECTION_KEYED_DATA_2600;
typedef const ACTCTX_SECTION_KEYED_DATA_2600    *PCACTCTX_SECTION_KEYED_DATA_2600;
#endif

/* Activation context section keyed data assembly metadata */
#if (_WIN32_WINNT >= 0x0500)
typedef struct tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA {
    PVOID   lpInformation;
    PVOID   lpSectionBase;
    ULONG   ulSectionLength;
    PVOID   lpSectionGlobalDataBase;
    ULONG   ulSectionGlobalDataLength;
} ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
typedef ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA         *PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
typedef const ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA   *PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
#endif

/* Activation context section keyed data */
#if (_WIN32_WINNT >= 0x0500)
typedef struct tagACTCTX_SECTION_KEYED_DATA {
    ULONG                                       cbSize;
    ULONG                                       ulDataFormatVersion;
    PVOID                                       lpData;
    ULONG                                       ulLength;
    PVOID                                       lpSectionGlobalData;
    ULONG                                       ulSectionGlobalDataLength;
    PVOID                                       lpSectionBase;
    ULONG                                       ulSectionTotalLength;
    HANDLE                                      hActCtx;
    ULONG                                       ulAssemblyRosterIndex;
    ULONG                                       ulFlags;
    ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA AssemblyMetadata;
} ACTCTX_SECTION_KEYED_DATA;
typedef ACTCTX_SECTION_KEYED_DATA       *PACTCTX_SECTION_KEYED_DATA;
typedef const ACTCTX_SECTION_KEYED_DATA *PCACTCTX_SECTION_KEYED_DATA;
#endif

/* Activation context basic information */
#if (_WIN32_WINNT >= 0x0500)
typedef struct _ACTIVATION_CONTEXT_BASIC_INFORMATION {
    HANDLE  hActCtx;
    DWORD   dwFlags;
} ACTIVATION_CONTEXT_BASIC_INFORMATION;
typedef ACTIVATION_CONTEXT_BASIC_INFORMATION        *PACTIVATION_CONTEXT_BASIC_INFORMATION;
typedef const ACTIVATION_CONTEXT_BASIC_INFORMATION  *PCACTIVATION_CONTEXT_BASIC_INFORMATION;
#endif

/* Application recovery callback */
typedef DWORD (WINAPI *APPLICATION_RECOVERY_CALLBACK)( PVOID );

/* By handle file information classes */
#if (_WIN32_WINNT >= 0x0600)
typedef enum _FILE_INFO_BY_HANDLE_CLASS {
    FileBasicInfo                   = 0,
    FileStandardInfo                = 1,
    FileNameInfo                    = 2,
    FileRenameInfo                  = 3,
    FileDispositionInfo             = 4,
    FileAllocationInfo              = 5,
    FileEndOfFileInfo               = 6,
    FileStreamInfo                  = 7,
    FileCompressionInfo             = 8,
    FileAttributeTagInfo            = 9,
    FileIdBothDirectoryInfo         = 10,
    FileIdBothDirectoryRestartInfo  = 11,
    FileIoPriorityHintInfo          = 12,
    FileRemoteProtocolInfo          = 13,
    MaximumFileInfoByHandleClass    = 14
} FILE_INFO_BY_HANDLE_CLASS;
typedef FILE_INFO_BY_HANDLE_CLASS   *PFILE_INFO_BY_HANDLE_CLASS;
#endif

/* File basic information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_BASIC_INFO {
    LARGE_INTEGER   CreationTime;
    LARGE_INTEGER   LastAccessTime;
    LARGE_INTEGER   LastWriteTime;
    LARGE_INTEGER   ChangeTime;
    DWORD           FileAttributes;
} FILE_BASIC_INFO;
typedef FILE_BASIC_INFO *PFILE_BASIC_INFO;
#endif

/* File standard information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_STANDARD_INFO {
    LARGE_INTEGER   AllocationSize;
    LARGE_INTEGER   EndOfFile;
    DWORD           NumberOfLinks;
    BOOLEAN         DeletePending;
    BOOLEAN         Directory;
} FILE_STANDARD_INFO;
typedef FILE_STANDARD_INFO  *PFILE_STANDARD_INFO;
#endif

/* File name information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_NAME_INFO {
    DWORD   FileNameLength;
    WCHAR   FileName[1];
} FILE_NAME_INFO;
typedef FILE_NAME_INFO  *PFILE_NAME_INFO;
#endif

/* File rename information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_RENAME_INFO {
    BOOLEAN ReplaceIfExists;
    HANDLE  RootDirectory;
    DWORD   FileNameLength;
    WCHAR   FileName[1];
} FILE_RENAME_INFO;
typedef FILE_RENAME_INFO    *PFILE_RENAME_INFO;
#endif

/* File allocation information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_ALLOCATION_INFO {
    LARGE_INTEGER   AllocationSize;
} FILE_ALLOCATION_SIZE;
typedef FILE_ALLOCATION_SIZE    *PFILE_ALLOCATION_SIZE;
#endif

/* File end of file information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_END_OF_FILE_INFO {
    LARGE_INTEGER   EndOfFile;
} FILE_END_OF_FILE_INFO;
typedef FILE_END_OF_FILE_INFO   *PFILE_END_OF_FILE_INFO;
#endif

/* File stream information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_STREAM_INFO {
    DWORD           NextEntryOffset;
    DWORD           StreamNameLength;
    LARGE_INTEGER   StreamSize;
    LARGE_INTEGER   StreamAllocationSize;
    WCHAR           StreamName[1];
} FILE_STREAM_INFO;
typedef FILE_STREAM_INFO    *PFILE_STREAM_INFO;
#endif

/* File compression information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_COMPRESSION_INFO {
    LARGE_INTEGER   CompressedFileSize;
    WORD            CompressionFormat;
    UCHAR           CompressionUnitShift;
    UCHAR           ChunkShift;
    UCHAR           ClusterShift;
    UCHAR           Reserved[3];
} FILE_COMPRESSION_INFO;
typedef FILE_COMPRESSION_INFO   *PFILE_COMPRESSION_INFO;
#endif

/* File attribute tag information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_ATTRIBUTE_TAG_INFO {
    DWORD   FileAttributes;
    DWORD   ReparseTag;
} FILE_ATTRIBUTE_TAG_INFO;
typedef FILE_ATTRIBUTE_TAG_INFO *PFILE_ATTRIBUTE_TAG_INFO;
#endif

/* File disposition information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_DISPOSITION_INFO {
    BOOLEAN DeleteFile;
} FILE_DISPOSITION_INFO;
typedef FILE_DISPOSITION_INFO   *PFILE_DISPOSITION_INFO;
#endif

/* File ID both directory information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_ID_BOTH_DIR_INFO {
    DWORD           NextEntryOffset;
    DWORD           FileIndex;
    LARGE_INTEGER   CreationTime;
    LARGE_INTEGER   LastAccessTime;
    LARGE_INTEGER   LastWriteTime;
    LARGE_INTEGER   ChangeTime;
    LARGE_INTEGER   EndOfFile;
    LARGE_INTEGER   AllocationSize;
    DWORD           FileAttributes;
    DWORD           FileNameLength;
    DWORD           EaSize;
    CCHAR           ShortNameLength;
    WCHAR           ShortName[12];
    LARGE_INTEGER   FileId;
    WCHAR           FileName[1];
} FILE_ID_BOTH_DIR_INFO;
typedef FILE_ID_BOTH_DIR_INFO   *PFILE_ID_BOTH_DIR_INFO;
#endif

/* I/O priority hint types */
#if (_WIN32_WINNT >= 0x0600)
typedef enum _PRIORITY_HINT {
    IoPriorityHintVeryLow       = 0,
    IoPriorityHintLow           = 1,
    IoPriorityHintNormal        = 2,
    MaximumIoPriorityHintType   = 3
} PRIORITY_HINT;
#endif

/* File I/O priority hint information */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_IO_PRIORITY_HINT_INFO {
    PRIORITY_HINT   PriorityHint;
} FILE_IO_PRIORITY_HINT_INFO;
typedef FILE_IO_PRIORITY_HINT_INFO  *PFILE_IO_PRIORITY_HINT_INFO;
#endif

#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_REMOTE_PROTOCOL_INFO {
    USHORT  StructureVersion;
    USHORT  StructureSize;
    DWORD   Protocol;
    USHORT  ProtocolMajorVersion;
    USHORT  ProtocolMinorVersion;
    USHORT  ProtocolRevision;
    USHORT  Reserved;
    DWORD   Flags;
    struct {
        DWORD   Reserved[8];
    } GenericReserved;
    struct {
        DWORD   Reserved[16];
    } ProtocolSpecificReserved;
} FILE_REMOTE_PROTOCOL_INFO;
typedef FILE_REMOTE_PROTOCOL_INFO   *PFILE_REMOTE_PROTOCOL_INFO;
#endif

/* File ID types */
#if (_WIN32_WINNT >= 0x0600)
typedef enum _FILE_ID_TYPE {
    FileIdType,
    ObjectIdType,
    MaximumFileIdType
} FILE_ID_TYPE;
typedef FILE_ID_TYPE    *PFILE_ID_TYPE;
#endif

/* File ID descriptor */
#if (_WIN32_WINNT >= 0x0600)
typedef struct _FILE_ID_DESCRIPTOR {
    DWORD           dwSize;
    FILE_ID_TYPE    Type;
    union {
        LARGE_INTEGER   FileId;
        GUID            ObjectId;
    };
} FILE_ID_DESCRIPTOR;
typedef FILE_ID_DESCRIPTOR  *LPFILE_ID_DESCRIPTOR;
#endif

/* Entry point for Win32 applications */
int WINAPI  WinMain( HINSTANCE, HINSTANCE, LPSTR, int );
int WINAPI  wWinMain( HINSTANCE, HINSTANCE, LPWSTR, int );

/* Functions in KERNEL32.DLL */
WINBASEAPI VOID WINAPI              AcquireSRWLockExclusive( PSRWLOCK );
WINBASEAPI VOID WINAPI              AcquireSRWLockShared( PSRWLOCK );
WINBASEAPI ATOM WINAPI              AddAtomA( LPCSTR );
WINBASEAPI ATOM WINAPI              AddAtomW( LPCWSTR );
WINBASEAPI VOID WINAPI              ApplicationRecoveryFinished( BOOL );
WINBASEAPI HRESULT WINAPI           ApplicationRecoveryInProgress( PBOOL );
WINBASEAPI BOOL WINAPI              AreFileApisANSI( VOID );
WINBASEAPI BOOL WINAPI              BackupRead( HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID * );
WINBASEAPI BOOL WINAPI              BackupSeek( HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID * );
WINBASEAPI BOOL WINAPI              BackupWrite( HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID * );
WINBASEAPI BOOL WINAPI              Beep( DWORD, DWORD );
WINBASEAPI HANDLE WINAPI            BeginUpdateResourceA( LPCSTR, BOOL );
WINBASEAPI HANDLE WINAPI            BeginUpdateResourceW( LPCWSTR, BOOL );
WINBASEAPI BOOL WINAPI              BuildCommDCBA( LPCSTR, LPDCB );
WINBASEAPI BOOL WINAPI              BuildCommDCBAndTimeoutsA( LPCSTR, LPDCB, LPCOMMTIMEOUTS );
WINBASEAPI BOOL WINAPI              BuildCommDCBAndTimeoutsW( LPCWSTR, LPDCB, LPCOMMTIMEOUTS );
WINBASEAPI BOOL WINAPI              BuildCommDCBW( LPCWSTR, LPDCB );
WINBASEAPI BOOL WINAPI              CallNamedPipeA( LPCSTR, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, DWORD );
WINBASEAPI BOOL WINAPI              CallNamedPipeW( LPCWSTR, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, DWORD );
WINBASEAPI BOOL WINAPI              CancelDeviceWakeupRequest( HANDLE );
WINBASEAPI BOOL WINAPI              CancelIo( HANDLE );
WINBASEAPI BOOL WINAPI              CancelIoEx( HANDLE, LPOVERLAPPED );
WINBASEAPI BOOL WINAPI              CancelSynchronousIo( HANDLE );
WINBASEAPI BOOL WINAPI              ClearCommBreak( HANDLE );
WINBASEAPI BOOL WINAPI              ClearCommError( HANDLE, LPDWORD, LPCOMSTAT );
WINBASEAPI BOOL WINAPI              CloseHandle( HANDLE );
WINBASEAPI BOOL WINAPI              CommConfigDialogA( LPCSTR, HWND, LPCOMMCONFIG );
WINBASEAPI BOOL WINAPI              CommConfigDialogW( LPCWSTR, HWND, LPCOMMCONFIG );
WINBASEAPI LONG WINAPI              CompareFileTime( CONST FILETIME *, CONST FILETIME * );
WINBASEAPI BOOL WINAPI              ConnectNamedPipe( HANDLE, LPOVERLAPPED );
WINBASEAPI BOOL WINAPI              ContinueDebugEvent( DWORD, DWORD, DWORD );
WINBASEAPI BOOL WINAPI              CopyFileA( LPCSTR, LPCSTR, BOOL );
WINBASEAPI BOOL WINAPI              CopyFileW( LPCWSTR, LPCWSTR, BOOL );
WINBASEAPI BOOL WINAPI              CreateDirectoryA( LPCSTR, LPSECURITY_ATTRIBUTES );
WINBASEAPI BOOL WINAPI              CreateDirectoryExA( LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES );
WINBASEAPI BOOL WINAPI              CreateDirectoryExW( LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES );
WINBASEAPI BOOL WINAPI              CreateDirectoryW( LPCWSTR, LPSECURITY_ATTRIBUTES );
WINBASEAPI HANDLE WINAPI            CreateEventA( LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR );
WINBASEAPI HANDLE WINAPI            CreateEventW( LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR );
WINBASEAPI HANDLE WINAPI            CreateFileA( LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE );
WINBASEAPI HANDLE WINAPI            CreateFileMappingA( HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR );
WINBASEAPI HANDLE WINAPI            CreateFileMappingW( HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR );
WINBASEAPI HANDLE WINAPI            CreateFileW( LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE );
WINBASEAPI HANDLE WINAPI            CreateIoCompletionPort( HANDLE, HANDLE, ULONG_PTR, DWORD );
WINBASEAPI HANDLE WINAPI            CreateMailslotA( LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES );
WINBASEAPI HANDLE WINAPI            CreateMailslotW( LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES );
WINBASEAPI HANDLE WINAPI            CreateMutexA( LPSECURITY_ATTRIBUTES, BOOL, LPCSTR );
WINBASEAPI HANDLE WINAPI            CreateMutexW( LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR );
WINBASEAPI HANDLE WINAPI            CreateNamedPipeA( LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES );
WINBASEAPI HANDLE WINAPI            CreateNamedPipeW( LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES );
WINBASEAPI BOOL WINAPI              CreatePipe( PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD );
WINBASEAPI BOOL WINAPI              CreateProcessA( LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION );
WINBASEAPI BOOL WINAPI              CreateProcessW( LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION );
WINBASEAPI HANDLE WINAPI            CreateRemoteThread( HANDLE, LPSECURITY_ATTRIBUTES, SIZE_T, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD );
WINBASEAPI HANDLE WINAPI            CreateRemoteThreadEx( HANDLE, LPSECURITY_ATTRIBUTES, SIZE_T, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPPROC_THREAD_ATTRIBUTE_LIST, LPDWORD );
WINBASEAPI HANDLE WINAPI            CreateSemaphoreA( LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR );
WINBASEAPI HANDLE WINAPI            CreateSemaphoreW( LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR );
WINBASEAPI DWORD WINAPI             CreateTapePartition( HANDLE, DWORD, DWORD, DWORD );
WINBASEAPI HANDLE WINAPI            CreateThread( LPSECURITY_ATTRIBUTES, SIZE_T, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD );
WINBASEAPI BOOL WINAPI              DebugActiveProcess( DWORD );
WINBASEAPI BOOL WINAPI              DebugActiveProcessStop( DWORD );
WINBASEAPI VOID WINAPI              DebugBreak( VOID );
WINBASEAPI BOOL WINAPI              DebugBreakProcess( HANDLE );
WINBASEAPI BOOL WINAPI              DebugSetProcessKillOnExit( BOOL );
WINBASEAPI PVOID WINAPI             DecodePointer( PVOID );
WINBASEAPI PVOID WINAPI             DecodeSystemPointer( PVOID );
WINBASEAPI BOOL WINAPI              DefineDosDeviceA( DWORD, LPCSTR, LPCSTR );
WINBASEAPI BOOL WINAPI              DefineDosDeviceW( DWORD, LPCWSTR, LPCWSTR );
WINBASEAPI ATOM WINAPI              DeleteAtom( ATOM );
WINBASEAPI VOID WINAPI              DeleteCriticalSection( LPCRITICAL_SECTION );
WINBASEAPI BOOL WINAPI              DeleteFileA( LPCSTR );
WINBASEAPI BOOL WINAPI              DeleteFileW( LPCWSTR );
WINBASEAPI BOOL WINAPI              DeviceIoControl( HANDLE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPOVERLAPPED );
WINBASEAPI BOOL WINAPI              DisableThreadLibraryCalls( HMODULE );
WINBASEAPI BOOL WINAPI              DisconnectNamedPipe( HANDLE );
WINBASEAPI BOOL WINAPI              DosDateTimeToFileTime( WORD, WORD, LPFILETIME );
WINBASEAPI BOOL WINAPI              DuplicateHandle( HANDLE, HANDLE, HANDLE, LPHANDLE, DWORD, BOOL, DWORD );
WINBASEAPI PVOID WINAPI             EncodePointer( PVOID );
WINBASEAPI PVOID WINAPI             EncodeSystemPointer( PVOID );
WINBASEAPI BOOL WINAPI              EndUpdateResourceA( HANDLE, BOOL );
WINBASEAPI BOOL WINAPI              EndUpdateResourceW( HANDLE, BOOL );
WINBASEAPI VOID WINAPI              EnterCriticalSection( LPCRITICAL_SECTION );
WINBASEAPI BOOL WINAPI              EnumResourceLanguagesA( HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROCA, LONG_PTR );
WINBASEAPI BOOL WINAPI              EnumResourceLanguagesExA( HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROCA, LONG_PTR, DWORD, LANGID );
WINBASEAPI BOOL WINAPI              EnumResourceLanguagesExW( HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROCW, LONG_PTR, DWORD, LANGID );
WINBASEAPI BOOL WINAPI              EnumResourceLanguagesW( HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROCW, LONG_PTR );
WINBASEAPI BOOL WINAPI              EnumResourceNamesA( HMODULE, LPCSTR, ENUMRESNAMEPROCA, LONG_PTR );
WINBASEAPI BOOL WINAPI              EnumResourceNamesExA( HMODULE, LPCSTR, ENUMRESNAMEPROCA, LONG_PTR, DWORD, LANGID );
WINBASEAPI BOOL WINAPI              EnumResourceNamesExW( HMODULE, LPCWSTR, ENUMRESNAMEPROCW, LONG_PTR, DWORD, LANGID );
WINBASEAPI BOOL WINAPI              EnumResourceNamesW( HMODULE, LPCWSTR, ENUMRESNAMEPROCW, LONG_PTR );
WINBASEAPI BOOL WINAPI              EnumResourceTypesA( HMODULE, ENUMRESTYPEPROCA, LONG_PTR );
WINBASEAPI BOOL WINAPI              EnumResourceTypesExA( HMODULE, ENUMRESTYPEPROCA, LONG_PTR, DWORD, LANGID );
WINBASEAPI BOOL WINAPI              EnumResourceTypesExW( HMODULE, ENUMRESTYPEPROCW, LONG_PTR, DWORD, LANGID );
WINBASEAPI BOOL WINAPI              EnumResourceTypesW( HMODULE, ENUMRESTYPEPROCW, LONG_PTR );
WINBASEAPI UINT WINAPI              EnumSystemFirmwareTables( DWORD, PVOID, DWORD );
WINBASEAPI DWORD WINAPI             EraseTape( HANDLE, DWORD, BOOL );
WINBASEAPI BOOL WINAPI              EscapeCommFunction( HANDLE, DWORD );
WINBASEAPI DECLSPEC_NORETURN VOID WINAPI    ExitProcess( UINT );
WINBASEAPI DECLSPEC_NORETURN VOID WINAPI    ExitThread( DWORD );
WINBASEAPI DWORD WINAPI             ExpandEnvironmentStringsA( LPCSTR, LPSTR, DWORD );
WINBASEAPI DWORD WINAPI             ExpandEnvironmentStringsW( LPCWSTR, LPWSTR, DWORD );
WINBASEAPI VOID WINAPI              FatalAppExitA( UINT, LPCSTR );
WINBASEAPI VOID WINAPI              FatalAppExitW( UINT, LPCWSTR );
WINBASEAPI VOID WINAPI              FatalExit( int );
WINBASEAPI BOOL WINAPI              FileTimeToDosDateTime( CONST FILETIME *, LPWORD, LPWORD );
WINBASEAPI BOOL WINAPI              FileTimeToLocalFileTime( CONST FILETIME *, LPFILETIME );
WINBASEAPI BOOL WINAPI              FileTimeToSystemTime( CONST FILETIME *, LPSYSTEMTIME );
WINBASEAPI ATOM WINAPI              FindAtomA( LPCSTR );
WINBASEAPI ATOM WINAPI              FindAtomW( LPCWSTR );
WINBASEAPI BOOL WINAPI              FindClose( HANDLE );
WINBASEAPI BOOL WINAPI              FindCloseChangeNotification( HANDLE );
WINBASEAPI HANDLE WINAPI            FindFirstChangeNotificationA( LPCSTR, BOOL, DWORD );
WINBASEAPI HANDLE WINAPI            FindFirstChangeNotificationW( LPCWSTR, BOOL, DWORD );
WINBASEAPI HANDLE WINAPI            FindFirstFileA( LPCSTR, LPWIN32_FIND_DATAA );
WINBASEAPI HANDLE WINAPI            FindFirstFileW( LPCWSTR, LPWIN32_FIND_DATAW );
WINBASEAPI BOOL WINAPI              FindNextChangeNotification( HANDLE );
WINBASEAPI BOOL WINAPI              FindNextFileA( HANDLE, LPWIN32_FIND_DATAA );
WINBASEAPI BOOL WINAPI              FindNextFileW( HANDLE, LPWIN32_FIND_DATAW );
WINBASEAPI HRSRC WINAPI             FindResourceA( HMODULE, LPCSTR, LPCSTR );
WINBASEAPI HRSRC WINAPI             FindResourceExA( HMODULE, LPCSTR, LPCSTR, WORD );
WINBASEAPI HRSRC WINAPI             FindResourceExW( HMODULE, LPCWSTR, LPCWSTR, WORD );
WINBASEAPI HRSRC WINAPI             FindResourceW( HMODULE, LPCWSTR, LPCWSTR );
WINBASEAPI DWORD WINAPI             FlsAlloc( PFLS_CALLBACK_FUNCTION );
WINBASEAPI BOOL WINAPI              FlsFree( DWORD );
WINBASEAPI PVOID WINAPI             FlsGetValue( DWORD );
WINBASEAPI BOOL WINAPI              FlsSetValue( DWORD, PVOID );
WINBASEAPI BOOL WINAPI              FlushFileBuffers( HANDLE );
WINBASEAPI BOOL WINAPI              FlushInstructionCache( HANDLE, LPCVOID, SIZE_T );
WINBASEAPI BOOL WINAPI              FlushViewOfFile( LPCVOID, SIZE_T );
WINBASEAPI DWORD WINAPI             FormatMessageA( DWORD, LPCVOID, DWORD, DWORD, LPSTR, DWORD, va_list * );
WINBASEAPI DWORD WINAPI             FormatMessageW( DWORD, LPCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list * );
WINBASEAPI BOOL WINAPI              FreeEnvironmentStringsA( LPCH );
WINBASEAPI BOOL WINAPI              FreeEnvironmentStringsW( LPWCH );
WINBASEAPI BOOL WINAPI              FreeLibrary( HMODULE );
WINBASEAPI DECLSPEC_NORETURN VOID WINAPI    FreeLibraryAndExitThread( HMODULE, DWORD );
WINBASEAPI BOOL WINAPI              FreeResource( HGLOBAL );
WINBASEAPI HRESULT WINAPI           GetApplicationRecoveryCallback( HANDLE, APPLICATION_RECOVERY_CALLBACK *, PVOID *, PDWORD, PDWORD );
WINBASEAPI HRESULT WINAPI           GetApplicationRestartSettings( HANDLE, PWSTR, PDWORD, PDWORD );
WINBASEAPI UINT WINAPI              GetAtomNameA( ATOM, LPSTR, int );
WINBASEAPI UINT WINAPI              GetAtomNameW( ATOM, LPWSTR, int );
WINBASEAPI BOOL WINAPI              GetBinaryTypeA( LPCSTR, LPDWORD );
WINBASEAPI BOOL WINAPI              GetBinaryTypeW( LPCWSTR, LPDWORD );
WINBASEAPI BOOL WINAPI              GetCommConfig( HANDLE, LPCOMMCONFIG, LPDWORD );
WINBASEAPI BOOL WINAPI              GetCommMask( HANDLE, LPDWORD );
WINBASEAPI BOOL WINAPI              GetCommModemStatus( HANDLE, LPDWORD );
WINBASEAPI BOOL WINAPI              GetCommProperties( HANDLE, LPCOMMPROP );
WINBASEAPI BOOL WINAPI              GetCommState( HANDLE, LPDCB );
WINBASEAPI BOOL WINAPI              GetCommTimeouts( HANDLE, LPCOMMTIMEOUTS );
WINBASEAPI LPSTR WINAPI             GetCommandLineA( VOID );
WINBASEAPI LPWSTR WINAPI            GetCommandLineW( VOID );
WINBASEAPI DWORD WINAPI             GetCompressedFileSizeA( LPCSTR, LPDWORD );
WINBASEAPI DWORD WINAPI             GetCompressedFileSizeW( LPCWSTR, LPDWORD );
WINBASEAPI BOOL WINAPI              GetComputerNameA( LPSTR, LPDWORD );
WINBASEAPI BOOL WINAPI              GetComputerNameW( LPWSTR, LPDWORD );
WINBASEAPI DWORD WINAPI             GetCurrentDirectoryA( DWORD, LPSTR );
WINBASEAPI DWORD WINAPI             GetCurrentDirectoryW( DWORD, LPWSTR );
WINBASEAPI HANDLE WINAPI            GetCurrentProcess( VOID );
WINBASEAPI DWORD WINAPI             GetCurrentProcessId( VOID );
WINBASEAPI DWORD WINAPI             GetCurrentProcessorNumber( VOID );
WINBASEAPI HANDLE WINAPI            GetCurrentThread( VOID );
WINBASEAPI DWORD WINAPI             GetCurrentThreadId( VOID );
WINBASEAPI BOOL WINAPI              GetDefaultCommConfigA( LPCSTR, LPCOMMCONFIG, LPDWORD );
WINBASEAPI BOOL WINAPI              GetDefaultCommConfigW( LPCWSTR, LPCOMMCONFIG, LPDWORD );
WINBASEAPI BOOL WINAPI              GetDevicePowerState( HANDLE, BOOL * );
WINBASEAPI BOOL WINAPI              GetDiskFreeSpaceA( LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD );
WINBASEAPI BOOL WINAPI              GetDiskFreeSpaceExA( LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER );
WINBASEAPI BOOL WINAPI              GetDiskFreeSpaceExW( LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER );
WINBASEAPI BOOL WINAPI              GetDiskFreeSpaceW( LPCWSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD );
WINBASEAPI UINT WINAPI              GetDriveTypeA( LPCSTR );
WINBASEAPI UINT WINAPI              GetDriveTypeW( LPCWSTR );
WINBASEAPI DWORD WINAPI             GetDynamicTimeZoneInformation( PDYNAMIC_TIME_ZONE_INFORMATION );
WINBASEAPI LPCH WINAPI              GetEnvironmentStringsA( VOID );
WINBASEAPI LPWCH WINAPI             GetEnvironmentStringsW( VOID );
WINBASEAPI DWORD WINAPI             GetEnvironmentVariableA( LPCSTR, LPSTR, DWORD );
WINBASEAPI DWORD WINAPI             GetEnvironmentVariableW( LPCWSTR, LPWSTR, DWORD );
WINBASEAPI UINT WINAPI              GetErrorMode( VOID );
WINBASEAPI BOOL WINAPI              GetExitCodeProcess( HANDLE, LPDWORD );
WINBASEAPI BOOL WINAPI              GetExitCodeThread( HANDLE, LPDWORD );
WINBASEAPI DWORD WINAPI             GetFileAttributesA( LPCSTR );
WINBASEAPI BOOL WINAPI              GetFileAttributesExA( LPCSTR, GET_FILEEX_INFO_LEVELS, LPVOID );
WINBASEAPI BOOL WINAPI              GetFileAttributesExW( LPCWSTR, GET_FILEEX_INFO_LEVELS, LPVOID );
WINBASEAPI DWORD WINAPI             GetFileAttributesW( LPCWSTR );
WINBASEAPI BOOL WINAPI              GetFileBandwidthReservation( HANDLE, LPDWORD, LPDWORD, LPBOOL, LPDWORD, LPDWORD );
WINBASEAPI BOOL WINAPI              GetFileInformationByHandle( HANDLE, LPBY_HANDLE_FILE_INFORMATION );
WINBASEAPI DWORD WINAPI             GetFileSize( HANDLE, LPDWORD );
WINBASEAPI BOOL WINAPI              GetFileSizeEx( HANDLE, PLARGE_INTEGER );
WINBASEAPI BOOL WINAPI              GetFileTime( HANDLE, LPFILETIME, LPFILETIME, LPFILETIME );
WINBASEAPI DWORD WINAPI             GetFileType( HANDLE );
WINBASEAPI DWORD WINAPI             GetFirmwareEnvironmentVariableA( LPCSTR, LPCSTR, PVOID, DWORD );
WINBASEAPI DWORD WINAPI             GetFirmwareEnvironmentVariableW( LPCWSTR, LPCWSTR, PVOID, DWORD );
WINBASEAPI DWORD WINAPI             GetFullPathNameA( LPCSTR, DWORD, LPSTR, LPSTR * );
WINBASEAPI DWORD WINAPI             GetFullPathNameW( LPCWSTR, DWORD, LPWSTR, LPWSTR * );
WINBASEAPI BOOL WINAPI              GetHandleInformation( HANDLE, LPDWORD );
WINBASEAPI DWORD WINAPI             GetLastError( VOID );
WINBASEAPI SIZE_T WINAPI            GetLargePageMinimum( VOID );
WINBASEAPI VOID WINAPI              GetLocalTime( LPSYSTEMTIME );
WINBASEAPI DWORD WINAPI             GetLogicalDriveStringsA( DWORD, LPSTR );
WINBASEAPI DWORD WINAPI             GetLogicalDriveStringsW( DWORD, LPWSTR );
WINBASEAPI DWORD WINAPI             GetLogicalDrives( VOID );
WINBASEAPI BOOL WINAPI              GetLogicalProcessorInformation( PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, PDWORD );
WINBASEAPI DWORD WINAPI             GetLongPathNameA( LPCSTR, LPSTR, DWORD );
WINBASEAPI DWORD WINAPI             GetLongPathNameW( LPCWSTR, LPWSTR, DWORD );
WINBASEAPI BOOL WINAPI              GetMailslotInfo( HANDLE, LPDWORD, LPDWORD, LPDWORD, LPDWORD );
WINBASEAPI DWORD WINAPI             GetModuleFileNameA( HMODULE, LPCH, DWORD );
WINBASEAPI DWORD WINAPI             GetModuleFileNameW( HMODULE, LPWCH, DWORD );
WINBASEAPI HMODULE WINAPI           GetModuleHandleA( LPCSTR );
WINBASEAPI HMODULE WINAPI           GetModuleHandleW( LPCWSTR );
WINBASEAPI BOOL WINAPI              GetNamedPipeAttribute( HANDLE, PIPE_ATTRIBUTE_TYPE, PSTR, PVOID, PSIZE_T );
WINBASEAPI BOOL WINAPI              GetNamedPipeClientComputerNameA( HANDLE, LPSTR, ULONG );
WINBASEAPI BOOL WINAPI              GetNamedPipeClientComputerNameW( HANDLE, LPWSTR, ULONG );
WINBASEAPI BOOL WINAPI              GetNamedPipeClientProcessId( HANDLE, PULONG );
WINBASEAPI BOOL WINAPI              GetNamedPipeClientSessionId( HANDLE, PULONG );
WINBASEAPI BOOL WINAPI              GetNamedPipeHandleStateA( HANDLE, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPSTR, DWORD );
WINBASEAPI BOOL WINAPI              GetNamedPipeHandleStateW( HANDLE, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPWSTR, DWORD );
WINBASEAPI BOOL WINAPI              GetNamedPipeInfo( HANDLE, LPDWORD, LPDWORD, LPDWORD, LPDWORD );
WINBASEAPI BOOL WINAPI              GetNamedPipeServerProcessId( HANDLE, PULONG );
WINBASEAPI BOOL WINAPI              GetNamedPipeServerSessionId( HANDLE, PULONG );
WINBASEAPI BOOL WINAPI              GetNumaAvailableMemoryNode( UCHAR, PULONGLONG );
WINBASEAPI BOOL WINAPI              GetNumaHighestNodeNumber( PULONG );
WINBASEAPI BOOL WINAPI              GetNumaNodeProcessorMask( UCHAR, PULONGLONG );
WINBASEAPI BOOL WINAPI              GetNumaProcessorNode( UCHAR, PUCHAR );
WINBASEAPI BOOL WINAPI              GetOverlappedResult( HANDLE, LPOVERLAPPED, LPDWORD, BOOL );
WINBASEAPI BOOL WINAPI              GetPhysicallyInstalledSystemMemory( PULONGLONG );
WINBASEAPI DWORD WINAPI             GetPriorityClass( HANDLE );
WINBASEAPI UINT WINAPI              GetPrivateProfileIntA( LPCSTR, LPCSTR, INT, LPCSTR );
WINBASEAPI UINT WINAPI              GetPrivateProfileIntW( LPCWSTR, LPCWSTR, INT, LPCWSTR );
WINBASEAPI DWORD WINAPI             GetPrivateProfileSectionA( LPCSTR, LPSTR, DWORD, LPCSTR );
WINBASEAPI DWORD WINAPI             GetPrivateProfileSectionNamesA( LPSTR, DWORD, LPCSTR );
WINBASEAPI DWORD WINAPI             GetPrivateProfileSectionNamesW( LPWSTR, DWORD, LPCWSTR );
WINBASEAPI DWORD WINAPI             GetPrivateProfileSectionW( LPCWSTR, LPWSTR, DWORD, LPCWSTR );
WINBASEAPI DWORD WINAPI             GetPrivateProfileStringA( LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD, LPCSTR );
WINBASEAPI DWORD WINAPI             GetPrivateProfileStringW( LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPCWSTR );
WINBASEAPI BOOL WINAPI              GetPrivateProfileStructA( LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR );
WINBASEAPI BOOL WINAPI              GetPrivateProfileStructW( LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR );
WINBASEAPI FARPROC WINAPI           GetProcAddress( HMODULE, LPCSTR );
WINBASEAPI BOOL WINAPI              GetProcessAffinityMask( HANDLE, PDWORD_PTR, PDWORD_PTR );
WINBASEAPI HANDLE WINAPI            GetProcessHeap( VOID );
WINBASEAPI DWORD WINAPI             GetProcessHeaps( DWORD, PHANDLE );
WINBASEAPI DWORD WINAPI             GetProcessId( HANDLE );
WINBASEAPI DWORD WINAPI             GetProcessIdOfThread( HANDLE );
WINBASEAPI BOOL WINAPI              GetProcessIoCounters( HANDLE, PIO_COUNTERS );
WINBASEAPI BOOL WINAPI              GetProcessPriorityBoost( HANDLE, PBOOL );
WINBASEAPI BOOL WINAPI              GetProcessShutdownParameters( LPDWORD, LPDWORD );
WINBASEAPI BOOL WINAPI              GetProcessTimes( HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME );
WINBASEAPI DWORD WINAPI             GetProcessVersion( DWORD );
WINBASEAPI BOOL WINAPI              GetProcessWorkingSetSize( HANDLE, PSIZE_T, PSIZE_T );
WINBASEAPI BOOL WINAPI              GetProcessWorkingSetSizeEx( HANDLE, PSIZE_T, PSIZE_T, PDWORD );
WINBASEAPI UINT WINAPI              GetProfileIntA( LPCSTR, LPCSTR, INT );
WINBASEAPI UINT WINAPI              GetProfileIntW( LPCWSTR, LPCWSTR, INT );
WINBASEAPI DWORD WINAPI             GetProfileSectionA( LPCSTR, LPSTR, DWORD );
WINBASEAPI DWORD WINAPI             GetProfileSectionW( LPCWSTR, LPWSTR, DWORD );
WINBASEAPI DWORD WINAPI             GetProfileStringA( LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD );
WINBASEAPI DWORD WINAPI             GetProfileStringW( LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD );
WINBASEAPI BOOL WINAPI              GetQueuedCompletionStatus( HANDLE, LPDWORD, PULONG_PTR, LPOVERLAPPED *, DWORD );
WINBASEAPI DWORD WINAPI             GetShortPathNameA( LPCSTR, LPSTR, DWORD );
WINBASEAPI DWORD WINAPI             GetShortPathNameW( LPCWSTR, LPWSTR, DWORD );
WINBASEAPI VOID WINAPI              GetStartupInfoA( LPSTARTUPINFOA );
WINBASEAPI VOID WINAPI              GetStartupInfoW( LPSTARTUPINFOW );
WINBASEAPI HANDLE WINAPI            GetStdHandle( DWORD );
WINBASEAPI DEP_SYSTEM_POLICY_TYPE WINAPI    GetSystemDEPPolicy( VOID );
WINBASEAPI UINT WINAPI              GetSystemDirectoryA( LPSTR, UINT );
WINBASEAPI UINT WINAPI              GetSystemDirectoryW( LPWSTR, UINT );
WINBASEAPI UINT WINAPI              GetSystemFirmwareTable( DWORD, DWORD, PVOID, DWORD );
WINBASEAPI VOID WINAPI              GetSystemInfo( LPSYSTEM_INFO );
WINBASEAPI VOID WINAPI              GetSystemTime( LPSYSTEMTIME );
WINBASEAPI BOOL WINAPI              GetSystemTimeAdjustment( PDWORD, PDWORD, PBOOL );
WINBASEAPI VOID WINAPI              GetSystemTimeAsFileTime( LPFILETIME );
WINBASEAPI UINT WINAPI              GetSystemWindowsDirectoryA( LPSTR, UINT );
WINBASEAPI UINT WINAPI              GetSystemWindowsDirectoryW( LPWSTR, UINT );
WINBASEAPI DWORD WINAPI             GetTapeParameters( HANDLE, DWORD, LPDWORD, LPVOID );
WINBASEAPI DWORD WINAPI             GetTapePosition( HANDLE, DWORD, LPDWORD, LPDWORD, LPDWORD );
WINBASEAPI DWORD WINAPI             GetTapeStatus( HANDLE );
WINBASEAPI UINT WINAPI              GetTempFileNameA( LPCSTR, LPCSTR, UINT, LPSTR );
WINBASEAPI UINT WINAPI              GetTempFileNameW( LPCWSTR, LPCWSTR, UINT, LPWSTR );
WINBASEAPI DWORD WINAPI             GetTempPathA( DWORD, LPSTR );
WINBASEAPI DWORD WINAPI             GetTempPathW( DWORD, LPWSTR );
WINBASEAPI BOOL WINAPI              GetThreadContext( HANDLE, LPCONTEXT );
WINBASEAPI DWORD WINAPI             GetThreadErrorMode( VOID );
WINBASEAPI int WINAPI               GetThreadPriority( HANDLE );
WINBASEAPI BOOL WINAPI              GetThreadPriorityBoost( HANDLE, PBOOL );
WINBASEAPI BOOL WINAPI              GetThreadSelectorEntry( HANDLE, DWORD, LPLDT_ENTRY );
WINBASEAPI BOOL WINAPI              GetThreadTimes( HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME );
WINBASEAPI DWORD WINAPI             GetTickCount( VOID );
WINBASEAPI DWORD WINAPI             GetTimeZoneInformation( LPTIME_ZONE_INFORMATION );
WINBASEAPI BOOL WINAPI              GetTimeZoneInformationForYear( USHORT, PDYNAMIC_TIME_ZONE_INFORMATION, LPTIME_ZONE_INFORMATION );
WINBASEAPI DWORD WINAPI             GetVersion( VOID );
WINBASEAPI BOOL WINAPI              GetVersionExA( LPOSVERSIONINFOA );
WINBASEAPI BOOL WINAPI              GetVersionExW( LPOSVERSIONINFOW );
WINBASEAPI BOOL WINAPI              GetVolumeInformationA( LPCSTR, LPSTR, DWORD, LPDWORD, LPDWORD, LPDWORD, LPSTR, DWORD );
WINBASEAPI BOOL WINAPI              GetVolumeInformationW( LPCWSTR, LPWSTR, DWORD, LPDWORD, LPDWORD, LPDWORD, LPWSTR, DWORD );
WINBASEAPI UINT WINAPI              GetWindowsDirectoryA( LPSTR, UINT );
WINBASEAPI UINT WINAPI              GetWindowsDirectoryW( LPWSTR, UINT );
WINBASEAPI UINT WINAPI              GetWriteWatch( DWORD, PVOID, SIZE_T, PVOID *, ULONG_PTR *, PULONG );
WINBASEAPI ATOM WINAPI              GlobalAddAtomA( LPCSTR );
WINBASEAPI ATOM WINAPI              GlobalAddAtomW( LPCWSTR );
WINBASEAPI HGLOBAL WINAPI           GlobalAlloc( UINT, SIZE_T );
WINBASEAPI SIZE_T WINAPI            GlobalCompact( DWORD );
WINBASEAPI ATOM WINAPI              GlobalDeleteAtom( ATOM );
WINBASEAPI ATOM WINAPI              GlobalFindAtomA( LPCSTR );
WINBASEAPI ATOM WINAPI              GlobalFindAtomW( LPCWSTR );
WINBASEAPI VOID WINAPI              GlobalFix( HGLOBAL );
WINBASEAPI UINT WINAPI              GlobalFlags( HGLOBAL );
WINBASEAPI HGLOBAL WINAPI           GlobalFree( HGLOBAL );
WINBASEAPI UINT WINAPI              GlobalGetAtomNameA( ATOM, LPSTR, int );
WINBASEAPI UINT WINAPI              GlobalGetAtomNameW( ATOM, LPWSTR, int );
WINBASEAPI HGLOBAL WINAPI           GlobalHandle( LPCVOID );
WINBASEAPI LPVOID WINAPI            GlobalLock( LPVOID );
WINBASEAPI VOID WINAPI              GlobalMemoryStatus( LPMEMORYSTATUS );
WINBASEAPI BOOL WINAPI              GlobalMemoryStatusEx( LPMEMORYSTATUSEX );
WINBASEAPI HGLOBAL WINAPI           GlobalReAlloc( HGLOBAL, SIZE_T, UINT );
WINBASEAPI SIZE_T WINAPI            GlobalSize( HGLOBAL );
WINBASEAPI BOOL WINAPI              GlobalUnWire( HGLOBAL );
WINBASEAPI VOID WINAPI              GlobalUnfix( HGLOBAL );
WINBASEAPI BOOL WINAPI              GlobalUnlock( HGLOBAL );
WINBASEAPI LPVOID WINAPI            GlobalWire( HGLOBAL );
WINBASEAPI LPVOID WINAPI            HeapAlloc( HANDLE, DWORD, SIZE_T );
WINBASEAPI SIZE_T WINAPI            HeapCompact( HANDLE, DWORD );
WINBASEAPI HANDLE WINAPI            HeapCreate( DWORD, SIZE_T, SIZE_T );
WINBASEAPI BOOL WINAPI              HeapDestroy( HANDLE );
WINBASEAPI BOOL WINAPI              HeapFree( HANDLE, DWORD, LPVOID );
WINBASEAPI BOOL WINAPI              HeapLock( HANDLE );
WINBASEAPI BOOL WINAPI              HeapQueryInformation( HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T );
WINBASEAPI LPVOID WINAPI            HeapReAlloc( HANDLE, DWORD, LPVOID, SIZE_T );
WINBASEAPI BOOL WINAPI              HeapSetInformation( HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T );
WINBASEAPI SIZE_T WINAPI            HeapSize( HANDLE, DWORD, LPCVOID );
WINBASEAPI BOOL WINAPI              HeapUnlock( HANDLE );
WINBASEAPI BOOL WINAPI              HeapValidate( HANDLE, DWORD, LPCVOID );
WINBASEAPI BOOL WINAPI              HeapWalk( HANDLE, LPPROCESS_HEAP_ENTRY );
WINBASEAPI BOOL WINAPI              InitAtomTable( DWORD );
WINBASEAPI VOID WINAPI              InitializeConditionVariable( PCONDITION_VARIABLE );
WINBASEAPI VOID WINAPI              InitializeCriticalSection( LPCRITICAL_SECTION );
WINBASEAPI VOID WINAPI              InitializeSListHead( PSLIST_HEADER );
WINBASEAPI VOID WINAPI              InitializeSRWLock( PSRWLOCK );
WINBASEAPI LONG WINAPI              InterlockedCompareExchange( LONG volatile *, LONG, LONG );
WINBASEAPI LONG WINAPI              InterlockedDecrement( LONG volatile * );
WINBASEAPI LONG WINAPI              InterlockedExchange( LONG volatile *, LONG );
WINBASEAPI LONG WINAPI              InterlockedExchangeAdd( LONG volatile *, LONG );
WINBASEAPI PSLIST_ENTRY WINAPI      InterlockedFlushSList( PSLIST_HEADER );
WINBASEAPI LONG WINAPI              InterlockedIncrement( LONG volatile * );
WINBASEAPI PSLIST_ENTRY WINAPI      InterlockedPopEntrySList( PSLIST_HEADER );
WINBASEAPI PSLIST_ENTRY WINAPI      InterlockedPushEntrySList( PSLIST_HEADER, PSLIST_ENTRY );
WINBASEAPI BOOL WINAPI              IsBadCodePtr( FARPROC );
WINBASEAPI BOOL WINAPI              IsBadHugeReadPtr( CONST VOID*, UINT_PTR );
WINBASEAPI BOOL WINAPI              IsBadHugeWritePtr( LPVOID, UINT_PTR );
WINBASEAPI BOOL WINAPI              IsBadReadPtr( CONST VOID *, UINT_PTR );
WINBASEAPI BOOL WINAPI              IsBadStringPtrA( LPCSTR, UINT_PTR );
WINBASEAPI BOOL WINAPI              IsBadStringPtrW( LPCWSTR, UINT_PTR );
WINBASEAPI BOOL WINAPI              IsBadWritePtr( LPVOID, UINT_PTR );
WINBASEAPI BOOL WINAPI              IsProcessorFeaturePresent( DWORD );
WINBASEAPI BOOL WINAPI              IsSystemResumeAutomatic( VOID );
WINBASEAPI VOID WINAPI              LeaveCriticalSection( LPCRITICAL_SECTION );
WINBASEAPI HMODULE WINAPI           LoadLibraryA( LPCSTR );
WINBASEAPI HMODULE WINAPI           LoadLibraryExA( LPCSTR, HANDLE, DWORD );
WINBASEAPI HMODULE WINAPI           LoadLibraryExW( LPCWSTR, HANDLE, DWORD );
WINBASEAPI HMODULE WINAPI           LoadLibraryW( LPCWSTR );
WINBASEAPI DWORD WINAPI             LoadModule( LPCSTR, LPVOID );
WINBASEAPI HGLOBAL WINAPI           LoadResource( HMODULE, HRSRC );
WINBASEAPI HLOCAL WINAPI            LocalAlloc( UINT, SIZE_T );
WINBASEAPI SIZE_T WINAPI            LocalCompact( UINT );
WINBASEAPI BOOL WINAPI              LocalFileTimeToFileTime( CONST FILETIME *, LPFILETIME );
WINBASEAPI UINT WINAPI              LocalFlags( HLOCAL );
WINBASEAPI HLOCAL WINAPI            LocalFree( HLOCAL );
WINBASEAPI HLOCAL WINAPI            LocalHandle( LPCVOID );
WINBASEAPI LPVOID WINAPI            LocalLock( HLOCAL );
WINBASEAPI HLOCAL WINAPI            LocalReAlloc( HLOCAL, SIZE_T, UINT );
WINBASEAPI SIZE_T WINAPI            LocalShrink( HLOCAL, UINT );
WINBASEAPI SIZE_T WINAPI            LocalSize( HLOCAL );
WINBASEAPI BOOL WINAPI              LocalUnlock( HLOCAL );
WINBASEAPI BOOL WINAPI              LockFile( HANDLE, DWORD, DWORD, DWORD, DWORD );
WINBASEAPI BOOL WINAPI              LockFileEx( HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED );
WINBASEAPI LPVOID WINAPI            LockResource( HGLOBAL );
WINBASEAPI LPVOID WINAPI            MapViewOfFile( HANDLE, DWORD, DWORD, DWORD, SIZE_T );
WINBASEAPI LPVOID WINAPI            MapViewOfFileEx( HANDLE, DWORD, DWORD, DWORD, SIZE_T, LPVOID );
WINBASEAPI BOOL WINAPI              MoveFileA( LPCSTR, LPCSTR );
WINBASEAPI BOOL WINAPI              MoveFileExA( LPCSTR, LPCSTR, DWORD );
WINBASEAPI BOOL WINAPI              MoveFileExW( LPCWSTR, LPCWSTR, DWORD );
WINBASEAPI BOOL WINAPI              MoveFileW( LPCWSTR, LPCWSTR );
WINBASEAPI int WINAPI               MulDiv( int, int, int );
WINBASEAPI HANDLE WINAPI            OpenEventA( DWORD, BOOL, LPCSTR );
WINBASEAPI HANDLE WINAPI            OpenEventW( DWORD, BOOL, LPCWSTR );
WINBASEAPI HFILE WINAPI             OpenFile( LPCSTR, LPOFSTRUCT, UINT );
WINBASEAPI HANDLE WINAPI            OpenFileMappingA( DWORD, BOOL, LPCSTR );
WINBASEAPI HANDLE WINAPI            OpenFileMappingW( DWORD, BOOL, LPCWSTR );
WINBASEAPI HANDLE WINAPI            OpenMutexA( DWORD, BOOL, LPCSTR );
WINBASEAPI HANDLE WINAPI            OpenMutexW( DWORD, BOOL, LPCWSTR );
WINBASEAPI HANDLE WINAPI            OpenProcess( DWORD, BOOL, DWORD );
WINBASEAPI HANDLE WINAPI            OpenSemaphoreA( DWORD, BOOL, LPCSTR );
WINBASEAPI HANDLE WINAPI            OpenSemaphoreW( DWORD, BOOL, LPCWSTR );
WINBASEAPI HANDLE WINAPI            OpenThread( DWORD, BOOL, DWORD );
WINBASEAPI VOID WINAPI              OutputDebugStringA( LPCSTR );
WINBASEAPI VOID WINAPI              OutputDebugStringW( LPCWSTR );
WINBASEAPI BOOL WINAPI              PeekNamedPipe( HANDLE, LPVOID, DWORD, LPDWORD, LPDWORD, LPDWORD );
WINBASEAPI BOOL WINAPI              PostQueuedCompletionStatus( HANDLE, DWORD, ULONG_PTR, LPOVERLAPPED );
WINBASEAPI DWORD WINAPI             PrepareTape( HANDLE, DWORD, BOOL );
WINBASEAPI BOOL WINAPI              ProcessIdToSessionId( DWORD, DWORD * );
WINBASEAPI BOOL WINAPI              PulseEvent( HANDLE );
WINBASEAPI BOOL WINAPI              PurgeComm( HANDLE, DWORD );
WINBASEAPI USHORT WINAPI            QueryDepthSList( PSLIST_HEADER );
WINBASEAPI DWORD WINAPI             QueryDosDeviceA( LPCSTR, LPSTR, DWORD );
WINBASEAPI DWORD WINAPI             QueryDosDeviceW( LPCWSTR, LPWSTR, DWORD );
WINBASEAPI BOOL WINAPI              QueryPerformanceCounter( LARGE_INTEGER * );
WINBASEAPI BOOL WINAPI              QueryPerformanceFrequency( LARGE_INTEGER * );
WINBASEAPI VOID WINAPI              RaiseException( DWORD, DWORD, DWORD, CONST ULONG_PTR * );
WINBASEAPI VOID WINAPI              RaiseFailFastException( PEXCEPTION_RECORD, PCONTEXT, DWORD );
WINBASEAPI BOOL WINAPI              ReadFile( HANDLE, LPVOID, DWORD, LPDWORD, LPOVERLAPPED );
WINBASEAPI BOOL WINAPI              ReadFileEx( HANDLE, LPVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE );
WINBASEAPI BOOL WINAPI              ReadFileScatter( HANDLE, FILE_SEGMENT_ELEMENT [], DWORD, LPDWORD, LPOVERLAPPED );
WINBASEAPI BOOL WINAPI              ReadProcessMemory( HANDLE, LPCVOID, LPVOID, SIZE_T, SIZE_T * );
WINBASEAPI HRESULT WINAPI           RegisterApplicationRecoveryCallback( APPLICATION_RECOVERY_CALLBACK, PVOID, DWORD, DWORD );
WINBASEAPI HRESULT WINAPI           RegisterApplicationRestart( PCWSTR, DWORD );
WINBASEAPI BOOL WINAPI              ReleaseMutex( HANDLE );
WINBASEAPI VOID WINAPI              ReleaseSRWLockExclusive( PSRWLOCK );
WINBASEAPI VOID WINAPI              ReleaseSRWLockShared( PSRWLOCK );
WINBASEAPI BOOL WINAPI              ReleaseSemaphore( HANDLE, LONG, LPLONG );
WINBASEAPI BOOL WINAPI              RemoveDirectoryA( LPCSTR );
WINBASEAPI BOOL WINAPI              RemoveDirectoryW( LPCWSTR );
WINBASEAPI BOOL WINAPI              RequestDeviceWakeup( HANDLE );
WINBASEAPI BOOL WINAPI              RequestWakeupLatency( LATENCY_TIME );
WINBASEAPI BOOL WINAPI              ResetEvent( HANDLE );
WINBASEAPI UINT WINAPI              ResetWriteWatch( LPVOID, SIZE_T );
WINBASEAPI VOID WINAPI              RestoreLastError( DWORD );
WINBASEAPI DWORD WINAPI             ResumeThread( HANDLE );
WINBASEAPI DWORD WINAPI             SearchPathA( LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR * );
WINBASEAPI DWORD WINAPI             SearchPathW( LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR * );
WINBASEAPI BOOL WINAPI              SetCommBreak( HANDLE );
WINBASEAPI BOOL WINAPI              SetCommConfig( HANDLE, LPCOMMCONFIG, DWORD );
WINBASEAPI BOOL WINAPI              SetCommMask( HANDLE, DWORD );
WINBASEAPI BOOL WINAPI              SetCommState( HANDLE, LPDCB );
WINBASEAPI BOOL WINAPI              SetCommTimeouts( HANDLE, LPCOMMTIMEOUTS );
WINBASEAPI BOOL WINAPI              SetComputerNameA( LPCSTR );
WINBASEAPI BOOL WINAPI              SetComputerNameW( LPCWSTR );
WINBASEAPI BOOL WINAPI              SetCurrentDirectoryA( LPCSTR );
WINBASEAPI BOOL WINAPI              SetCurrentDirectoryW( LPCWSTR );
WINBASEAPI BOOL WINAPI              SetDefaultCommConfigA( LPCSTR, LPCOMMCONFIG, DWORD );
WINBASEAPI BOOL WINAPI              SetDefaultCommConfigW( LPCWSTR, LPCOMMCONFIG, DWORD );
WINBASEAPI BOOL WINAPI              SetDynamicTimeZoneInformation( CONST DYNAMIC_TIME_ZONE_INFORMATION * );
WINBASEAPI BOOL WINAPI              SetEndOfFile( HANDLE );
WINBASEAPI BOOL WINAPI              SetEnvironmentStringsA( LPCH );
WINBASEAPI BOOL WINAPI              SetEnvironmentStringsW( LPWCH );
WINBASEAPI BOOL WINAPI              SetEnvironmentVariableA( LPCSTR, LPCSTR );
WINBASEAPI BOOL WINAPI              SetEnvironmentVariableW( LPCWSTR, LPCWSTR );
WINBASEAPI UINT WINAPI              SetErrorMode( UINT );
WINBASEAPI BOOL WINAPI              SetEvent( HANDLE );
WINBASEAPI VOID WINAPI              SetFileApisToANSI( VOID );
WINBASEAPI VOID WINAPI              SetFileApisToOEM( VOID );
WINBASEAPI BOOL WINAPI              SetFileAttributesA( LPCSTR, DWORD );
WINBASEAPI BOOL WINAPI              SetFileAttributesW( LPCWSTR, DWORD );
WINBASEAPI BOOL WINAPI              SetFileBandwidthReservation( HANDLE, DWORD, DWORD, BOOL, LPDWORD, LPDWORD );
WINBASEAPI DWORD WINAPI             SetFilePointer( HANDLE, LONG, PLONG, DWORD );
WINBASEAPI BOOL WINAPI              SetFilePointerEx( HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD );
WINBASEAPI BOOL WINAPI              SetFileShortNameA( HANDLE, LPCSTR );
WINBASEAPI BOOL WINAPI              SetFileShortNameW( HANDLE, LPCWSTR );
WINBASEAPI BOOL WINAPI              SetFileTime( HANDLE, CONST FILETIME *, CONST FILETIME *, CONST FILETIME * );
WINBASEAPI BOOL WINAPI              SetFirmwareEnvironmentVariableA( LPCSTR, LPCSTR, PVOID, DWORD );
WINBASEAPI BOOL WINAPI              SetFirmwareEnvironmentVariableW( LPCWSTR, LPCWSTR, PVOID, DWORD );
WINBASEAPI UINT WINAPI              SetHandleCount( UINT );
WINBASEAPI BOOL WINAPI              SetHandleInformation( HANDLE, DWORD, DWORD );
WINBASEAPI VOID WINAPI              SetLastError( DWORD );
WINBASEAPI BOOL WINAPI              SetLocalTime( CONST SYSTEMTIME * );
WINBASEAPI BOOL WINAPI              SetMailslotInfo( HANDLE, DWORD );
WINBASEAPI BOOL WINAPI              SetMessageWaitingIndicator( HANDLE, ULONG );
WINBASEAPI BOOL WINAPI              SetNamedPipeAttribute( HANDLE, PIPE_ATTRIBUTE_TYPE, PSTR, PVOID, SIZE_T );
WINBASEAPI BOOL WINAPI              SetNamedPipeHandleState( HANDLE, LPDWORD, LPDWORD, LPDWORD );
WINBASEAPI BOOL WINAPI              SetPriorityClass( HANDLE, DWORD );
WINBASEAPI BOOL WINAPI              SetProcessAffinityMask( HANDLE, DWORD_PTR );
WINBASEAPI BOOL WINAPI              SetProcessPriorityBoost( HANDLE, BOOL );
WINBASEAPI BOOL WINAPI              SetProcessShutdownParameters( DWORD, DWORD );
WINBASEAPI BOOL WINAPI              SetProcessWorkingSetSize( HANDLE, SIZE_T, SIZE_T );
WINBASEAPI BOOL WINAPI              SetProcessWorkingSetSizeEx( HANDLE, SIZE_T, SIZE_T, DWORD );
WINBASEAPI BOOL WINAPI              SetSearchPathMode( DWORD );
WINBASEAPI BOOL WINAPI              SetStdHandle( DWORD, HANDLE );
WINBASEAPI BOOL WINAPI              SetSystemTime( CONST SYSTEMTIME * );
WINBASEAPI BOOL WINAPI              SetSystemTimeAdjustment( DWORD, BOOL );
WINBASEAPI DWORD WINAPI             SetTapeParameters( HANDLE, DWORD, LPVOID );
WINBASEAPI DWORD WINAPI             SetTapePosition( HANDLE, DWORD, DWORD, DWORD, DWORD, BOOL );
WINBASEAPI DWORD_PTR WINAPI         SetThreadAffinityMask( HANDLE, DWORD_PTR );
WINBASEAPI BOOL WINAPI              SetThreadContext( HANDLE, CONST CONTEXT * );
WINBASEAPI BOOL WINAPI              SetThreadErrorMode( DWORD, LPDWORD );
WINBASEAPI EXECUTION_STATE WINAPI   SetThreadExecutionState( EXECUTION_STATE );
WINBASEAPI BOOL WINAPI              SetThreadPriority( HANDLE, int );
WINBASEAPI BOOL WINAPI              SetThreadPriorityBoost( HANDLE, BOOL );
WINBASEAPI BOOL WINAPI              SetThreadStackGuarantee( PULONG );
WINBASEAPI BOOL WINAPI              SetTimeZoneInformation( CONST TIME_ZONE_INFORMATION * );
WINBASEAPI LPTOP_LEVEL_EXCEPTION_FILTER WINAPI  SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER );
WINBASEAPI BOOL WINAPI              SetVolumeLabelA( LPCSTR, LPCSTR );
WINBASEAPI BOOL WINAPI              SetVolumeLabelW( LPCWSTR, LPCWSTR );
WINBASEAPI BOOL WINAPI              SetupComm( HANDLE, DWORD, DWORD );
WINBASEAPI DWORD WINAPI             SizeofResource( HMODULE, HRSRC );
WINBASEAPI VOID WINAPI              Sleep( DWORD );
WINBASEAPI BOOL WINAPI              SleepConditionVariableCS( PCONDITION_VARIABLE, PCRITICAL_SECTION, DWORD );
WINBASEAPI BOOL WINAPI              SleepConditionVariableSRW( PCONDITION_VARIABLE, PSRWLOCK, DWORD, ULONG );
WINBASEAPI DWORD WINAPI             SleepEx( DWORD, BOOL );
WINBASEAPI DWORD WINAPI             SuspendThread( HANDLE );
WINBASEAPI BOOL WINAPI              SystemTimeToFileTime( CONST SYSTEMTIME *, LPFILETIME );
WINBASEAPI BOOL WINAPI              SystemTimeToTzSpecificLocalTime( LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME );
WINBASEAPI BOOL WINAPI              TerminateProcess( HANDLE, UINT );
WINBASEAPI BOOL WINAPI              TerminateThread( HANDLE, DWORD );
WINBASEAPI DWORD WINAPI             TlsAlloc( VOID );
WINBASEAPI BOOL WINAPI              TlsFree( DWORD );
WINBASEAPI LPVOID WINAPI            TlsGetValue( DWORD );
WINBASEAPI BOOL WINAPI              TlsSetValue( DWORD, LPVOID );
WINBASEAPI BOOL WINAPI              TransactNamedPipe( HANDLE, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPOVERLAPPED );
WINBASEAPI BOOL WINAPI              TransmitCommChar( HANDLE, char );
WINBASEAPI BOOLEAN WINAPI           TryAcquireSRWLockExclusive( PSRWLOCK );
WINBASEAPI BOOLEAN WINAPI           TryAcquireSRWLockShared( PSRWLOCK );
WINBASEAPI BOOL WINAPI              TzSpecificLocalTimeToSystemTime( CONST TIME_ZONE_INFORMATION *, LPSYSTEMTIME, LPSYSTEMTIME );
WINBASEAPI LONG WINAPI              UnhandledExceptionFilter( struct _EXCEPTION_POINTERS * );
WINBASEAPI BOOL WINAPI              UnlockFile( HANDLE, DWORD, DWORD, DWORD, DWORD );
WINBASEAPI BOOL WINAPI              UnlockFileEx( HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED );
WINBASEAPI BOOL WINAPI              UnmapViewOfFile( LPCVOID );
WINBASEAPI HRESULT WINAPI           UnregisterApplicationRecoveryCallback( void );
WINBASEAPI HRESULT WINAPI           UnregisterApplicationRestart( void );
WINBASEAPI BOOL WINAPI              UpdateResourceA( HANDLE, LPCSTR, LPCSTR, WORD, LPVOID, DWORD );
WINBASEAPI BOOL WINAPI              UpdateResourceW( HANDLE, LPCWSTR, LPCWSTR, WORD, LPVOID, DWORD );
WINBASEAPI BOOL WINAPI              VerifyVersionInfoA( LPOSVERSIONINFOEXA, DWORD, DWORDLONG );
WINBASEAPI BOOL WINAPI              VerifyVersionInfoW( LPOSVERSIONINFOEXW, DWORD, DWORDLONG );
WINBASEAPI LPVOID WINAPI            VirtualAlloc( LPVOID, SIZE_T, DWORD, DWORD );
WINBASEAPI LPVOID WINAPI            VirtualAllocEx( HANDLE, LPVOID, SIZE_T, DWORD, DWORD );
WINBASEAPI BOOL WINAPI              VirtualFree( LPVOID, SIZE_T, DWORD );
WINBASEAPI BOOL WINAPI              VirtualFreeEx( HANDLE, LPVOID, SIZE_T, DWORD );
WINBASEAPI BOOL WINAPI              VirtualLock( LPVOID, SIZE_T );
WINBASEAPI BOOL WINAPI              VirtualProtect( LPVOID, SIZE_T, DWORD, PDWORD );
WINBASEAPI BOOL WINAPI              VirtualProtectEx( HANDLE, LPVOID, SIZE_T, DWORD, PDWORD );
WINBASEAPI SIZE_T WINAPI            VirtualQuery( LPCVOID, PMEMORY_BASIC_INFORMATION, SIZE_T );
WINBASEAPI SIZE_T WINAPI            VirtualQueryEx( HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, SIZE_T );
WINBASEAPI BOOL WINAPI              VirtualUnlock( LPVOID, SIZE_T );
WINBASEAPI BOOL WINAPI              WaitCommEvent( HANDLE, LPDWORD, LPOVERLAPPED );
WINBASEAPI BOOL WINAPI              WaitForDebugEvent( LPDEBUG_EVENT, DWORD );
WINBASEAPI DWORD WINAPI             WaitForMultipleObjects( DWORD, CONST HANDLE *, BOOL, DWORD );
WINBASEAPI DWORD WINAPI             WaitForMultipleObjectsEx( DWORD, CONST HANDLE *, BOOL, DWORD, BOOL );
WINBASEAPI DWORD WINAPI             WaitForSingleObject( HANDLE, DWORD );
WINBASEAPI DWORD WINAPI             WaitForSingleObjectEx( HANDLE, DWORD, BOOL );
WINBASEAPI BOOL WINAPI              WaitNamedPipeA( LPCSTR, DWORD );
WINBASEAPI BOOL WINAPI              WaitNamedPipeW( LPCWSTR, DWORD );
WINBASEAPI VOID WINAPI              WakeAllConditionVariable( PCONDITION_VARIABLE );
WINBASEAPI VOID WINAPI              WakeConditionVariable( PCONDITION_VARIABLE );
WINBASEAPI UINT WINAPI              WinExec( LPCSTR, UINT );
WINBASEAPI BOOL WINAPI              Wow64GetThreadContext( HANDLE, PWOW64_CONTEXT );
WINBASEAPI BOOL WINAPI              Wow64SetThreadContext( HANDLE, CONST WOW64_CONTEXT * );
WINBASEAPI DWORD WINAPI             Wow64SuspendThread( HANDLE );
WINBASEAPI BOOL WINAPI              WriteFile( HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED );
WINBASEAPI BOOL WINAPI              WriteFileEx( HANDLE, LPCVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE );
WINBASEAPI BOOL WINAPI              WriteFileGather( HANDLE, FILE_SEGMENT_ELEMENT [], DWORD, LPDWORD, LPOVERLAPPED );
WINBASEAPI BOOL WINAPI              WritePrivateProfileSectionA( LPCSTR, LPCSTR, LPCSTR );
WINBASEAPI BOOL WINAPI              WritePrivateProfileSectionW( LPCWSTR, LPCWSTR, LPCWSTR );
WINBASEAPI BOOL WINAPI              WritePrivateProfileStringA( LPCSTR, LPCSTR, LPCSTR, LPCSTR );
WINBASEAPI BOOL WINAPI              WritePrivateProfileStringW( LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR );
WINBASEAPI BOOL WINAPI              WritePrivateProfileStructA( LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR );
WINBASEAPI BOOL WINAPI              WritePrivateProfileStructW( LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR );
WINBASEAPI BOOL WINAPI              WriteProcessMemory( HANDLE, LPVOID, LPCVOID, SIZE_T, SIZE_T * );
WINBASEAPI BOOL WINAPI              WriteProfileSectionA( LPCSTR, LPCSTR );
WINBASEAPI BOOL WINAPI              WriteProfileSectionW( LPCWSTR, LPCWSTR );
WINBASEAPI BOOL WINAPI              WriteProfileStringA( LPCSTR, LPCSTR, LPCSTR );
WINBASEAPI BOOL WINAPI              WriteProfileStringW( LPCWSTR, LPCWSTR, LPCWSTR );
WINBASEAPI DWORD WINAPI             WriteTapemark( HANDLE, DWORD, DWORD, BOOL );
WINBASEAPI long WINAPI              _hread( HFILE, LPVOID, long );
WINBASEAPI long WINAPI              _hwrite( HFILE, LPCCH, long );
WINBASEAPI HFILE WINAPI             _lclose( HFILE );
WINBASEAPI HFILE WINAPI             _lcreat( LPCSTR, int );
WINBASEAPI LONG WINAPI              _llseek( HFILE, LONG, int );
WINBASEAPI HFILE WINAPI             _lopen( LPCSTR, int );
WINBASEAPI UINT WINAPI              _lread( HFILE, LPVOID, UINT );
WINBASEAPI UINT WINAPI              _lwrite( HFILE, LPCCH, UINT );
WINBASEAPI LPSTR WINAPI             lstrcatA( LPSTR, LPCSTR );
WINBASEAPI LPWSTR WINAPI            lstrcatW( LPWSTR, LPCWSTR );
WINBASEAPI int WINAPI               lstrcmpA( LPCSTR, LPCSTR );
WINBASEAPI int WINAPI               lstrcmpW( LPCWSTR, LPCWSTR );
WINBASEAPI int WINAPI               lstrcmpiA( LPCSTR, LPCSTR );
WINBASEAPI int WINAPI               lstrcmpiW( LPCWSTR, LPCWSTR );
WINBASEAPI LPSTR WINAPI             lstrcpyA( LPSTR, LPCSTR );
WINBASEAPI LPWSTR WINAPI            lstrcpyW( LPWSTR, LPCWSTR );
WINBASEAPI LPSTR WINAPI             lstrcpynA( LPSTR, LPCSTR, int );
WINBASEAPI LPWSTR WINAPI            lstrcpynW( LPWSTR, LPCWSTR, int );
WINBASEAPI int WINAPI               lstrlenA( LPCSTR );
WINBASEAPI int WINAPI               lstrlenW( LPCWSTR );
#if (WINVER >= 0x0400)
WINBASEAPI BOOL WINAPI              GetSystemPowerStatus( LPSYSTEM_POWER_STATUS );
WINBASEAPI BOOL WINAPI              SetSystemPowerState( BOOL, BOOL );
#endif
#if (_WIN32_WINNT >= 0x0400)
WINBASEAPI LPVOID WINAPI            ConvertThreadToFiber( LPVOID );
WINBASEAPI LPVOID WINAPI            ConvertThreadToFiberEx( LPVOID, DWORD );
WINBASEAPI BOOL WINAPI              CopyFileExA( LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD );
WINBASEAPI BOOL WINAPI              CopyFileExW( LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD );
WINBASEAPI LPVOID WINAPI            CreateFiber( SIZE_T, LPFIBER_START_ROUTINE, LPVOID );
WINBASEAPI LPVOID WINAPI            CreateFiberEx( SIZE_T, SIZE_T, DWORD, LPFIBER_START_ROUTINE, LPVOID );
WINBASEAPI VOID WINAPI              DeleteFiber( LPVOID );
WINBASEAPI HANDLE WINAPI            FindFirstFileExA( LPCSTR, FINDEX_INFO_LEVELS, LPVOID, FINDEX_SEARCH_OPS, LPVOID, DWORD );
WINBASEAPI HANDLE WINAPI            FindFirstFileExW( LPCWSTR, FINDEX_INFO_LEVELS, LPVOID, FINDEX_SEARCH_OPS, LPVOID, DWORD );
WINBASEAPI BOOL WINAPI              ReadDirectoryChangesW( HANDLE, LPVOID, DWORD, BOOL, DWORD, LPDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE );
WINBASEAPI DWORD WINAPI             SetThreadIdealProcessor( HANDLE, DWORD );
WINBASEAPI DWORD WINAPI             SignalObjectAndWait( HANDLE, HANDLE, DWORD, BOOL );
WINBASEAPI VOID WINAPI              SwitchToFiber( LPVOID );
WINBASEAPI BOOL WINAPI              SwitchToThread( VOID );
WINBASEAPI BOOL WINAPI              TryEnterCriticalSection( LPCRITICAL_SECTION );
#endif
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
WINBASEAPI BOOL WINAPI              CancelWaitableTimer( HANDLE );
WINBASEAPI HANDLE WINAPI            CreateWaitableTimerA( LPSECURITY_ATTRIBUTES, BOOL, LPCSTR );
WINBASEAPI HANDLE WINAPI            CreateWaitableTimerW( LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR );
WINBASEAPI BOOL WINAPI              IsDebuggerPresent( VOID );
WINBASEAPI HANDLE WINAPI            OpenWaitableTimerA( DWORD, BOOL, LPCSTR );
WINBASEAPI HANDLE WINAPI            OpenWaitableTimerW( DWORD, BOOL, LPCWSTR );
WINBASEAPI DWORD WINAPI             QueueUserAPC( PAPCFUNC, HANDLE, ULONG_PTR );
WINBASEAPI BOOL WINAPI              SetWaitableTimer( HANDLE, const LARGE_INTEGER *, LONG, PTIMERAPCROUTINE, LPVOID, BOOL );
#endif
#if (_WIN32_WINNT >= 0x0403)
WINBASEAPI BOOL WINAPI              InitializeCriticalSectionAndSpinCount( LPCRITICAL_SECTION, DWORD );
WINBASEAPI BOOL WINAPI              InitializeCriticalSectionEx( LPCRITICAL_SECTION, DWORD, DWORD );
WINBASEAPI DWORD WINAPI             SetCriticalSectionSpinCount( LPCRITICAL_SECTION, DWORD );
#endif
#if (_WIN32_WINNT >= 0x0500)
WINBASEAPI BOOL WINAPI              ActivateActCtx( HANDLE, ULONG_PTR * );
WINBASEAPI VOID WINAPI              AddRefActCtx( HANDLE );
WINBASEAPI PVOID WINAPI             AddVectoredContinueHandler( ULONG, PVECTORED_EXCEPTION_HANDLER );
WINBASEAPI PVOID WINAPI             AddVectoredExceptionHandler( ULONG, PVECTORED_EXCEPTION_HANDLER );
WINBASEAPI BOOL WINAPI              AllocateUserPhysicalPages( HANDLE, PULONG_PTR, PULONG_PTR );
WINBASEAPI BOOL WINAPI              AssignProcessToJobObject( HANDLE, HANDLE );
WINBASEAPI BOOL WINAPI              BindIoCompletionCallback( HANDLE, LPOVERLAPPED_COMPLETION_ROUTINE, ULONG );
WINBASEAPI BOOL WINAPI              CancelTimerQueueTimer( HANDLE, HANDLE );
WINBASEAPI BOOL WINAPI              ChangeTimerQueueTimer( HANDLE, HANDLE, ULONG, ULONG );
WINBASEAPI HANDLE WINAPI            CreateActCtxA( PCACTCTXA );
WINBASEAPI HANDLE WINAPI            CreateActCtxW( PCACTCTXW );
WINBASEAPI BOOL WINAPI              CreateHardLinkA( LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES );
WINBASEAPI BOOL WINAPI              CreateHardLinkW( LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES );
WINBASEAPI HANDLE WINAPI            CreateJobObjectA( LPSECURITY_ATTRIBUTES, LPCSTR );
WINBASEAPI HANDLE WINAPI            CreateJobObjectW( LPSECURITY_ATTRIBUTES, LPCWSTR );
WINBASEAPI BOOL WINAPI              CreateJobSet( ULONG, PJOB_SET_ARRAY, ULONG );
WINBASEAPI HANDLE WINAPI            CreateTimerQueue( VOID );
WINBASEAPI BOOL WINAPI              CreateTimerQueueTimer( PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, DWORD, DWORD, ULONG );
WINBASEAPI BOOL WINAPI              DeactivateActCtx( DWORD, ULONG_PTR );
WINBASEAPI BOOL WINAPI              DeleteTimerQueue( HANDLE );
WINBASEAPI BOOL WINAPI              DeleteTimerQueueEx( HANDLE, HANDLE );
WINBASEAPI BOOL WINAPI              DeleteTimerQueueTimer( HANDLE, HANDLE, HANDLE );
WINBASEAPI BOOL WINAPI              DeleteVolumeMountPointA( LPCSTR );
WINBASEAPI BOOL WINAPI              DeleteVolumeMountPointW( LPCWSTR );
WINBASEAPI BOOL WINAPI              DnsHostnameToComputerNameA( LPCSTR, LPSTR, LPDWORD );
WINBASEAPI BOOL WINAPI              DnsHostnameToComputerNameW( LPCWSTR, LPWSTR, LPDWORD );
WINBASEAPI BOOL WINAPI              FindActCtxSectionGuid( DWORD, const GUID *, ULONG, const GUID *, PACTCTX_SECTION_KEYED_DATA );
WINBASEAPI BOOL WINAPI              FindActCtxSectionStringA( DWORD, const GUID *, ULONG, LPCSTR, PACTCTX_SECTION_KEYED_DATA );
WINBASEAPI BOOL WINAPI              FindActCtxSectionStringW( DWORD, const GUID *, ULONG, LPCWSTR, PACTCTX_SECTION_KEYED_DATA );
WINBASEAPI HANDLE WINAPI            FindFirstVolumeA( LPSTR, DWORD );
WINBASEAPI HANDLE WINAPI            FindFirstVolumeMountPointA( LPCSTR, LPSTR, DWORD );
WINBASEAPI HANDLE WINAPI            FindFirstVolumeMountPointW( LPCWSTR, LPWSTR, DWORD );
WINBASEAPI HANDLE WINAPI            FindFirstVolumeW( LPWSTR, DWORD );
WINBASEAPI BOOL WINAPI              FindNextVolumeA( HANDLE, LPSTR, DWORD );
WINBASEAPI BOOL WINAPI              FindNextVolumeMountPointA( HANDLE, LPSTR, DWORD );
WINBASEAPI BOOL WINAPI              FindNextVolumeMountPointW( HANDLE, LPWSTR, DWORD );
WINBASEAPI BOOL WINAPI              FindNextVolumeW( HANDLE, LPWSTR, DWORD );
WINBASEAPI BOOL WINAPI              FindVolumeClose( HANDLE );
WINBASEAPI BOOL WINAPI              FindVolumeMountPointClose( HANDLE );
WINBASEAPI BOOL WINAPI              FreeUserPhysicalPages( HANDLE, PULONG_PTR, PULONG_PTR );
WINBASEAPI BOOL WINAPI              GetComputerNameExA( COMPUTER_NAME_FORMAT, LPSTR, LPDWORD );
WINBASEAPI BOOL WINAPI              GetComputerNameExW( COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD );
WINBASEAPI BOOL WINAPI              GetCurrentActCtx( HANDLE * );
WINBASEAPI BOOL WINAPI              GetVolumeNameForVolumeMountPointA( LPCSTR, LPSTR, DWORD );
WINBASEAPI BOOL WINAPI              GetVolumeNameForVolumeMountPointW( LPCWSTR, LPWSTR, DWORD );
WINBASEAPI BOOL WINAPI              GetVolumePathNameA( LPCSTR, LPSTR, DWORD );
WINBASEAPI BOOL WINAPI              GetVolumePathNameW( LPCWSTR, LPWSTR, DWORD );
WINBASEAPI BOOL WINAPI              MapUserPhysicalPages( PVOID, ULONG_PTR, PULONG_PTR );
WINBASEAPI BOOL WINAPI              MapUserPhysicalPagesScatter( PVOID *, ULONG_PTR, PULONG_PTR );
WINBASEAPI BOOL WINAPI              MoveFileWithProgressA( LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, DWORD );
WINBASEAPI BOOL WINAPI              MoveFileWithProgressW( LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, DWORD );
WINBASEAPI HANDLE WINAPI            OpenJobObjectA( DWORD, BOOL, LPCSTR );
WINBASEAPI HANDLE WINAPI            OpenJobObjectW( DWORD, BOOL, LPCWSTR );
WINBASEAPI BOOL WINAPI              QueryActCtxW( DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T * );
WINBASEAPI BOOL WINAPI              QueryInformationJobObject( HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD );
WINBASEAPI BOOL WINAPI              QueueUserWorkItem( LPTHREAD_START_ROUTINE, PVOID, ULONG );
WINBASEAPI BOOL WINAPI              RegisterWaitForSingleObject( PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, ULONG, ULONG );
WINBASEAPI HANDLE WINAPI            RegisterWaitForSingleObjectEx( HANDLE, WAITORTIMERCALLBACK, PVOID, ULONG, ULONG );
WINBASEAPI VOID WINAPI              ReleaseActCtx( HANDLE );
WINBASEAPI ULONG WINAPI             RemoveVectoredContinueHandler( PVOID );
WINBASEAPI ULONG WINAPI             RemoveVectoredExceptionHandler( PVOID );
WINBASEAPI BOOL WINAPI              ReplaceFileA( LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID );
WINBASEAPI BOOL WINAPI              ReplaceFileW( LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPVOID, LPVOID );
WINBASEAPI BOOL WINAPI              SetComputerNameExA( COMPUTER_NAME_FORMAT, LPCSTR );
WINBASEAPI BOOL WINAPI              SetComputerNameExW( COMPUTER_NAME_FORMAT, LPCWSTR );
WINBASEAPI BOOL WINAPI              SetInformationJobObject( HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD );
WINBASEAPI HANDLE WINAPI            SetTimerQueueTimer( HANDLE, WAITORTIMERCALLBACK, PVOID, DWORD, DWORD, BOOL );
WINBASEAPI BOOL WINAPI              SetVolumeMountPointA( LPCSTR, LPCSTR );
WINBASEAPI BOOL WINAPI              SetVolumeMountPointW( LPCWSTR, LPCWSTR );
WINBASEAPI BOOL WINAPI              TerminateJobObject( HANDLE, UINT );
WINBASEAPI BOOL WINAPI              UnregisterWait( HANDLE );
WINBASEAPI BOOL WINAPI              UnregisterWaitEx( HANDLE, HANDLE );
WINBASEAPI BOOL WINAPI              ZombifyActCtx( HANDLE );
#endif
#if (_WIN32_WINNT >= 0x0501)
WINBASEAPI BOOL WINAPI              CheckNameLegalDOS8Dot3A( LPCSTR, LPSTR, DWORD, PBOOL, PBOOL );
WINBASEAPI BOOL WINAPI              CheckNameLegalDOS8Dot3W( LPCWSTR, LPSTR, DWORD, PBOOL, PBOOL );
WINBASEAPI BOOL WINAPI              CheckRemoteDebuggerPresent( HANDLE, PBOOL );
WINBASEAPI BOOL WINAPI              ConvertFiberToThread( VOID );
WINBASEAPI HANDLE WINAPI            CreateMemoryResourceNotification( MEMORY_RESOURCE_NOTIFICATION_TYPE );
WINBASEAPI HANDLE WINAPI            FindFirstStreamW( LPCWSTR, STREAM_INFO_LEVELS, LPVOID, DWORD );
WINBASEAPI BOOL WINAPI              FindNextStreamW( HANDLE, LPVOID );
WINBASEAPI BOOL WINAPI              GetModuleHandleExA( DWORD, LPCSTR, HMODULE * );
WINBASEAPI BOOL WINAPI              GetModuleHandleExW( DWORD, LPCWSTR, HMODULE * );
WINBASEAPI VOID WINAPI              GetNativeSystemInfo( LPSYSTEM_INFO );
WINBASEAPI BOOL WINAPI              GetProcessHandleCount( HANDLE, PDWORD );
WINBASEAPI BOOL WINAPI              GetSystemRegistryQuota( PDWORD, PDWORD );
WINBASEAPI BOOL WINAPI              GetSystemTimes( LPFILETIME, LPFILETIME, LPFILETIME );
WINBASEAPI UINT WINAPI              GetSystemWow64DirectoryA( LPSTR, UINT );
WINBASEAPI UINT WINAPI              GetSystemWow64DirectoryW( LPWSTR, UINT );
WINBASEAPI BOOL WINAPI              GetThreadIOPendingFlag( HANDLE, PBOOL );
WINBASEAPI BOOL WINAPI              GetVolumePathNamesForVolumeNameA( LPCSTR, LPCH, DWORD, PDWORD );
WINBASEAPI BOOL WINAPI              GetVolumePathNamesForVolumeNameW( LPCWSTR, LPWCH, DWORD, PDWORD );
WINBASEAPI BOOL WINAPI              IsProcessInJob( HANDLE, HANDLE, PBOOL );
WINBASEAPI BOOL WINAPI              IsWow64Process( HANDLE, PBOOL );
WINBASEAPI BOOL WINAPI              QueryMemoryResourceNotification( HANDLE, PBOOL );
WINBASEAPI BOOL WINAPI              SetFileValidData( HANDLE, LONGLONG );
WINBASEAPI DWORD WINAPI             WTSGetActiveConsoleSessionId( VOID );
WINBASEAPI BOOL WINAPI              Wow64DisableWow64FsRedirection( PVOID * );
WINBASEAPI BOOLEAN WINAPI           Wow64EnableWow64FsRedirection( BOOLEAN );
WINBASEAPI BOOL WINAPI              Wow64RevertWow64FsRedirection( PVOID );
#endif
#if (_WIN32_WINNT >= 0x0502)
WINBASEAPI DWORD WINAPI             GetDllDirectoryA( DWORD, LPSTR );
WINBASEAPI DWORD WINAPI             GetDllDirectoryW( DWORD, LPWSTR );
WINBASEAPI BOOL WINAPI              GetSystemFileCacheSize( PSIZE_T, PSIZE_T, PDWORD );
WINBASEAPI DWORD WINAPI             GetThreadId( HANDLE );
WINBASEAPI LONGLONG WINAPI          InterlockedCompareExchange64( LONGLONG volatile *, LONGLONG, LONGLONG );
WINBASEAPI BOOL WINAPI              NeedCurrentDirectoryForExePathA( LPCSTR );
WINBASEAPI BOOL WINAPI              NeedCurrentDirectoryForExePathW( LPCWSTR );
WINBASEAPI HANDLE WINAPI            ReOpenFile( HANDLE, DWORD, DWORD, DWORD );
WINBASEAPI BOOL WINAPI              SetDllDirectoryA( LPCSTR );
WINBASEAPI BOOL WINAPI              SetDllDirectoryW( LPCWSTR );
WINBASEAPI BOOL WINAPI              SetSystemFileCacheSize( SIZE_T, SIZE_T, DWORD );
#endif
#if (_WIN32_WINNT >= 0x0600)
WINBASEAPI BOOL WINAPI              AddIntegrityLabelToBoundaryDescriptor( HANDLE *, PSID );
WINBASEAPI BOOL WINAPI              AddSIDToBoundaryDescriptor( HANDLE *, PSID );
WINBASEAPI BOOL WINAPI              AddSecureMemoryCacheCallback( PSECURE_MEMORY_CACHE_CALLBACK );
WINBASEAPI BOOL WINAPI              AllocateUserPhysicalPagesNuma( HANDLE, PULONG_PTR, PULONG_PTR, DWORD );
WINBASEAPI BOOL WINAPI              CallbackMayRunLong( PTP_CALLBACK_INSTANCE );
WINBASEAPI VOID WINAPI              CancelThreadpoolIo( PTP_IO );
WINBASEAPI BOOLEAN WINAPI           ClosePrivateNamespace( HANDLE, ULONG );
WINBASEAPI VOID WINAPI              CloseThreadpool( PTP_POOL );
WINBASEAPI VOID WINAPI              CloseThreadpoolCleanupGroup( PTP_CLEANUP_GROUP );
WINBASEAPI VOID WINAPI              CloseThreadpoolCleanupGroupMembers( PTP_CLEANUP_GROUP, BOOL, PVOID );
WINBASEAPI VOID WINAPI              CloseThreadpoolIo( PTP_IO );
WINBASEAPI VOID WINAPI              CloseThreadpoolTimer( PTP_TIMER );
WINBASEAPI VOID WINAPI              CloseThreadpoolWait( PTP_WAIT );
WINBASEAPI VOID WINAPI              CloseThreadpoolWork( PTP_WORK );
WINBASEAPI BOOL WINAPI              CopyFileTransactedA( LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD, HANDLE );
WINBASEAPI BOOL WINAPI              CopyFileTransactedW( LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD, HANDLE );
WINBASEAPI HANDLE WINAPI            CreateBoundaryDescriptorA( LPCSTR, ULONG );
WINBASEAPI HANDLE WINAPI            CreateBoundaryDescriptorW( LPCWSTR, ULONG );
WINBASEAPI BOOL WINAPI              CreateDirectoryTransactedA( LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES, HANDLE );
WINBASEAPI BOOL WINAPI              CreateDirectoryTransactedW( LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES, HANDLE );
WINBASEAPI HANDLE WINAPI            CreateEventExA( LPSECURITY_ATTRIBUTES, LPCSTR, DWORD, DWORD );
WINBASEAPI HANDLE WINAPI            CreateEventExW( LPSECURITY_ATTRIBUTES, LPCWSTR, DWORD, DWORD );
WINBASEAPI HANDLE WINAPI            CreateFileMappingNumaA( HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR, DWORD );
WINBASEAPI HANDLE WINAPI            CreateFileMappingNumaW( HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR, DWORD );
WINBASEAPI HANDLE WINAPI            CreateFileTransactedA( LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE, HANDLE, PUSHORT, PVOID );
WINBASEAPI HANDLE WINAPI            CreateFileTransactedW( LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE, HANDLE, PUSHORT, PVOID );
WINBASEAPI BOOL WINAPI              CreateHardLinkTransactedA( LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES, HANDLE );
WINBASEAPI BOOL WINAPI              CreateHardLinkTransactedW( LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES, HANDLE );
WINBASEAPI HANDLE WINAPI            CreateMutexExA( LPSECURITY_ATTRIBUTES, LPCSTR, DWORD, DWORD );
WINBASEAPI HANDLE WINAPI            CreateMutexExW( LPSECURITY_ATTRIBUTES, LPCWSTR, DWORD, DWORD );
WINBASEAPI HANDLE WINAPI            CreatePrivateNamespaceA( LPSECURITY_ATTRIBUTES, LPVOID, LPCSTR );
WINBASEAPI HANDLE WINAPI            CreatePrivateNamespaceW( LPSECURITY_ATTRIBUTES, LPVOID, LPCWSTR );
WINBASEAPI HANDLE WINAPI            CreateSemaphoreExA( LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR, DWORD, DWORD );
WINBASEAPI HANDLE WINAPI            CreateSemaphoreExW( LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR, DWORD, DWORD );
WINBASEAPI BOOLEAN WINAPI           CreateSymbolicLinkA( LPCSTR, LPCSTR, DWORD );
WINBASEAPI BOOLEAN WINAPI           CreateSymbolicLinkTransactedA( LPCSTR, LPCSTR, DWORD, HANDLE );
WINBASEAPI BOOLEAN WINAPI           CreateSymbolicLinkTransactedW( LPCWSTR, LPCWSTR, DWORD, HANDLE );
WINBASEAPI BOOLEAN WINAPI           CreateSymbolicLinkW( LPCWSTR, LPCWSTR, DWORD );
WINBASEAPI PTP_POOL WINAPI          CreateThreadpool( PVOID );
WINBASEAPI PTP_CLEANUP_GROUP WINAPI CreateThreadpoolCleanupGroup( VOID );
WINBASEAPI PTP_IO WINAPI            CreateThreadpoolIo( HANDLE, PTP_WIN32_IO_CALLBACK, PVOID, PTP_CALLBACK_ENVIRON );
WINBASEAPI PTP_TIMER WINAPI         CreateThreadpoolTimer( PTP_TIMER_CALLBACK, PVOID, PTP_CALLBACK_ENVIRON );
WINBASEAPI PTP_WAIT WINAPI          CreateThreadpoolWait( PTP_WAIT_CALLBACK, PVOID, PTP_CALLBACK_ENVIRON );
WINBASEAPI PTP_WORK WINAPI          CreateThreadpoolWork( PTP_WORK_CALLBACK, PVOID, PTP_CALLBACK_ENVIRON );
WINBASEAPI HANDLE WINAPI            CreateWaitableTimerExA( LPSECURITY_ATTRIBUTES, LPCSTR, DWORD, DWORD );
WINBASEAPI HANDLE WINAPI            CreateWaitableTimerExW( LPSECURITY_ATTRIBUTES, LPCWSTR, DWORD, DWORD );
WINBASEAPI VOID WINAPI              DeleteBoundaryDescriptor( HANDLE );
WINBASEAPI BOOL WINAPI              DeleteFileTransactedA( LPCSTR, HANDLE );
WINBASEAPI BOOL WINAPI              DeleteFileTransactedW( LPCWSTR, HANDLE );
WINBASEAPI VOID WINAPI              DeleteProcThreadAttributeList( LPPROC_THREAD_ATTRIBUTE_LIST );
WINBASEAPI VOID WINAPI              DisassociateCurrentThreadFromCallback( PTP_CALLBACK_INSTANCE );
WINBASEAPI HANDLE WINAPI            FindFirstFileNameTransactedW( LPCWSTR, DWORD, LPDWORD, PWCHAR, HANDLE );
WINBASEAPI HANDLE WINAPI            FindFirstFileNameW( LPCWSTR, DWORD, LPDWORD, PWCHAR );
WINBASEAPI HANDLE WINAPI            FindFirstFileTransactedA( LPCSTR, FINDEX_INFO_LEVELS, LPVOID, FINDEX_SEARCH_OPS, LPVOID, DWORD, HANDLE );
WINBASEAPI HANDLE WINAPI            FindFirstFileTransactedW( LPCWSTR, FINDEX_INFO_LEVELS, LPVOID, FINDEX_SEARCH_OPS, LPVOID, DWORD, HANDLE );
WINBASEAPI HANDLE WINAPI            FindFirstStreamTransactedW( LPCWSTR, STREAM_INFO_LEVELS, LPVOID, DWORD, HANDLE );
WINBASEAPI BOOL WINAPI              FindNextFileNameW( HANDLE, LPDWORD, PWCHAR );
WINBASEAPI VOID WINAPI              FlushProcessWriteBuffers( VOID );
WINBASEAPI VOID WINAPI              FreeLibraryWhenCallbackReturns( PTP_CALLBACK_INSTANCE, HMODULE );
WINBASEAPI DWORD WINAPI             GetCompressedFileSizeTransactedA( LPCSTR, LPDWORD, HANDLE );
WINBASEAPI DWORD WINAPI             GetCompressedFileSizeTransactedW( LPCWSTR, LPDWORD, HANDLE );
WINBASEAPI BOOL WINAPI              GetFileAttributesTransactedA( LPCSTR, GET_FILEEX_INFO_LEVELS, LPVOID, HANDLE );
WINBASEAPI BOOL WINAPI              GetFileAttributesTransactedW( LPCWSTR, GET_FILEEX_INFO_LEVELS, LPVOID, HANDLE );
WINBASEAPI BOOL WINAPI              GetFileInformationByHandleEx( HANDLE, FILE_INFO_BY_HANDLE_CLASS, LPVOID, DWORD );
WINBASEAPI DWORD WINAPI             GetFinalPathNameByHandleA( HANDLE, LPSTR, DWORD, DWORD );
WINBASEAPI DWORD WINAPI             GetFinalPathNameByHandleW( HANDLE, LPWSTR, DWORD, DWORD );
WINBASEAPI DWORD WINAPI             GetFullPathNameTransactedA( LPCSTR, DWORD, LPSTR, LPSTR *, HANDLE );
WINBASEAPI DWORD WINAPI             GetFullPathNameTransactedW( LPCWSTR, DWORD, LPWSTR, LPWSTR *, HANDLE );
WINBASEAPI DWORD WINAPI             GetLongPathNameTransactedA( LPCSTR, LPSTR, DWORD, HANDLE );
WINBASEAPI DWORD WINAPI             GetLongPathNameTransactedW( LPCWSTR, LPWSTR, DWORD, HANDLE );
WINBASEAPI BOOL WINAPI              GetNumaProximityNode( ULONG, PUCHAR );
WINBASEAPI BOOL WINAPI              GetProcessDEPPolicy( HANDLE, LPDWORD, PBOOL );
WINBASEAPI BOOL WINAPI              GetProductInfo( DWORD, DWORD, DWORD, DWORD, PDWORD );
WINBASEAPI BOOL WINAPI              GetQueuedCompletionStatusEx( HANDLE, LPOVERLAPPED_ENTRY, ULONG, PULONG, DWORD, BOOL );
WINBASEAPI ULONGLONG WINAPI         GetTickCount64( VOID );
WINBASEAPI BOOL WINAPI              GetVolumeInformationByHandleW( HANDLE, LPWSTR, DWORD, LPDWORD, LPDWORD, LPDWORD, LPWSTR, DWORD );
WINBASEAPI BOOL WINAPI              InitOnceBeginInitialize( LPINIT_ONCE, DWORD, PBOOL, LPVOID * );
WINBASEAPI BOOL WINAPI              InitOnceComplete( LPINIT_ONCE, DWORD, LPVOID );
WINBASEAPI BOOL WINAPI              InitOnceExecuteOnce( PINIT_ONCE, PINIT_ONCE_FN, PVOID, LPVOID * );
WINBASEAPI VOID WINAPI              InitOnceInitialize( PINIT_ONCE );
WINBASEAPI BOOL WINAPI              InitializeProcThreadAttributeList( LPPROC_THREAD_ATTRIBUTE_LIST, DWORD, DWORD, PSIZE_T );
WINBASEAPI BOOL WINAPI              IsThreadAFiber( VOID );
WINBASEAPI BOOL WINAPI              IsThreadpoolTimerSet( PTP_TIMER );
WINBASEAPI VOID WINAPI              LeaveCriticalSectionWhenCallbackReturns( PTP_CALLBACK_INSTANCE, PCRITICAL_SECTION );
WINBASEAPI LPVOID WINAPI            MapViewOfFileExNuma( HANDLE, DWORD, DWORD, DWORD, SIZE_T, LPVOID, DWORD );
WINBASEAPI BOOL WINAPI              MoveFileTransactedA( LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, DWORD, HANDLE );
WINBASEAPI BOOL WINAPI              MoveFileTransactedW( LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, DWORD, HANDLE );
WINBASEAPI HANDLE WINAPI            OpenFileById( HANDLE, LPFILE_ID_DESCRIPTOR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD );
WINBASEAPI HANDLE WINAPI            OpenPrivateNamespaceA( LPVOID, LPCSTR );
WINBASEAPI HANDLE WINAPI            OpenPrivateNamespaceW( LPVOID, LPCWSTR );
WINBASEAPI BOOL WINAPI              QueryActCtxSettingsW( DWORD, HANDLE, PCWSTR, PCWSTR, PWSTR, SIZE_T, SIZE_T * );
WINBASEAPI BOOL WINAPI              QueryFullProcessImageNameA( HANDLE, DWORD, LPSTR, PDWORD );
WINBASEAPI BOOL WINAPI              QueryFullProcessImageNameW( HANDLE, DWORD, LPWSTR, PDWORD );
WINBASEAPI BOOL WINAPI              QueryIdleProcessorCycleTime( PULONG, PULONG64 );
WINBASEAPI BOOL WINAPI              QueryProcessAffinityUpdateMode( HANDLE, LPDWORD );
WINBASEAPI BOOL WINAPI              QueryProcessCycleTime( HANDLE, PULONG64 );
WINBASEAPI BOOL WINAPI              QueryThreadCycleTime( HANDLE, PULONG64 );
WINBASEAPI BOOL WINAPI              QueryThreadpoolStackInformation( PTP_POOL, PTP_POOL_STACK_INFORMATION );
WINBASEAPI VOID WINAPI              ReleaseMutexWhenCallbackReturns( PTP_CALLBACK_INSTANCE, HANDLE );
WINBASEAPI VOID WINAPI              ReleaseSemaphoreWhenCallbackReturns( PTP_CALLBACK_INSTANCE, HANDLE, DWORD );
WINBASEAPI BOOL WINAPI              RemoveDirectoryTransactedA( LPCSTR, HANDLE );
WINBASEAPI BOOL WINAPI              RemoveDirectoryTransactedW( LPCWSTR, HANDLE );
WINBASEAPI BOOL WINAPI              RemoveSecureMemoryCacheCallback( PSECURE_MEMORY_CACHE_CALLBACK );
WINBASEAPI BOOL WINAPI              ReplacePartitionUnit( PWSTR, PWSTR, ULONG );
WINBASEAPI VOID WINAPI              SetEventWhenCallbackReturns( PTP_CALLBACK_INSTANCE, HANDLE );
WINBASEAPI BOOL WINAPI              SetFileAttributesTransactedA( LPCSTR, DWORD, HANDLE );
WINBASEAPI BOOL WINAPI              SetFileAttributesTransactedW( LPCWSTR, DWORD, HANDLE );
WINBASEAPI BOOL WINAPI              SetFileCompletionNotificationModes( HANDLE, UCHAR );
WINBASEAPI BOOL WINAPI              SetFileInformationByHandle( HANDLE, FILE_INFO_BY_HANDLE_CLASS, LPVOID, DWORD );
WINBASEAPI BOOL WINAPI              SetFileIoOverlappedRange( HANDLE, PUCHAR, ULONG );
WINBASEAPI BOOL WINAPI              SetProcessAffinityUpdateMode( HANDLE, DWORD );
WINBASEAPI BOOL WINAPI              SetProcessDEPPolicy( DWORD );
WINBASEAPI BOOL WINAPI              SetStdHandleEx( DWORD, HANDLE, PHANDLE );
WINBASEAPI BOOL WINAPI              SetThreadpoolStackInformation( PTP_POOL, PTP_POOL_STACK_INFORMATION );
WINBASEAPI VOID WINAPI              SetThreadpoolThreadMaximum( PTP_POOL, DWORD );
WINBASEAPI VOID WINAPI              SetThreadpoolTimer( PTP_TIMER, PFILETIME, DWORD, DWORD );
WINBASEAPI VOID WINAPI              SetThreadpoolWait( PTP_WAIT, HANDLE, PFILETIME );
WINBASEAPI VOID WINAPI              StartThreadpoolIo( PTP_IO );
WINBASEAPI VOID WINAPI              SubmitThreadpoolWork( PTP_WORK );
WINBASEAPI BOOL WINAPI              TrySubmitThreadpoolCallback( PTP_SIMPLE_CALLBACK, PVOID, PTP_CALLBACK_ENVIRON );
WINBASEAPI BOOL WINAPI              UpdateProcThreadAttribute( LPPROC_THREAD_ATTRIBUTE_LIST, DWORD, DWORD_PTR, PVOID, SIZE_T, PVOID, PSIZE_T );
WINBASEAPI LPVOID WINAPI            VirtualAllocExNuma( HANDLE, LPVOID, SIZE_T, DWORD, DWORD, DWORD );
WINBASEAPI VOID WINAPI              WaitForThreadpoolIoCallbacks( PTP_IO, BOOL );
WINBASEAPI VOID WINAPI              WaitForThreadpoolTimerCallbacks( PTP_TIMER, BOOL );
WINBASEAPI VOID WINAPI              WaitForThreadpoolWaitCallbacks( PTP_WAIT, BOOL );
WINBASEAPI VOID WINAPI              WaitForThreadpoolWorkCallbacks( PTP_WORK, BOOL );
#endif
#if (_WIN32_WINNT >= 0x0601)
WINBASEAPI BOOL WINAPI              CopyExtendedContext( PCONTEXT_EX, DWORD, PCONTEXT_EX );
WINBASEAPI DWORD WINAPI             DisableThreadProfiling( HANDLE );
WINBASEAPI DWORD WINAPI             EnableThreadProfiling( HANDLE, DWORD, DWORD64, HANDLE * );
WINBASEAPI DWORD WINAPI             GetActiveProcessorCount( WORD );
WINBASEAPI WORD WINAPI              GetActiveProcessorGroupCount( VOID );
WINBASEAPI VOID WINAPI              GetCurrentProcessorNumberEx( PPROCESSOR_NUMBER );
WINBASEAPI DWORD64 WINAPI           GetEnabledExtendedFeatures( DWORD64 );
WINBASEAPI BOOL WINAPI              GetExtendedContextLength( DWORD, PDWORD );
WINBASEAPI DWORD64 WINAPI           GetExtendedFeaturesMask( PCONTEXT_EX );
WINBASEAPI BOOL WINAPI              GetLogicalProcessorInformationEx( LOGICAL_PROCESSOR_RELATIONSHIP, PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, PDWORD );
WINBASEAPI DWORD WINAPI             GetMaximumProcessorCount( WORD );
WINBASEAPI WORD WINAPI              GetMaximumProcessorGroupCount( VOID );
WINBASEAPI BOOL WINAPI              GetNumaAvailableMemoryNodeEx( USHORT, PULONGLONG );
WINBASEAPI BOOL WINAPI              GetNumaNodeNumberFromHandle( HANDLE, PUSHORT );
WINBASEAPI BOOL WINAPI              GetNumaNodeProcessorMaskEx( USHORT, PGROUP_AFFINITY );
WINBASEAPI BOOL WINAPI              GetNumaProcessorNodeEx( PPROCESSOR_NUMBER, PUSHORT );
WINBASEAPI BOOL WINAPI              GetNumaProximityNodeEx( ULONG, PUSHORT );
WINBASEAPI BOOL WINAPI              GetProcessGroupAffinity( HANDLE, PUSHORT, PUSHORT );
WINBASEAPI BOOL WINAPI              GetProcessorSystemCycleTime( USHORT, PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION, PDWORD );
WINBASEAPI BOOL WINAPI              GetThreadGroupAffinity( HANDLE, PGROUP_AFFINITY );
WINBASEAPI BOOL WINAPI              GetThreadIdealProcessorEx( HANDLE, PPROCESSOR_NUMBER );
WINBASEAPI BOOL WINAPI              InitializeExtendedContext( PVOID, DWORD, PCONTEXT_EX * );
WINBASEAPI PVOID WINAPI             LocateExtendedFeature( PCONTEXT_EX, DWORD, PDWORD );
WINBASEAPI PCONTEXT WINAPI          LocateLegacyContext( PCONTEXT_EX, PDWORD );
WINBASEAPI BOOL WINAPI              PowerClearRequest( HANDLE, POWER_REQUEST_TYPE );
WINBASEAPI HANDLE WINAPI            PowerCreateRequest( PREASON_CONTEXT );
WINBASEAPI BOOL WINAPI              PowerSetRequest( HANDLE, POWER_REQUEST_TYPE );
WINBASEAPI BOOL WINAPI              QueryIdleProcessorCycleTimeEx( USHORT, PULONG, PULONG64 );
WINBASEAPI DWORD WINAPI             QueryThreadProfiling( HANDLE, PBOOLEAN );
WINBASEAPI BOOL WINAPI              QueryUnbiasedInterruptTime( PULONGLONG );
WINBASEAPI DWORD WINAPI             ReadThreadProfilingData( HANDLE, DWORD, PPERFORMANCE_DATA );
WINBASEAPI VOID WINAPI              SetExtendedFeaturesMask( PCONTEXT_EX, DWORD64 );
WINBASEAPI BOOL WINAPI              SetThreadGroupAffinity( HANDLE, CONST GROUP_AFFINITY *, PGROUP_AFFINITY );
WINBASEAPI BOOL WINAPI              SetThreadIdealProcessorEx( HANDLE, PPROCESSOR_NUMBER, PPROCESSOR_NUMBER );
WINBASEAPI BOOL WINAPI              SetWaitableTimerEx( HANDLE, const LARGE_INTEGER *, LONG, PTIMERAPCROUTINE, LPVOID, PREASON_CONTEXT, ULONG );
WINBASEAPI BOOL WINAPI              Wow64GetThreadSelectorEntry( HANDLE, DWORD, PWOW64_LDT_ENTRY );
#endif

/* Functions in ADVAPI32.DLL */
WINADVAPI BOOL WINAPI               AccessCheck( PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, LPDWORD, LPDWORD, LPBOOL );
WINADVAPI BOOL WINAPI               AccessCheckAndAuditAlarmA( LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, LPDWORD, LPBOOL, LPBOOL );
WINADVAPI BOOL WINAPI               AccessCheckAndAuditAlarmW( LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, LPDWORD, LPBOOL, LPBOOL );
WINADVAPI BOOL WINAPI               AddAccessAllowedAce( PACL, DWORD, DWORD, PSID );
WINADVAPI BOOL WINAPI               AddAccessDeniedAce( PACL, DWORD, DWORD, PSID );
WINADVAPI BOOL WINAPI               AddAce( PACL, DWORD, DWORD, LPVOID, DWORD );
WINADVAPI BOOL WINAPI               AddAuditAccessAce( PACL, DWORD, DWORD, PSID, BOOL, BOOL );
WINADVAPI BOOL WINAPI               AdjustTokenGroups( HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD );
WINADVAPI BOOL WINAPI               AdjustTokenPrivileges( HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD );
WINADVAPI BOOL WINAPI               AllocateAndInitializeSid( PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID * );
WINADVAPI BOOL WINAPI               AllocateLocallyUniqueId( PLUID );
WINADVAPI BOOL WINAPI               AreAllAccessesGranted( DWORD, DWORD );
WINADVAPI BOOL WINAPI               AreAnyAccessesGranted( DWORD, DWORD );
WINADVAPI BOOL WINAPI               BackupEventLogA( HANDLE, LPCSTR );
WINADVAPI BOOL WINAPI               BackupEventLogW( HANDLE, LPCWSTR );
WINADVAPI BOOL WINAPI               CheckTokenMembership( HANDLE, PSID, PBOOL );
WINADVAPI BOOL WINAPI               ClearEventLogA( HANDLE, LPCSTR );
WINADVAPI BOOL WINAPI               ClearEventLogW( HANDLE, LPCWSTR );
WINADVAPI VOID WINAPI               CloseEncryptedFileRaw( PVOID );
WINADVAPI BOOL WINAPI               CloseEventLog( HANDLE );
WINADVAPI BOOL WINAPI               CopySid( DWORD, PSID, PSID );
WINADVAPI BOOL WINAPI               CreatePrivateObjectSecurity( PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR *, BOOL, HANDLE, PGENERIC_MAPPING );
WINADVAPI BOOL WINAPI               CreateProcessAsUserA( HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION );
WINADVAPI BOOL WINAPI               CreateProcessAsUserW( HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION );
WINADVAPI BOOL WINAPI               CreateRestrictedToken( HANDLE, DWORD, DWORD, PSID_AND_ATTRIBUTES, DWORD, PLUID_AND_ATTRIBUTES, DWORD, PSID_AND_ATTRIBUTES, PHANDLE );
WINADVAPI BOOL WINAPI               DecryptFileA( LPCSTR, DWORD );
WINADVAPI BOOL WINAPI               DecryptFileW( LPCWSTR, DWORD );
WINADVAPI BOOL WINAPI               DeleteAce( PACL, DWORD );
WINADVAPI BOOL WINAPI               DeregisterEventSource( HANDLE );
WINADVAPI BOOL WINAPI               DestroyPrivateObjectSecurity( PSECURITY_DESCRIPTOR * );
WINADVAPI BOOL WINAPI               DuplicateToken( HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE );
WINADVAPI BOOL WINAPI               DuplicateTokenEx( HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE );
WINADVAPI BOOL WINAPI               EncryptFileA( LPCSTR );
WINADVAPI BOOL WINAPI               EncryptFileW( LPCWSTR );
WINADVAPI BOOL WINAPI               EqualPrefixSid( PSID, PSID );
WINADVAPI BOOL WINAPI               EqualSid( PSID, PSID );
WINADVAPI BOOL WINAPI               FileEncryptionStatusA( LPCSTR, LPDWORD );
WINADVAPI BOOL WINAPI               FileEncryptionStatusW( LPCWSTR, LPDWORD );
WINADVAPI BOOL WINAPI               FindFirstFreeAce( PACL, LPVOID * );
WINADVAPI PVOID WINAPI              FreeSid( PSID );
WINADVAPI BOOL WINAPI               GetAce( PACL, DWORD, LPVOID * );
WINADVAPI BOOL WINAPI               GetAclInformation( PACL, LPVOID, DWORD, ACL_INFORMATION_CLASS );
WINADVAPI BOOL WINAPI               GetEventLogInformation( HANDLE, DWORD, LPVOID, DWORD, LPDWORD );
WINADVAPI BOOL WINAPI               GetFileSecurityA( LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, LPDWORD );
WINADVAPI BOOL WINAPI               GetFileSecurityW( LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, LPDWORD );
WINADVAPI BOOL WINAPI               GetKernelObjectSecurity( HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, LPDWORD );
WINADVAPI DWORD WINAPI              GetLengthSid( PSID );
WINADVAPI BOOL WINAPI               GetNumberOfEventLogRecords( HANDLE, PDWORD );
WINADVAPI BOOL WINAPI               GetOldestEventLogRecord( HANDLE, PDWORD );
WINADVAPI BOOL WINAPI               GetPrivateObjectSecurity( PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD );
WINADVAPI BOOL WINAPI               GetSecurityDescriptorControl( PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, LPDWORD );
WINADVAPI BOOL WINAPI               GetSecurityDescriptorDacl( PSECURITY_DESCRIPTOR, LPBOOL, PACL *, LPBOOL );
WINADVAPI BOOL WINAPI               GetSecurityDescriptorGroup( PSECURITY_DESCRIPTOR, PSID *, LPBOOL );
WINADVAPI DWORD WINAPI              GetSecurityDescriptorLength( PSECURITY_DESCRIPTOR );
WINADVAPI BOOL WINAPI               GetSecurityDescriptorOwner( PSECURITY_DESCRIPTOR, PSID *, LPBOOL );
WINADVAPI DWORD WINAPI              GetSecurityDescriptorRMControl( PSECURITY_DESCRIPTOR, PUCHAR );
WINADVAPI BOOL WINAPI               GetSecurityDescriptorSacl( PSECURITY_DESCRIPTOR, LPBOOL, PACL *, LPBOOL );
WINADVAPI PSID_IDENTIFIER_AUTHORITY WINAPI  GetSidIdentifierAuthority( PSID );
WINADVAPI DWORD WINAPI              GetSidLengthRequired( UCHAR );
WINADVAPI PDWORD WINAPI             GetSidSubAuthority( PSID, DWORD );
WINADVAPI PUCHAR WINAPI             GetSidSubAuthorityCount( PSID );
WINADVAPI BOOL WINAPI               GetTokenInformation( HANDLE, TOKEN_INFORMATION_CLASS, LPVOID, DWORD, PDWORD );
WINADVAPI BOOL WINAPI               GetUserNameA( LPSTR, LPDWORD );
WINADVAPI BOOL WINAPI               GetUserNameW( LPWSTR, LPDWORD );
WINADVAPI BOOL WINAPI               ImpersonateAnonymousToken( HANDLE );
WINADVAPI BOOL WINAPI               ImpersonateLoggedOnUser( HANDLE );
WINADVAPI BOOL WINAPI               ImpersonateNamedPipeClient( HANDLE );
WINADVAPI BOOL WINAPI               ImpersonateSelf( SECURITY_IMPERSONATION_LEVEL );
WINADVAPI BOOL WINAPI               InitializeAcl( PACL, DWORD, DWORD );
WINADVAPI BOOL WINAPI               InitializeSecurityDescriptor( PSECURITY_DESCRIPTOR, DWORD );
WINADVAPI BOOL WINAPI               InitializeSid( PSID, PSID_IDENTIFIER_AUTHORITY, BYTE );
WINADVAPI BOOL WINAPI               IsTextUnicode( CONST VOID *, int, LPINT );
WINADVAPI BOOL WINAPI               IsTokenRestricted( HANDLE );
WINADVAPI BOOL WINAPI               IsTokenUntrusted( HANDLE );
WINADVAPI BOOL WINAPI               IsValidAcl( PACL );
WINADVAPI BOOL WINAPI               IsValidRelativeSecurityDescriptor( PSECURITY_DESCRIPTOR, ULONG, SECURITY_INFORMATION );
WINADVAPI BOOL WINAPI               IsValidSecurityDescriptor( PSECURITY_DESCRIPTOR );
WINADVAPI BOOL WINAPI               IsValidSid( PSID );
WINADVAPI BOOL WINAPI               LogonUserA( LPCSTR, LPCSTR, LPCSTR, DWORD, DWORD, PHANDLE );
WINADVAPI BOOL WINAPI               LogonUserExA( LPCSTR, LPCSTR, LPCSTR, DWORD, DWORD, PHANDLE, PSID *, PVOID *, LPDWORD, PQUOTA_LIMITS );
WINADVAPI BOOL WINAPI               LogonUserExW( LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, PHANDLE, PSID *, PVOID *, LPDWORD, PQUOTA_LIMITS );
WINADVAPI BOOL WINAPI               LogonUserW( LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, PHANDLE );
WINADVAPI BOOL WINAPI               LookupAccountNameA( LPCSTR, LPCSTR, PSID, LPDWORD, LPSTR, LPDWORD, PSID_NAME_USE );
WINADVAPI BOOL WINAPI               LookupAccountNameW( LPCWSTR, LPCWSTR, PSID, LPDWORD, LPWSTR, LPDWORD, PSID_NAME_USE );
WINADVAPI BOOL WINAPI               LookupAccountSidA( LPCSTR, PSID, LPSTR, LPDWORD, LPSTR, LPDWORD, PSID_NAME_USE );
WINADVAPI BOOL WINAPI               LookupAccountSidW( LPCWSTR, PSID, LPWSTR, LPDWORD, LPWSTR, LPDWORD, PSID_NAME_USE );
WINADVAPI BOOL WINAPI               LookupPrivilegeDisplayNameA( LPCSTR, LPCSTR, LPSTR, LPDWORD, LPDWORD );
WINADVAPI BOOL WINAPI               LookupPrivilegeDisplayNameW( LPCWSTR, LPCWSTR, LPWSTR, LPDWORD, LPDWORD );
WINADVAPI BOOL WINAPI               LookupPrivilegeNameA( LPCSTR, PLUID, LPSTR, LPDWORD );
WINADVAPI BOOL WINAPI               LookupPrivilegeNameW( LPCWSTR, PLUID, LPWSTR, LPDWORD );
WINADVAPI BOOL WINAPI               LookupPrivilegeValueA( LPCSTR, LPCSTR, PLUID );
WINADVAPI BOOL WINAPI               LookupPrivilegeValueW( LPCWSTR, LPCWSTR, PLUID );
WINADVAPI BOOL WINAPI               MakeAbsoluteSD( PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, LPDWORD, PACL, LPDWORD, PACL, LPDWORD, PSID, LPDWORD, PSID, LPDWORD );
WINADVAPI BOOL WINAPI               MakeAbsoluteSD2( PSECURITY_DESCRIPTOR, LPDWORD );
WINADVAPI BOOL WINAPI               MakeSelfRelativeSD( PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, LPDWORD );
WINADVAPI VOID WINAPI               MapGenericMask( PDWORD, PGENERIC_MAPPING );
WINADVAPI BOOL WINAPI               NotifyChangeEventLog( HANDLE, HANDLE );
WINADVAPI BOOL WINAPI               ObjectCloseAuditAlarmA( LPCSTR, LPVOID, BOOL );
WINADVAPI BOOL WINAPI               ObjectCloseAuditAlarmW( LPCWSTR, LPVOID, BOOL );
WINADVAPI BOOL WINAPI               ObjectDeleteAuditAlarmA( LPCSTR, LPVOID, BOOL );
WINADVAPI BOOL WINAPI               ObjectDeleteAuditAlarmW( LPCWSTR, LPVOID, BOOL );
WINADVAPI BOOL WINAPI               ObjectOpenAuditAlarmA( LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, LPBOOL );
WINADVAPI BOOL WINAPI               ObjectOpenAuditAlarmW( LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, LPBOOL );
WINADVAPI BOOL WINAPI               ObjectPrivilegeAuditAlarmA( LPCSTR, LPVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL );
WINADVAPI BOOL WINAPI               ObjectPrivilegeAuditAlarmW( LPCWSTR, LPVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL );
WINADVAPI HANDLE WINAPI             OpenBackupEventLogA( LPCSTR, LPCSTR );
WINADVAPI HANDLE WINAPI             OpenBackupEventLogW( LPCWSTR, LPCWSTR );
WINADVAPI DWORD WINAPI              OpenEncryptedFileRawA( LPCSTR, ULONG, PVOID * );
WINADVAPI DWORD WINAPI              OpenEncryptedFileRawW( LPCWSTR, ULONG, PVOID * );
WINADVAPI HANDLE WINAPI             OpenEventLogA( LPCSTR, LPCSTR );
WINADVAPI HANDLE WINAPI             OpenEventLogW( LPCWSTR, LPCWSTR );
WINADVAPI BOOL WINAPI               OpenProcessToken( HANDLE, DWORD, PHANDLE );
WINADVAPI BOOL WINAPI               OpenThreadToken( HANDLE, DWORD, BOOL, PHANDLE );
WINADVAPI BOOL WINAPI               PrivilegeCheck( HANDLE, PPRIVILEGE_SET, LPBOOL );
WINADVAPI BOOL WINAPI               PrivilegedServiceAuditAlarmA( LPCSTR, LPCSTR, HANDLE, PPRIVILEGE_SET, BOOL );
WINADVAPI BOOL WINAPI               PrivilegedServiceAuditAlarmW( LPCWSTR, LPCWSTR, HANDLE, PPRIVILEGE_SET, BOOL );
WINADVAPI VOID WINAPI               QuerySecurityAccessMask( SECURITY_INFORMATION, LPDWORD );
WINADVAPI DWORD WINAPI              ReadEncryptedFileRaw( PFE_EXPORT_FUNC, PVOID, PVOID );
WINADVAPI BOOL WINAPI               ReadEventLogA( HANDLE, DWORD, DWORD, LPVOID, DWORD, DWORD *, DWORD * );
WINADVAPI BOOL WINAPI               ReadEventLogW( HANDLE, DWORD, DWORD, LPVOID, DWORD, DWORD *, DWORD * );
WINADVAPI HANDLE WINAPI             RegisterEventSourceA( LPCSTR, LPCSTR );
WINADVAPI HANDLE WINAPI             RegisterEventSourceW( LPCWSTR, LPCWSTR );
WINADVAPI BOOL WINAPI               ReportEventA( HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCSTR *, LPVOID );
WINADVAPI BOOL WINAPI               ReportEventW( HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR *, LPVOID );
WINADVAPI BOOL WINAPI               RevertToSelf( VOID );
WINADVAPI BOOL WINAPI               SetAclInformation( PACL, LPVOID, DWORD, ACL_INFORMATION_CLASS );
WINADVAPI BOOL WINAPI               SetFileSecurityA( LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR );
WINADVAPI BOOL WINAPI               SetFileSecurityW( LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR );
WINADVAPI BOOL WINAPI               SetKernelObjectSecurity( HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR );
WINADVAPI BOOL WINAPI               SetPrivateObjectSecurity( SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR *, PGENERIC_MAPPING, HANDLE );
WINADVAPI VOID WINAPI               SetSecurityAccessMask( SECURITY_INFORMATION, LPDWORD );
WINADVAPI BOOL WINAPI               SetSecurityDescriptorDacl( PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL );
WINADVAPI BOOL WINAPI               SetSecurityDescriptorGroup( PSECURITY_DESCRIPTOR, PSID, BOOL );
WINADVAPI BOOL WINAPI               SetSecurityDescriptorOwner( PSECURITY_DESCRIPTOR, PSID, BOOL );
WINADVAPI DWORD WINAPI              SetSecurityDescriptorRMControl( PSECURITY_DESCRIPTOR, PUCHAR );
WINADVAPI BOOL WINAPI               SetSecurityDescriptorSacl( PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL );
WINADVAPI BOOL WINAPI               SetThreadToken( PHANDLE, HANDLE );
WINADVAPI BOOL WINAPI               SetTokenInformation( HANDLE, TOKEN_INFORMATION_CLASS, LPVOID, DWORD );
WINADVAPI DWORD WINAPI              WriteEncryptedFileRaw( PFE_IMPORT_FUNC, PVOID, PVOID );
#if (_WIN32_WINNT >= 0x0400)
WINADVAPI BOOL WINAPI               GetCurrentHwProfileA( LPHW_PROFILE_INFOA );
WINADVAPI BOOL WINAPI               GetCurrentHwProfileW( LPHW_PROFILE_INFOW );
#endif
#if (_WIN32_WINNT >= 0x0500)
WINADVAPI BOOL WINAPI               AccessCheckByType( PSECURITY_DESCRIPTOR, PSID, HANDLE, DWORD, POBJECT_TYPE_LIST, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, LPDWORD, LPDWORD, LPBOOL );
WINADVAPI BOOL WINAPI               AccessCheckByTypeAndAuditAlarmA( LPCSTR, LPVOID, LPCSTR, LPCSTR, PSECURITY_DESCRIPTOR, PSID, DWORD, AUDIT_EVENT_TYPE, DWORD, POBJECT_TYPE_LIST, DWORD, PGENERIC_MAPPING, BOOL, LPDWORD, LPBOOL, LPBOOL );
WINADVAPI BOOL WINAPI               AccessCheckByTypeAndAuditAlarmW( LPCWSTR, LPVOID, LPCWSTR, LPCWSTR, PSECURITY_DESCRIPTOR, PSID, DWORD, AUDIT_EVENT_TYPE, DWORD, POBJECT_TYPE_LIST, DWORD, PGENERIC_MAPPING, BOOL, LPDWORD, LPBOOL, LPBOOL );
WINADVAPI BOOL WINAPI               AccessCheckByTypeResultList( PSECURITY_DESCRIPTOR, PSID, HANDLE, DWORD, POBJECT_TYPE_LIST, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, LPDWORD, LPDWORD, LPDWORD );
WINADVAPI BOOL WINAPI               AccessCheckByTypeResultListAndAuditAlarmA( LPCSTR, LPVOID, LPCSTR, LPCSTR, PSECURITY_DESCRIPTOR, PSID, DWORD, AUDIT_EVENT_TYPE, DWORD, POBJECT_TYPE_LIST, DWORD, PGENERIC_MAPPING, BOOL, LPDWORD, LPDWORD, LPBOOL );
WINADVAPI BOOL WINAPI               AccessCheckByTypeResultListAndAuditAlarmByHandleA( LPCSTR, LPVOID, HANDLE, LPCSTR, LPCSTR, PSECURITY_DESCRIPTOR, PSID, DWORD, AUDIT_EVENT_TYPE, DWORD, POBJECT_TYPE_LIST, DWORD, PGENERIC_MAPPING, BOOL, LPDWORD, LPDWORD, LPBOOL );
WINADVAPI BOOL WINAPI               AccessCheckByTypeResultListAndAuditAlarmByHandleW( LPCWSTR, LPVOID, HANDLE, LPCWSTR, LPCWSTR, PSECURITY_DESCRIPTOR, PSID, DWORD, AUDIT_EVENT_TYPE, DWORD, POBJECT_TYPE_LIST, DWORD, PGENERIC_MAPPING, BOOL, LPDWORD, LPDWORD, LPBOOL );
WINADVAPI BOOL WINAPI               AccessCheckByTypeResultListAndAuditAlarmW( LPCWSTR, LPVOID, LPCWSTR, LPCWSTR, PSECURITY_DESCRIPTOR, PSID, DWORD, AUDIT_EVENT_TYPE, DWORD, POBJECT_TYPE_LIST, DWORD, PGENERIC_MAPPING, BOOL, LPDWORD, LPDWORD, LPBOOL );
WINADVAPI BOOL WINAPI               AddAccessAllowedAceEx( PACL, DWORD, DWORD, DWORD, PSID );
WINADVAPI BOOL WINAPI               AddAccessAllowedObjectAce( PACL, DWORD, DWORD, DWORD, GUID *, GUID *, PSID );
WINADVAPI BOOL WINAPI               AddAccessDeniedAceEx( PACL, DWORD, DWORD, DWORD, PSID );
WINADVAPI BOOL WINAPI               AddAccessDeniedObjectAce( PACL, DWORD, DWORD, DWORD, GUID *, GUID *, PSID );
WINADVAPI BOOL WINAPI               AddAuditAccessAceEx( PACL, DWORD, DWORD, DWORD, PSID, BOOL, BOOL );
WINADVAPI BOOL WINAPI               AddAuditAccessObjectAce( PACL, DWORD, DWORD, DWORD, GUID *, GUID *, PSID, BOOL, BOOL );
WINADVAPI BOOL WINAPI               ConvertToAutoInheritPrivateObjectSecurity( PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR *, GUID *, BOOLEAN, PGENERIC_MAPPING );
WINADVAPI BOOL WINAPI               CreatePrivateObjectSecurityEx( PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR *, GUID *, BOOL, ULONG, HANDLE, PGENERIC_MAPPING );
WINADVAPI BOOL WINAPI               CreatePrivateObjectSecurityWithMultipleInheritance( PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR *, GUID **, ULONG, BOOL, ULONG, HANDLE, PGENERIC_MAPPING );
WINADVAPI BOOL WINAPI               CreateProcessWithLogonW( LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION );
WINADVAPI BOOL WINAPI               CreateProcessWithTokenW( HANDLE, DWORD, LPCWSTR, LPWSTR, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION );
WINADVAPI BOOL WINAPI               SetPrivateObjectSecurityEx( SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR *, ULONG, PGENERIC_MAPPING, HANDLE );
WINADVAPI BOOL WINAPI               SetSecurityDescriptorControl( PSECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, SECURITY_DESCRIPTOR_CONTROL );
#endif
#if (_WIN32_WINNT >= 0x0501)
WINADVAPI BOOL WINAPI               CreateWellKnownSid( WELL_KNOWN_SID_TYPE, PSID, PSID, DWORD * );
WINADVAPI BOOL WINAPI               EqualDomainSid( PSID, PSID, BOOL * );
WINADVAPI BOOL WINAPI               GetWindowsAccountDomainSid( PSID, PSID, DWORD * );
WINADVAPI BOOL WINAPI               IsWellKnownSid( PSID, WELL_KNOWN_SID_TYPE );
#endif
#if (_WIN32_WINNT >= 0x0600)
WINADVAPI BOOL WINAPI               AddMandatoryAce( PACL, DWORD, DWORD, DWORD, PSID );
#endif
#if (_WIN32_WINNT >= 0x0601)
WINADVAPI BOOL WINAPI               AddConditionalAce( PACL, DWORD, DWORD, UCHAR, DWORD, PSID, PWCHAR, DWORD * );
#endif

/* Functions implemented as macros */
#define DefineHandleTable( x )          ((x), TRUE)
#define LimitEmsPages( x )
#define SetSwapAreaSize( x )            (x)
#define LockSegment( x )                GlobalFix( (HANDLE)(x) )
#define UnlockSegment( x )              GlobalUnfix( (HANDLE)(x) )
#define GetCurrentTime()                GetTickCount()
#define Yield()
#define FreeModule( x )                 FreeLibrary( x )
#define MakeProcInstance( p1, p2 )      (p1)
#define FreeProcInstance( x )           (x)
#define GlobalLRUNewest( x )            ((HANDLE)(x))
#define GlobalLRUOldest( x )            ((HANDLE)(x))
#define GlobalDiscard( x )              GlobalReAlloc( (x), 0, GMEM_MOVEABLE )
#define LocalDiscard( x )               LocalDiscard( (x), 0, LMEM_MOVEABLE )
#define GetFreeSpace( x )               0x00100000L
#define InterlockedExchangePointer( p1, p2 )    (PVOID)InterlockedExchange( (PLONG)(p1), (LONG)(p2) )
#define InterlockedCompareExchangePointer( p1, p2, p3)  (PVOID)(LONG_PTR)InterlockedCompareExchange( (LONG volatile *)(p1), (LONG)(LONG_PTR)(p2), (LONG)(LONG_PTR)(p3) )
#define UnlockResource( x )             ((x), 0)
#define HasOverlappedIoCompleted( x )   (((DWORD)(x)->Internal) != STATUS_PENDING)
#if (_WIN32_WINNT >= 0x0600)
    #define ProcThreadAttributeValue( p1, p2, p3, p4 ) \
        (((p1) & PROC_THREAD_ATTRIBUTE_NUMBER) | \
        ((p2 != FALSE) ? PROC_THREAD_ATTRIBUTE_THREAD : 0) | \
        ((p3 != FALSE) ? PROC_THREAD_ATTRIBUTE_INPUT : 0) | \
        ((p4 != FALSE) ? PROC_THREAD_ATTRIBUTE_ADDITIVE : 0))
#endif

/* Predefined process and thread attribute values */
#if (_WIN32_WINNT >= 0x0600)
    #define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS \
        ProcThreadAttributeValue( ProcThreadAttributeParentProcess, FALSE, TRUE, FALSE )
    #define PROC_THREAD_ATTRIBUTE_EXTENDED_FLAGS \
        ProcThreadAttributeValue( ProcThreadAttributeExtendedFlags, FALSE, TRUE, TRUE )
    #define PROC_THREAD_ATTRIBUTE_HANDLE_LIST \
        ProcThreadAttributeValue( ProcThreadAttributeHandleList, FALSE, TRUE, FALSE )
    #define PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY \
        ProcThreadAttributeValue( ProcThreadAttributeGroupAffinity, TRUE, TRUE, FALSE )
    #define PROC_THREAD_ATTRIBUTE_PREFERRED_NODE \
        ProcThreadAttributeValue( ProcThreadAttributePreferredNode, FALSE, TRUE, FALSE )
    #define PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR \
        ProcThreadAttributeValue( ProcThreadAttributeIdealProcessor, TRUE, TRUE, FALSE )
    #define PROC_THREAD_ATTRIBUTE_UMS_THREAD \
        ProcThreadAttributeValue( ProcThreadAttributeUmsThread, TRUE, TRUE, FALSE )
    #define PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY \
        ProcThreadAttributeValue( ProcThreadAttributeMitigationPolicy, FALSE, TRUE, FALSE )
#endif

/* Aliases for macros defined in winnt.h */
#define MoveMemory                          RtlMoveMemory
#define CopyMemory                          RtlCopyMemory
#define FillMemory                          RtlFillMemory
#define ZeroMemory                          RtlZeroMemory
#define CaptureStackBackTrace               RtlCaptureStackBackTrace
#define InitializeThreadpoolEnvironment     TpInitializeCallbackEnviron
#define SetThreadpoolCallbackPool           TpSetCallbackThreadpool
#define SetThreadpoolCallbackCleanupGroup   TpSetCallbackCleanupGroup
#define SetThreadpoolCallbackRunsLong       TpSetCallbackLongFunction
#define SetThreadpoolCallbackLibrary        TpSetCallbackRaceWithDll
#define SetThreadpoolCallbackPersistent     TpSetCallbackPersistent
#define DestroyThreadpoolEnvironment        TpDestroyCallbackEnviron
#if (_WIN32_WINNT >= 0x0601)
    #define SetThreadpoolCallbackPriority   TpSetCallbackPriority
#endif

/* Map generic function names to the appropriate ANSI or Unicode version. */
#ifdef UNICODE
    #define AccessCheckAndAuditAlarm        AccessCheckAndAuditAlarmW
    #define AddAtom                         AddAtomW
    #define BackupEventLog                  BackupEventLogW
    #define BeginUpdateResource             BeginUpdateResourceW
    #define BuildCommDCB                    BuildCommDCBW
    #define BuildCommDCBAndTimeouts         BuildCommDCBAndTimeoutsW
    #define CallNamedPipe                   CallNamedPipeW
    #define CommConfigDialog                CommConfigDialogW
    #define CopyFile                        CopyFileW
    #define ClearEventLog                   ClearEventLogW
    #define CreateDirectory                 CreateDirectoryW
    #define CreateDirectoryEx               CreateDirectoryExW
    #define CreateEvent                     CreateEventW
    #define CreateFile                      CreateFileW
    #define CreateFileMapping               CreateFileMappingW
    #define CreateMailslot                  CreateMailslotW
    #define CreateMutex                     CreateMutexW
    #define CreateNamedPipe                 CreateNamedPipeW
    #define CreateProcess                   CreateProcessW
    #define CreateProcessAsUser             CreateProcessAsUserW
    #define CreateSemaphore                 CreateSemaphoreW
    #define DecryptFile                     DecryptFileW
    #define DefineDosDevice                 DefineDosDeviceW
    #define DeleteFile                      DeleteFileW
    #define EncryptFile                     EncryptFileW
    #define EndUpdateResource               EndUpdateResourceW
    #define EnumResourceLanguages           EnumResourceLanguagesW
    #define EnumResourceLanguagesEx         EnumResourceLanguagesExW
    #define EnumResourceNames               EnumResourceNamesW
    #define EnumResourceNamesEx             EnumResourceNamesExW
    #define EnumResourceTypes               EnumResourceTypesW
    #define EnumResourceTypesEx             EnumResourceTypesExW
    #define ExpandEnvironmentStrings        ExpandEnvironmentStringsW
    #define FatalAppExit                    FatalAppExitW
    #define FileEncryptionStatus            FileEncryptionStatusW
    #define FindAtom                        FindAtomW
    #define FindFirstChangeNotification     FindFirstChangeNotificationW
    #define FindFirstFile                   FindFirstFileW
    #define FindNextFile                    FindNextFileW
    #define FindResource                    FindResourceW
    #define FindResourceEx                  FindResourceExW
    #define FormatMessage                   FormatMessageW
    #define FreeEnvironmentStrings          FreeEnvironmentStringsW
    #define GetAtomName                     GetAtomNameW
    #define GetBinaryType                   GetBinaryTypeW
    #define GetCommandLine                  GetCommandLineW
    #define GetCompressedFileSize           GetCompressedFileSizeW
    #define GetComputerName                 GetComputerNameW
    #define GetCurrentDirectory             GetCurrentDirectoryW
    #define GetDefaultCommConfig            GetDefaultCommConfigW
    #define GetDiskFreeSpace                GetDiskFreeSpaceW
    #define GetDiskFreeSpaceEx              GetDiskFreeSpaceExW
    #define GetDriveType                    GetDriveTypeW
    #define GetEnvironmentStrings           GetEnvironmentStringsW
    #define GetEnvironmentVariable          GetEnvironmentVariableW
    #define GetFileAttributes               GetFileAttributesW
    #define GetFileAttributesEx             GetFileAttributesExW
    #define GetFileSecurity                 GetFileSecurityW
    #define GetFirmwareEnvironmentVariable  GetFirmwareEnvironmentVariableW
    #define GetFullPathName                 GetFullPathNameW
    #define GetLogicalDriveStrings          GetLogicalDriveStringsW
    #define GetLongPathName                 GetLongPathNameW
    #define GetModuleFileName               GetModuleFileNameW
    #define GetModuleHandle                 GetModuleHandleW
    #define GetNamedPipeClientComputerName  GetNamedPipeClientComputerNameW
    #define GetNamedPipeHandleState         GetNamedPipeHandleStateW
    #define GetPrivateProfileInt            GetPrivateProfileIntW
    #define GetPrivateProfileSection        GetPrivateProfileSectionW
    #define GetPrivateProfileSectionNames   GetPrivateProfileSectionNamesW
    #define GetPrivateProfileString         GetPrivateProfileStringW
    #define GetPrivateProfileStruct         GetPrivateProfileStructW
    #define GetProfileInt                   GetProfileIntW
    #define GetProfileSection               GetProfileSectionW
    #define GetProfileString                GetProfileStringW
    #define GetShortPathName                GetShortPathNameW
    #define GetStartupInfo                  GetStartupInfoW
    #define GetSystemDirectory              GetSystemDirectoryW
    #define GetSystemWindowsDirectory       GetSystemWindowsDirectoryW
    #define GetTempFileName                 GetTempFileNameW
    #define GetTempPath                     GetTempPathW
    #define GetUserName                     GetUserNameW
    #define GetVersionEx                    GetVersionExW
    #define GetVolumeInformation            GetVolumeInformationW
    #define GetWindowsDirectory             GetWindowsDirectoryW
    #define GlobalAddAtom                   GlobalAddAtomW
    #define GlobalFindAtom                  GlobalFindAtomW
    #define GlobalGetAtomName               GlobalGetAtomNameW
    #define IsBadStringPtr                  IsBadStringPtrW
    #define LoadLibrary                     LoadLibraryW
    #define LoadLibraryEx                   LoadLibraryExW
    #define LogonUser                       LogonUserW
    #define LogonUserEx                     LogonUserExW
    #define LookupAccountName               LookupAccountNameW
    #define LookupAccountSid                LookupAccountSidW
    #define LookupPrivilegeDisplayName      LookupPrivilegeDisplayNameW
    #define LookupPrivilegeName             LookupPrivilegeNameW
    #define LookupPrivilegeValue            LookupPrivilegeValueW
    #define MoveFile                        MoveFileW
    #define MoveFileEx                      MoveFileExW
    #define ObjectCloseAuditAlarm           ObjectCloseAuditAlarmW
    #define ObjectDeleteAuditAlarm          ObjectDeleteAuditAlarmW
    #define ObjectOpenAuditAlarm            ObjectOpenAuditAlarmW
    #define ObjectPrivilegeAuditAlarm       ObjectPrivilegeAuditAlarmW
    #define OpenBackupEventLog              OpenBackupEventLogW
    #define OpenEncryptedFileRaw            OpenEncryptedFileRawW
    #define OpenEvent                       OpenEventW
    #define OpenEventLog                    OpenEventLogW
    #define OpenFileMapping                 OpenFileMappingW
    #define OpenMutex                       OpenMutexW
    #define OpenSemaphore                   OpenSemaphoreW
    #define OutputDebugString               OutputDebugStringW
    #define PrivilegedServiceAuditAlarm     PrivilegedServiceAuditAlarmW
    #define QueryDosDevice                  QueryDosDeviceW
    #define ReadEventLog                    ReadEventLogW
    #define RegisterEventSource             RegisterEventSourceW
    #define RemoveDirectory                 RemoveDirectoryW
    #define ReportEvent                     ReportEventW
    #define SearchPath                      SearchPathW
    #define SetComputerName                 SetComputerNameW
    #define SetCurrentDirectory             SetCurrentDirectoryW
    #define SetDefaultCommConfig            SetDefaultCommConfigW
    #define SetEnvironmentStrings           SetEnvironmentStringsW
    #define SetEnvironmentVariable          SetEnvironmentVariableW
    #define SetFileAttributes               SetFileAttributesW
    #define SetFileSecurity                 SetFileSecurityW
    #define SetFileShortName                SetFileShortNameW
    #define SetFirmwareEnvironmentVariable  SetFirmwareEnvironmentVariableW
    #define SetVolumeLabel                  SetVolumeLabelW
    #define UpdateResource                  UpdateResourceW
    #define VerifyVersionInfo               VerifyVersionInfoW
    #define WaitNamedPipe                   WaitNamedPipeW
    #define WritePrivateProfileSection      WritePrivateProfileSectionW
    #define WritePrivateProfileString       WritePrivateProfileStringW
    #define WritePrivateProfileStruct       WritePrivateProfileStructW
    #define WriteProfileSection             WriteProfileSectionW
    #define WriteProfileString              WriteProfileStringW
    #define lstrcat                         lstrcatW
    #define lstrcmp                         lstrcmpW
    #define lstrcmpi                        lstrcmpiW
    #define lstrcpy                         lstrcpyW
    #define lstrcpyn                        lstrcpynW
    #define lstrlen                         lstrlenW
    #if (_WIN32_WINNT >= 0x0400)
        #define CopyFileEx                  CopyFileExW
        #define FindFirstFileEx             FindFirstFileExW
    #endif
    #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
        #define CreateWaitableTimer         CreateWaitableTimerW
        #define OpenWaitableTimer           OpenWaitableTimerW
    #endif
    #if (_WIN32_WINNT >= 0x0500)
        #define AccessCheckByTypeAndAuditAlarm  AccessCheckByTypeAndAuditAlarmW
        #define AccessCheckByTypeResultListAndAuditAlarm    AccessCheckByTypeResultListAndAuditAlarmW
        #define AccessCheckByTypeResultListAndAuditAlarmByHandle    AccessCheckByTypeResultListAndAuditAlarmByHandleW
        #define CreateActCtx                CreateActCtxW
        #define CreateHardLink              CreateHardLinkW
        #define CreateJobObject             CreateJobObjectW
        #define DeleteVolumeMountPoint      DeleteVolumeMountPointW
        #define DnsHostnameToComputerName   DnsHostnameToComputerNameW
        #define FindActCtxSectionString     FindActCtxSectionStringW
        #define FindFirstVolume             FindFirstVolumeW
        #define FindFirstVolumeMountPoint   FindFirstVolumeMountPointW
        #define FindNextVolume              FindNextVolumeW
        #define FindNextVolumeMountPoint    FindNextVolumeMountPointW
        #define GetComputerNameEx           GetComputerNameExW
        #define GetVolumeNameForVolumeMountPoint    GetVolumeNameForVolumeMountPointW
        #define GetVolumePathName           GetVolumePathNameW
        #define MoveFileWithProgress        MoveFileWithProgressW
        #define OpenJobObject               OpenJobObjectW
        #define ReplaceFile                 ReplaceFileW
        #define SetComputerNameEx           SetComputerNameExW
        #define SetVolumeMountPoint         SetVolumeMountPointW
    #endif
    #if (_WIN32_WINNT >= 0x0501)
        #define CheckNameLegalDOS8Dot3      CheckNameLegalDOS8Dot3W
        #define GetModuleHandleEx           GetModuleHandleExW
        #define GetSystemWow64Directory     GetSystemWow64DirectoryW
        #define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameW
    #endif
    #if (_WIN32_WINNT >= 0x0502)
        #define GetDllDirectory             GetDllDirectoryW
        #define NeedCurrentDirectoryForExePath  NeedCurrentDirectoryForExePathW
        #define SetDllDirectory             SetDllDirectoryW
    #endif
    #if (_WIN32_WINNT >= 0x0600)
        #define CopyFileTransacted          CopyFileTransactedW
        #define CreateBoundaryDescriptor    CreateBoundaryDescriptorW
        #define CreateDirectoryTransacted   CreateDirectoryTransactedW
        #define CreateEventEx               CreateEventExW
        #define CreateFileMappingNuma       CreateFileMappingNumaW
        #define CreateFileTransacted        CreateFileTransactedW
        #define CreateHardLinkTransacted    CreateHardLinkTransactedW
        #define CreateMutexEx               CreateMutexExW
        #define CreatePrivateNamespace      CreatePrivateNamespaceW
        #define CreateSemaphoreEx           CreateSemaphoreExW
        #define CreateSymbolicLink          CreateSymbolicLinkW
        #define CreateSymbolicLinkTransacted    CreateSymbolicLinkTransactedW
        #define CreateWaitableTimerEx       CreateWaitableTimerExW
        #define DeleteFileTransacted        DeleteFileTransactedW
        #define FindFirstFileTransacted     FindFirstFileTransactedW
        #define GetCompressedFileSizeTransacted GetCompressedFileSizeTransactedW
        #define GetFileAttributesTransacted GetFileAttributesTransactedW
        #define GetFinalPathNameByHandle    GetFinalPathNameByHandleW
        #define GetFullPathNameTransacted   GetFullPathNameTransactedW
        #define GetLongPathNameTransacted   GetLongPathNameTransactedW
        #define MoveFileTransacted          MoveFileTransactedW
        #define OpenPrivateNamespace        OpenPrivateNamespaceW
        #define QueryFullProcessImageName   QueryFullProcessImageNameW
        #define RemoveDirectoryTransacted   RemoveDirectoryTransactedW
        #define SetFileAttributesTransacted SetFileAttributesTransactedW
    #endif
#else
    #define AcesssCheckAndAuditAlarm        AccessCheckAndAuditAlarmA
    #define AddAtom                         AddAtomA
    #define BackupEventLog                  BackupEventLogA
    #define BeginUpdateResource             BeginUpdateResourceA
    #define BuildCommDCB                    BuildCommDCBA
    #define BuildCommDCBAndTimeouts         BuildCommDCBAndTimeoutsA
    #define CallNamedPipe                   CallNamedPipeA
    #define ClearEventLog                   ClearEventLogA
    #define CommConfigDialog                CommConfigDialogA
    #define CopyFile                        CopyFileA
    #define CreateBoundaryDescriptor        CreateBoundaryDescriptorA
    #define CreateDirectory                 CreateDirectoryA
    #define CreateDirectoryEx               CreateDirectoryExA
    #define CreateEvent                     CreateEventA
    #define CreateFile                      CreateFileA
    #define CreateFileMapping               CreateFileMappingA
    #define CreateMailslot                  CreateMailslotA
    #define CreateMutex                     CreateMutexA
    #define CreateNamedPipe                 CreateNamedPipeA
    #define CreateProcess                   CreateProcessA
    #define CreateProcessAsUser             CreateProcessAsUserA
    #define CreateSemaphore                 CreateSemaphoreA
    #define DecryptFile                     DecryptFileA
    #define DefineDosDevice                 DefineDosDeviceA
    #define DeleteFile                      DeleteFileA
    #define EncryptFile                     EncryptFileA
    #define EndUpdateResource               EndUpdateResourceA
    #define EnumResourceLanguages           EnumResourceLanguagesA
    #define EnumResourceLanguagesEx         EnumResourceLanguagesExA
    #define EnumResourceNames               EnumResourceNamesA
    #define EnumResourceNamesEx             EnumResourceNamesExA
    #define EnumResourceTypes               EnumResourceTypesA
    #define EnumResourceTypesEx             EnumResourceTypesExA
    #define ExpandEnvironmentStrings        ExpandEnvironmentStringsA
    #define FatalAppExit                    FatalAppExitA
    #define FileEncryptionStatus            FileEncryptionStatusA
    #define FindAtom                        FindAtomA
    #define FindFirstChangeNotification     FindFirstChangeNotificationA
    #define FindFirstFile                   FindFirstFileA
    #define FindNextFile                    FindNextFileA
    #define FindResource                    FindResourceA
    #define FindResourceEx                  FindResourceExA
    #define FormatMessage                   FormatMessageA
    #define FreeEnvironmentStrings          FreeEnvironmentStringsA
    #define GetAtomName                     GetAtomNameA
    #define GetBinaryType                   GetBinaryTypeA
    #define GetCommandLine                  GetCommandLineA
    #define GetCompressedFileSize           GetCompressedFileSizeA
    #define GetComputerName                 GetComputerNameA
    #define GetCurrentDirectory             GetCurrentDirectoryA
    #define GetDefaultCommConfig            GetDefaultCommConfigA
    #define GetDiskFreeSpace                GetDiskFreeSpaceA
    #define GetDiskFreeSpaceEx              GetDiskFreeSpaceExA
    #define GetDriveType                    GetDriveTypeA
    #define GetEnvironmentStrings           GetEnvironmentStringsA
    #define GetEnvironmentVariable          GetEnvironmentVariableA
    #define GetFileAttributes               GetFileAttributesA
    #define GetFileAttributesEx             GetFileAttributesExA
    #define GetFileSecurity                 GetFileSecurityA
    #define GetFirmwareEnvironmentVariable  GetFirmwareEnvironmentVariableA
    #define GetFullPathName                 GetFullPathNameA
    #define GetLogicalDriveStrings          GetLogicalDriveStringsA
    #define GetLongPathName                 GetLongPathNameA
    #define GetModuleFileName               GetModuleFileNameA
    #define GetModuleHandle                 GetModuleHandleA
    #define GetNamedPipeClientComputerName  GetNamedPipeClientComputerNameA
    #define GetNamedPipeHandleState         GetNamedPipeHandleStateA
    #define GetPrivateProfileInt            GetPrivateProfileIntA
    #define GetPrivateProfileSection        GetPrivateProfileSectionA
    #define GetPrivateProfileSectionNames   GetPrivateProfileSectionNamesA
    #define GetPrivateProfileString         GetPrivateProfileStringA
    #define GetPrivateProfileStruct         GetPrivateProfileStructA
    #define GetProfileInt                   GetProfileIntA
    #define GetProfileSection               GetProfileSectionA
    #define GetProfileString                GetProfileStringA
    #define GetShortPathName                GetShortPathNameA
    #define GetStartupInfo                  GetStartupInfoA
    #define GetSystemDirectory              GetSystemDirectoryA
    #define GetSystemWindowsDirectory       GetSystemWindowsDirectoryA
    #define GetTempFileName                 GetTempFileNameA
    #define GetTempPath                     GetTempPathA
    #define GetUserName                     GetUserNameA
    #define GetVersionEx                    GetVersionExA
    #define GetVolumeInformation            GetVolumeInformationA
    #define GetWindowsDirectory             GetWindowsDirectoryA
    #define GlobalAddAtom                   GlobalAddAtomA
    #define GlobalFindAtom                  GlobalFindAtomA
    #define GlobalGetAtomName               GlobalGetAtomNameA
    #define IsBadStringPtr                  IsBadStringPtrA
    #define LoadLibrary                     LoadLibraryA
    #define LoadLibraryEx                   LoadLibraryExA
    #define LogonUser                       LogonUserA
    #define LogonUserEx                     LogonUserExA
    #define LookupAccountName               LookupAccountNameA
    #define LookupAccountSid                LookupAccountSidA
    #define LookupPrivilegeDisplayName      LookupPrivilegeDisplayNameA
    #define LookupPrivilegeName             LookupPrivilegeNameA
    #define LookupPrivilegeValue            LookupPrivilegeValueA
    #define MoveFile                        MoveFileA
    #define MoveFileEx                      MoveFileExA
    #define ObjectCloseAuditAlarm           ObjectCloseAuditAlarmA
    #define ObjectDeleteAuditAlarm          ObjectDeleteAuditAlarmA
    #define ObjectOpenAuditAlarm            ObjectOpenAuditAlarmA
    #define ObjectPrivilegeAuditAlarm       ObjectPrivilegeAuditAlarmA
    #define OpenBackupEventLog              OpenBackupEventLogA
    #define OpenEncryptedFileRaw            OpenEncryptedFileRawA
    #define OpenEvent                       OpenEventA
    #define OpenEventLog                    OpenEventLogA
    #define OpenFileMapping                 OpenFileMappingA
    #define OpenMutex                       OpenMutexA
    #define OpenSemaphore                   OpenSemaphoreA
    #define OutputDebugString               OutputDebugStringA
    #define PrivilegedServiceAuditAlarm     PrivilegedServiceAuditAlarmA
    #define QueryDosDevice                  QueryDosDeviceA
    #define ReadEventLog                    ReadEventLogA
    #define RegisterEventSource             RegisterEventSourceA
    #define RemoveDirectory                 RemoveDirectoryA
    #define ReportEvent                     ReportEventA
    #define SearchPath                      SearchPathA
    #define SetComputerName                 SetComputerNameA
    #define SetCurrentDirectory             SetCurrentDirectoryA
    #define SetDefaultCommConfig            SetDefaultCommConfigA
    #define SetEnvironmentStrings           SetEnvironmentStringsA
    #define SetEnvironmentVariable          SetEnvironmentVariableA
    #define SetFileAttributes               SetFileAttributesA
    #define SetFileSecurity                 SetFileSecurityA
    #define SetFileShortName                SetFileShortNameA
    #define SetFirmwareEnvironmentVariable  SetFirmwareEnvironmentVariableA
    #define SetVolumeLabel                  SetVolumeLabelA
    #define UpdateResource                  UpdateResourceA
    #define VerifyVersionInfo               VerifyVersionInfoA
    #define WaitNamedPipe                   WaitNamedPipeA
    #define WritePrivateProfileSection      WritePrivateProfileSectionA
    #define WritePrivateProfileString       WritePrivateProfileStringA
    #define WritePrivateProfileStruct       WritePrivateProfileStructA
    #define WriteProfileSection             WriteProfileSectionA
    #define WriteProfileString              WriteProfileStringA
    #define lstrcat                         lstrcatA
    #define lstrcmp                         lstrcmpA
    #define lstrcmpi                        lstrcmpiA
    #define lstrcpy                         lstrcpyA
    #define lstrcpyn                        lstrcpynA
    #define lstrlen                         lstrlenA
    #if (_WIN32_WINNT >= 0x0400)
        #define CopyFileEx                  CopyFileExA
        #define FindFirstFileEx             FindFirstFileExA
    #endif
    #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
        #define CreateWaitableTimer         CreateWaitableTimerA
        #define OpenWaitableTimer           OpenWaitableTimerA
    #endif
    #if (_WIN32_WINNT >= 0x0500)
        #define AccessCheckByTypeAndAuditAlarm  AccessCheckByTypeAndAuditAlarmA
        #define AccessCheckByTypeResultListAndAuditAlarm    AccessCheckByTypeResultListAndAuditAlarmA
        #define AccessCheckByTypeResultListAndAuditAlarmByHandle    AccessCheckByTypeResultListAndAuditAlarmByHandleA
        #define CreateActCtx                CreateActCtxA
        #define CreateHardLink              CreateHardLinkA
        #define CreateJobObject             CreateJobObjectA
        #define DeleteVolumeMountPoint      DeleteVolumeMountPointA
        #define DnsHostnameToComputerName   DnsHostnameToComputerNameA
        #define FindActCtxSectionString     FindActCtxSectionStringA
        #define FindFirstVolume             FindFirstVolumeA
        #define FindFirstVolumeMountPoint   FindFirstVolumeMountPointA
        #define FindNextVolume              FindNextVolumeA
        #define FindNextVolumeMountPoint    FindNextVolumeMountPointA
        #define GetComputerNameEx           GetComputerNameExA
        #define GetVolumeNameForVolumeMountPoint    GetVolumeNameForVolumeMountPointA
        #define GetVolumePathName           GetVolumePathNameA
        #define MoveFileWithProgress        MoveFileWithProgressA
        #define OpenJobObject               OpenJobObjectA
        #define ReplaceFile                 ReplaceFileA
        #define SetComputerNameEx           SetComputerNameExA
        #define SetVolumeMountPoint         SetVolumeMountPointA
    #endif
    #if (_WIN32_WINNT >= 0x0501)
        #define CheckNameLegalDOS8Dot3      CheckNameLegalDOS8Dot3A
        #define GetModuleHandleEx           GetModuleHandleExA
        #define GetSystemWow64Directory     GetSystemWow64DirectoryA
        #define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameA
    #endif
    #if (_WIN32_WINNT >= 0x0502)
        #define GetDllDirectory             GetDllDirectoryA
        #define NeedCurrentDirectoryForExePath  NeedCurrentDirectoryForExePathA
        #define SetDllDirectory             SetDllDirectoryA
    #endif
    #if (_WIN32_WINNT >= 0x0600)
        #define CopyFileTransacted          CopyFileTransactedA
        #define CreateDirectoryTransacted   CreateDirectoryTransactedA
        #define CreateEventEx               CreateEventExA
        #define CreateFileMappingNuma       CreateFileMappingNumaA
        #define CreateFileTransacted        CreateFileTransactedA
        #define CreateHardLinkTransacted    CreateHardLinkTransactedA
        #define CreateMutexEx               CreateMutexExA
        #define CreatePrivateNamespace      CreatePrivateNamespaceA
        #define CreateSemaphoreEx           CreateSemaphoreExA
        #define CreateSymbolicLink          CreateSymbolicLinkA
        #define CreateSymbolicLinkTransacted    CreateSymbolicLinkTransactedA
        #define CreateWaitableTimerEx       CreateWaitableTimerExA
        #define DeleteFileTransacted        DeleteFileTransactedA
        #define FindFirstFileTransacted     FindFirstFileTransactedA
        #define GetCompressedFileSizeTransacted GetCompressedFileSizeTransactedA
        #define GetFileAttributesTransacted GetFileAttributesTransactedA
        #define GetFinalPathNameByHandle    GetFinalPathNameByHandleA
        #define GetFullPathNameTransacted   GetFullPathNameTransactedA
        #define GetLongPathNameTransacted   GetLongPathNameTransactedA
        #define MoveFileTransacted          MoveFileTransactedA
        #define OpenPrivateNamespace        OpenPrivateNamespaceA
        #define QueryFullProcessImageName   QueryFullProcessImageNameA
        #define RemoveDirectoryTransacted   RemoveDirectoryTransactedA
        #define SetFileAttributesTransacted SetFileAttributesTransactedA
    #endif
#endif

/* If the original Windows NT 3.1, a single function GetEnvironmentStrings()
 * without an A/W suffix was defined.  It did not support Unicode.  To enable
 * support for Windows NT 3.1 in code that calls GetEnvironmentStrings(),
 * define _OLD_WINNT_COMPATIBILE.  This will disable support for the Unicode
 * version of the function.
 */
#ifdef _OLD_WINNT_COMPATIBLE
#undef GetEnvironmentStrings
WINBASEAPI LPCH WINAPI  GetEnvironmentStrings( VOID );
#endif

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* _WINBASE_ */
