| #ifndef _MINWINBASE_ | 
 | #define _MINWINBASE_ | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | #define MoveMemory RtlMoveMemory | 
 | #define CopyMemory RtlCopyMemory | 
 | #define FillMemory RtlFillMemory | 
 | #define ZeroMemory RtlZeroMemory | 
 |  | 
 |   typedef struct _SECURITY_ATTRIBUTES { | 
 |     DWORD nLength; | 
 |     LPVOID lpSecurityDescriptor; | 
 |     WINBOOL bInheritHandle; | 
 |   } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; | 
 |  | 
 |   typedef struct _OVERLAPPED { | 
 |     ULONG_PTR Internal; | 
 |     ULONG_PTR InternalHigh; | 
 |     __C89_NAMELESS union { | 
 |         struct { | 
 |             DWORD Offset; | 
 |             DWORD OffsetHigh; | 
 |         } DUMMYSTRUCTNAME; | 
 |         PVOID Pointer; | 
 |     } DUMMYUNIONNAME; | 
 |     HANDLE hEvent; | 
 |   } OVERLAPPED, *LPOVERLAPPED; | 
 |  | 
 |   typedef struct _OVERLAPPED_ENTRY { | 
 |     ULONG_PTR lpCompletionKey; | 
 |     LPOVERLAPPED lpOverlapped; | 
 |     ULONG_PTR Internal; | 
 |     DWORD dwNumberOfBytesTransferred; | 
 |   } OVERLAPPED_ENTRY, *LPOVERLAPPED_ENTRY; | 
 |  | 
 | #ifndef _FILETIME_ | 
 | #define _FILETIME_ | 
 |   typedef struct _FILETIME { | 
 |     DWORD dwLowDateTime; | 
 |     DWORD dwHighDateTime; | 
 |   } FILETIME,*PFILETIME,*LPFILETIME; | 
 | #endif | 
 |  | 
 | #ifndef _SYSTEMTIME_ | 
 | #define _SYSTEMTIME_ | 
 |   typedef struct _SYSTEMTIME { | 
 |     WORD wYear; | 
 |     WORD wMonth; | 
 |     WORD wDayOfWeek; | 
 |     WORD wDay; | 
 |     WORD wHour; | 
 |     WORD wMinute; | 
 |     WORD wSecond; | 
 |     WORD wMilliseconds; | 
 |   } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME; | 
 | #endif | 
 |  | 
 |   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]; | 
 | #ifdef _MAC | 
 |     DWORD dwFileType; | 
 |     DWORD dwCreatorType; | 
 |     WORD  wFinderFlags; | 
 | #endif | 
 |   } WIN32_FIND_DATAA, *PWIN32_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]; | 
 | #ifdef _MAC | 
 |     DWORD dwFileType; | 
 |     DWORD dwCreatorType; | 
 |     WORD  wFinderFlags; | 
 | #endif | 
 |   } WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW; | 
 |  | 
 |   __MINGW_TYPEDEF_AW(WIN32_FIND_DATA) | 
 |   __MINGW_TYPEDEF_AW(PWIN32_FIND_DATA) | 
 |   __MINGW_TYPEDEF_AW(LPWIN32_FIND_DATA) | 
 |  | 
 | #if _WIN32_WINNT >= 0x0400 | 
 |   typedef enum _FINDEX_INFO_LEVELS { | 
 |     FindExInfoStandard, | 
 |     FindExInfoBasic, | 
 |     FindExInfoMaxInfoLevel | 
 |   } FINDEX_INFO_LEVELS; | 
 |  | 
 | #define FIND_FIRST_EX_CASE_SENSITIVE 0x00000001 | 
 | #define FIND_FIRST_EX_LARGE_FETCH 0x00000002 | 
 | #if NTDDI_VERSION >= 0x0A000005 | 
 | #define FIND_FIRST_EX_ON_DISK_ENTRIES_ONLY  0x00000004 | 
 | #endif | 
 |  | 
 |   typedef enum _FINDEX_SEARCH_OPS { | 
 |     FindExSearchNameMatch, | 
 |     FindExSearchLimitToDirectories, | 
 |     FindExSearchLimitToDevices, | 
 |     FindExSearchMaxSearchOp | 
 |   } FINDEX_SEARCH_OPS; | 
 | #endif | 
 |  | 
 | #if _WIN32_WINNT >= 0x0400 | 
 | #if NTDDI_VERSION >= 0x0A000004 | 
 |   typedef enum _READ_DIRECTORY_NOTIFY_INFORMATION_CLASS { | 
 |     ReadDirectoryNotifyInformation = 1, | 
 |     ReadDirectoryNotifyExtendedInformation = 2 | 
 |   } READ_DIRECTORY_NOTIFY_INFORMATION_CLASS, *PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS; | 
 | #endif | 
 | #endif | 
 |  | 
 |   typedef enum _GET_FILEEX_INFO_LEVELS { | 
 |     GetFileExInfoStandard, | 
 |     GetFileExMaxInfoLevel | 
 |   } GET_FILEEX_INFO_LEVELS; | 
 |  | 
 | #if _WIN32_WINNT >= 0x0600 | 
 |   typedef enum _FILE_INFO_BY_HANDLE_CLASS { | 
 |     FileBasicInfo /* is zero? */, | 
 |     FileStandardInfo, | 
 |     FileNameInfo, | 
 |     FileRenameInfo, | 
 |     FileDispositionInfo, | 
 |     FileAllocationInfo, | 
 |     FileEndOfFileInfo, | 
 |     FileStreamInfo, | 
 |     FileCompressionInfo, | 
 |     FileAttributeTagInfo, | 
 |     FileIdBothDirectoryInfo, | 
 |     FileIdBothDirectoryRestartInfo, | 
 |     FileIoPriorityHintInfo, | 
 |     FileRemoteProtocolInfo, | 
 |     FileFullDirectoryInfo, | 
 |     FileFullDirectoryRestartInfo, | 
 | #if _WIN32_WINNT >= 0x0602 | 
 |     FileStorageInfo, | 
 |     FileAlignmentInfo, | 
 |     FileIdInfo, | 
 |     FileIdExtdDirectoryInfo, | 
 |     FileIdExtdDirectoryRestartInfo, | 
 | #endif | 
 | #if _WIN32_WINNT >= 0x0A000002 | 
 |     FileDispositionInfoEx, | 
 |     FileRenameInfoEx, | 
 | #endif | 
 |     FileCaseSensitiveInfo, | 
 |     FileNormalizedNameInfo, | 
 |     MaximumFileInfoByHandleClass | 
 |   } FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS; | 
 | #endif | 
 |  | 
 |   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; | 
 |  | 
 |   typedef VOID (WINAPI *LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped); | 
 |  | 
 | #define LOCKFILE_FAIL_IMMEDIATELY 0x1 | 
 | #define LOCKFILE_EXCLUSIVE_LOCK 0x2 | 
 |  | 
 |   typedef struct _PROCESS_HEAP_ENTRY { | 
 |     PVOID lpData; | 
 |     DWORD cbData; | 
 |     BYTE cbOverhead; | 
 |     BYTE iRegionIndex; | 
 |     WORD wFlags; | 
 |     __C89_NAMELESS union { | 
 |         struct { | 
 |             HANDLE hMem; | 
 |             DWORD dwReserved[3]; | 
 |         } Block; | 
 |         struct { | 
 |             DWORD dwCommittedSize; | 
 |             DWORD dwUnCommittedSize; | 
 |             LPVOID lpFirstBlock; | 
 |             LPVOID lpLastBlock; | 
 |         } Region; | 
 |     } DUMMYUNIONNAME; | 
 |   } PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY,*PPROCESS_HEAP_ENTRY; | 
 |  | 
 | #define PROCESS_HEAP_REGION 0x1 | 
 | #define PROCESS_HEAP_UNCOMMITTED_RANGE 0x2 | 
 | #define PROCESS_HEAP_ENTRY_BUSY 0x4 | 
 | #define PROCESS_HEAP_SEG_ALLOC 0x8 | 
 | #define PROCESS_HEAP_ENTRY_MOVEABLE 0x10 | 
 | #define PROCESS_HEAP_ENTRY_DDESHARE 0x20 | 
 |  | 
 |   typedef struct _REASON_CONTEXT { | 
 |     ULONG Version; | 
 |     DWORD Flags; | 
 |     union { | 
 |         struct { | 
 |             HMODULE LocalizedReasonModule; | 
 |             ULONG LocalizedReasonId; | 
 |             ULONG ReasonStringCount; | 
 |             LPWSTR *ReasonStrings; | 
 |         } Detailed; | 
 |         LPWSTR SimpleReasonString; | 
 |     } Reason; | 
 |   } REASON_CONTEXT, *PREASON_CONTEXT; | 
 |  | 
 | #define EXCEPTION_DEBUG_EVENT 1 | 
 | #define CREATE_THREAD_DEBUG_EVENT 2 | 
 | #define CREATE_PROCESS_DEBUG_EVENT 3 | 
 | #define EXIT_THREAD_DEBUG_EVENT 4 | 
 | #define EXIT_PROCESS_DEBUG_EVENT 5 | 
 | #define LOAD_DLL_DEBUG_EVENT 6 | 
 | #define UNLOAD_DLL_DEBUG_EVENT 7 | 
 | #define OUTPUT_DEBUG_STRING_EVENT 8 | 
 | #define RIP_EVENT 9 | 
 |  | 
 |   typedef DWORD (WINAPI *PTHREAD_START_ROUTINE) (LPVOID lpThreadParameter); | 
 |   typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE; | 
 |  | 
 |   typedef LPVOID (WINAPI *PENCLAVE_ROUTINE) (LPVOID lpThreadParameter); | 
 |   typedef PENCLAVE_ROUTINE LPENCLAVE_ROUTINE; | 
 |  | 
 |   typedef struct _EXCEPTION_DEBUG_INFO { | 
 |     EXCEPTION_RECORD ExceptionRecord; | 
 |     DWORD dwFirstChance; | 
 |   } EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO; | 
 |  | 
 |   typedef struct _CREATE_THREAD_DEBUG_INFO { | 
 |     HANDLE hThread; | 
 |     LPVOID lpThreadLocalBase; | 
 |     LPTHREAD_START_ROUTINE lpStartAddress; | 
 |   } CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO; | 
 |  | 
 |   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, *LPCREATE_PROCESS_DEBUG_INFO; | 
 |  | 
 |   typedef struct _EXIT_THREAD_DEBUG_INFO { | 
 |     DWORD dwExitCode; | 
 |   } EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO; | 
 |  | 
 |   typedef struct _EXIT_PROCESS_DEBUG_INFO { | 
 |     DWORD dwExitCode; | 
 |   } EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO; | 
 |  | 
 |   typedef struct _LOAD_DLL_DEBUG_INFO { | 
 |     HANDLE hFile; | 
 |     LPVOID lpBaseOfDll; | 
 |     DWORD dwDebugInfoFileOffset; | 
 |     DWORD nDebugInfoSize; | 
 |     LPVOID lpImageName; | 
 |     WORD fUnicode; | 
 |   } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO; | 
 |  | 
 |   typedef struct _UNLOAD_DLL_DEBUG_INFO { | 
 |     LPVOID lpBaseOfDll; | 
 |   } UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO; | 
 |  | 
 |   typedef struct _OUTPUT_DEBUG_STRING_INFO { | 
 |     LPSTR lpDebugStringData; | 
 |     WORD fUnicode; | 
 |     WORD nDebugStringLength; | 
 |   } OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO; | 
 |  | 
 |   typedef struct _RIP_INFO { | 
 |     DWORD dwError; | 
 |     DWORD dwType; | 
 |   } RIP_INFO, *LPRIP_INFO; | 
 |  | 
 |   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, *LPDEBUG_EVENT; | 
 |  | 
 | #ifndef __WIDL__ | 
 |   typedef PCONTEXT LPCONTEXT; | 
 | #endif | 
 |  | 
 | #define STILL_ACTIVE STATUS_PENDING | 
 | #define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION | 
 | #define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT | 
 | #define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT | 
 | #define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP | 
 | #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED | 
 | #define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND | 
 | #define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO | 
 | #define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT | 
 | #define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION | 
 | #define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW | 
 | #define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK | 
 | #define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW | 
 | #define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO | 
 | #define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW | 
 | #define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION | 
 | #define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR | 
 | #define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION | 
 | #define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION | 
 | #define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW | 
 | #define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION | 
 | #define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION | 
 | #define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE | 
 | #define EXCEPTION_POSSIBLE_DEADLOCK STATUS_POSSIBLE_DEADLOCK | 
 | #define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT | 
 |  | 
 | #define LMEM_FIXED 0x0 | 
 | #define LMEM_MOVEABLE 0x2 | 
 | #define LMEM_NOCOMPACT 0x10 | 
 | #define LMEM_NODISCARD 0x20 | 
 | #define LMEM_ZEROINIT 0x40 | 
 | #define LMEM_MODIFY 0x80 | 
 | #define LMEM_DISCARDABLE 0xf00 | 
 | #define LMEM_VALID_FLAGS 0xf72 | 
 | #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) | 
 |  | 
 | #define LocalDiscard(h) LocalReAlloc ((h), 0, LMEM_MOVEABLE) | 
 |  | 
 | #define LMEM_DISCARDED 0x4000 | 
 | #define LMEM_LOCKCOUNT 0xff | 
 |  | 
 | #define NUMA_NO_PREFERRED_NODE ((DWORD) -1) | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 | #endif |