| #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 >= NTDDI_WIN10_RS3 | |
| typedef enum _READ_DIRECTORY_NOTIFY_INFORMATION_CLASS { | |
| ReadDirectoryNotifyInformation = 1, | |
| ReadDirectoryNotifyExtendedInformation = 2 | |
| #if NTDDI_VERSION >= NTDDI_WIN10_NI | |
| ,ReadDirectoryNotifyFullInformation | |
| #endif | |
| ,ReadDirectoryNotifyMaximumInformation | |
| } READ_DIRECTORY_NOTIFY_INFORMATION_CLASS, *PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS; | |
| #endif | |
| #endif /* _WIN32_WINNT >= 0x0400 */ | |
| 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 NTDDI_VERSION >= 0x0A000002 | |
| FileDispositionInfoEx, | |
| FileRenameInfoEx, | |
| #endif | |
| #if NTDDI_VERSION >= 0x0A000007 | |
| FileCaseSensitiveInfo, | |
| FileNormalizedNameInfo, | |
| #endif | |
| MaximumFileInfoByHandleClass | |
| } FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS; | |
| #endif | |
| #if NTDDI_VERSION >= NTDDI_WIN11_ZN | |
| typedef enum _FILE_INFO_BY_NAME_CLASS { | |
| FileStatByNameInfo, | |
| FileStatLxByNameInfo, | |
| FileCaseSensitiveByNameInfo, | |
| FileStatBasicByNameInfo, | |
| MaximumFileInfoByNameClass | |
| } FILE_INFO_BY_NAME_CLASS, *PFILE_INFO_BY_NAME_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 |