| 1 | #ifndef _MINWINBASE_ |
| 2 | #define _MINWINBASE_ |
| 3 | |
| 4 | #ifdef __cplusplus |
| 5 | extern "C" { |
| 6 | #endif |
| 7 | |
| 8 | #define MoveMemory RtlMoveMemory |
| 9 | #define CopyMemory RtlCopyMemory |
| 10 | #define FillMemory RtlFillMemory |
| 11 | #define ZeroMemory RtlZeroMemory |
| 12 | |
| 13 | typedef struct _SECURITY_ATTRIBUTES { |
| 14 | DWORD nLength; |
| 15 | LPVOID lpSecurityDescriptor; |
| 16 | WINBOOL bInheritHandle; |
| 17 | } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; |
| 18 | |
| 19 | typedef struct _OVERLAPPED { |
| 20 | ULONG_PTR Internal; |
| 21 | ULONG_PTR InternalHigh; |
| 22 | __C89_NAMELESS union { |
| 23 | struct { |
| 24 | DWORD Offset; |
| 25 | DWORD OffsetHigh; |
| 26 | } DUMMYSTRUCTNAME; |
| 27 | PVOID Pointer; |
| 28 | } DUMMYUNIONNAME; |
| 29 | HANDLE hEvent; |
| 30 | } OVERLAPPED, *LPOVERLAPPED; |
| 31 | |
| 32 | typedef struct _OVERLAPPED_ENTRY { |
| 33 | ULONG_PTR lpCompletionKey; |
| 34 | LPOVERLAPPED lpOverlapped; |
| 35 | ULONG_PTR Internal; |
| 36 | DWORD dwNumberOfBytesTransferred; |
| 37 | } OVERLAPPED_ENTRY, *LPOVERLAPPED_ENTRY; |
| 38 | |
| 39 | #ifndef _FILETIME_ |
| 40 | #define _FILETIME_ |
| 41 | typedef struct _FILETIME { |
| 42 | DWORD dwLowDateTime; |
| 43 | DWORD dwHighDateTime; |
| 44 | } FILETIME,*PFILETIME,*LPFILETIME; |
| 45 | #endif |
| 46 | |
| 47 | #ifndef _SYSTEMTIME_ |
| 48 | #define _SYSTEMTIME_ |
| 49 | typedef struct _SYSTEMTIME { |
| 50 | WORD wYear; |
| 51 | WORD wMonth; |
| 52 | WORD wDayOfWeek; |
| 53 | WORD wDay; |
| 54 | WORD wHour; |
| 55 | WORD wMinute; |
| 56 | WORD wSecond; |
| 57 | WORD wMilliseconds; |
| 58 | } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME; |
| 59 | #endif |
| 60 | |
| 61 | typedef struct _WIN32_FIND_DATAA { |
| 62 | DWORD dwFileAttributes; |
| 63 | FILETIME ftCreationTime; |
| 64 | FILETIME ftLastAccessTime; |
| 65 | FILETIME ftLastWriteTime; |
| 66 | DWORD nFileSizeHigh; |
| 67 | DWORD nFileSizeLow; |
| 68 | DWORD dwReserved0; |
| 69 | DWORD dwReserved1; |
| 70 | CHAR cFileName[MAX_PATH]; |
| 71 | CHAR cAlternateFileName[14]; |
| 72 | #ifdef _MAC |
| 73 | DWORD dwFileType; |
| 74 | DWORD dwCreatorType; |
| 75 | WORD wFinderFlags; |
| 76 | #endif |
| 77 | } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA; |
| 78 | |
| 79 | typedef struct _WIN32_FIND_DATAW { |
| 80 | DWORD dwFileAttributes; |
| 81 | FILETIME ftCreationTime; |
| 82 | FILETIME ftLastAccessTime; |
| 83 | FILETIME ftLastWriteTime; |
| 84 | DWORD nFileSizeHigh; |
| 85 | DWORD nFileSizeLow; |
| 86 | DWORD dwReserved0; |
| 87 | DWORD dwReserved1; |
| 88 | WCHAR cFileName[MAX_PATH]; |
| 89 | WCHAR cAlternateFileName[14]; |
| 90 | #ifdef _MAC |
| 91 | DWORD dwFileType; |
| 92 | DWORD dwCreatorType; |
| 93 | WORD wFinderFlags; |
| 94 | #endif |
| 95 | } WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW; |
| 96 | |
| 97 | __MINGW_TYPEDEF_AW(WIN32_FIND_DATA) |
| 98 | __MINGW_TYPEDEF_AW(PWIN32_FIND_DATA) |
| 99 | __MINGW_TYPEDEF_AW(LPWIN32_FIND_DATA) |
| 100 | |
| 101 | #if _WIN32_WINNT >= 0x0400 |
| 102 | typedef enum _FINDEX_INFO_LEVELS { |
| 103 | FindExInfoStandard, |
| 104 | FindExInfoBasic, |
| 105 | FindExInfoMaxInfoLevel |
| 106 | } FINDEX_INFO_LEVELS; |
| 107 | |
| 108 | #define FIND_FIRST_EX_CASE_SENSITIVE 0x00000001 |
| 109 | #define FIND_FIRST_EX_LARGE_FETCH 0x00000002 |
| 110 | #if NTDDI_VERSION >= 0x0A000005 |
| 111 | #define FIND_FIRST_EX_ON_DISK_ENTRIES_ONLY 0x00000004 |
| 112 | #endif |
| 113 | |
| 114 | typedef enum _FINDEX_SEARCH_OPS { |
| 115 | FindExSearchNameMatch, |
| 116 | FindExSearchLimitToDirectories, |
| 117 | FindExSearchLimitToDevices, |
| 118 | FindExSearchMaxSearchOp |
| 119 | } FINDEX_SEARCH_OPS; |
| 120 | #endif |
| 121 | |
| 122 | #if _WIN32_WINNT >= 0x0400 |
| 123 | #if NTDDI_VERSION >= NTDDI_WIN10_RS3 |
| 124 | typedef enum _READ_DIRECTORY_NOTIFY_INFORMATION_CLASS { |
| 125 | ReadDirectoryNotifyInformation = 1, |
| 126 | ReadDirectoryNotifyExtendedInformation = 2 |
| 127 | #if NTDDI_VERSION >= NTDDI_WIN10_NI |
| 128 | ,ReadDirectoryNotifyFullInformation |
| 129 | #endif |
| 130 | ,ReadDirectoryNotifyMaximumInformation |
| 131 | } READ_DIRECTORY_NOTIFY_INFORMATION_CLASS, *PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS; |
| 132 | #endif |
| 133 | #endif /* _WIN32_WINNT >= 0x0400 */ |
| 134 | |
| 135 | typedef enum _GET_FILEEX_INFO_LEVELS { |
| 136 | GetFileExInfoStandard, |
| 137 | GetFileExMaxInfoLevel |
| 138 | } GET_FILEEX_INFO_LEVELS; |
| 139 | |
| 140 | #if _WIN32_WINNT >= 0x0600 |
| 141 | typedef enum _FILE_INFO_BY_HANDLE_CLASS { |
| 142 | FileBasicInfo /* is zero? */, |
| 143 | FileStandardInfo, |
| 144 | FileNameInfo, |
| 145 | FileRenameInfo, |
| 146 | FileDispositionInfo, |
| 147 | FileAllocationInfo, |
| 148 | FileEndOfFileInfo, |
| 149 | FileStreamInfo, |
| 150 | FileCompressionInfo, |
| 151 | FileAttributeTagInfo, |
| 152 | FileIdBothDirectoryInfo, |
| 153 | FileIdBothDirectoryRestartInfo, |
| 154 | FileIoPriorityHintInfo, |
| 155 | FileRemoteProtocolInfo, |
| 156 | FileFullDirectoryInfo, |
| 157 | FileFullDirectoryRestartInfo, |
| 158 | #if _WIN32_WINNT >= 0x0602 |
| 159 | FileStorageInfo, |
| 160 | FileAlignmentInfo, |
| 161 | FileIdInfo, |
| 162 | FileIdExtdDirectoryInfo, |
| 163 | FileIdExtdDirectoryRestartInfo, |
| 164 | #endif |
| 165 | #if NTDDI_VERSION >= 0x0A000002 |
| 166 | FileDispositionInfoEx, |
| 167 | FileRenameInfoEx, |
| 168 | #endif |
| 169 | #if NTDDI_VERSION >= 0x0A000007 |
| 170 | FileCaseSensitiveInfo, |
| 171 | FileNormalizedNameInfo, |
| 172 | #endif |
| 173 | MaximumFileInfoByHandleClass |
| 174 | } FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS; |
| 175 | #endif |
| 176 | |
| 177 | #if NTDDI_VERSION >= NTDDI_WIN11_ZN |
| 178 | typedef enum _FILE_INFO_BY_NAME_CLASS { |
| 179 | FileStatByNameInfo, |
| 180 | FileStatLxByNameInfo, |
| 181 | FileCaseSensitiveByNameInfo, |
| 182 | FileStatBasicByNameInfo, |
| 183 | MaximumFileInfoByNameClass |
| 184 | } FILE_INFO_BY_NAME_CLASS, *PFILE_INFO_BY_NAME_CLASS; |
| 185 | #endif |
| 186 | |
| 187 | typedef RTL_CRITICAL_SECTION CRITICAL_SECTION; |
| 188 | typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION; |
| 189 | typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION; |
| 190 | typedef RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG; |
| 191 | typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG; |
| 192 | typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG; |
| 193 | |
| 194 | typedef VOID (WINAPI *LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped); |
| 195 | |
| 196 | #define LOCKFILE_FAIL_IMMEDIATELY 0x1 |
| 197 | #define LOCKFILE_EXCLUSIVE_LOCK 0x2 |
| 198 | |
| 199 | typedef struct _PROCESS_HEAP_ENTRY { |
| 200 | PVOID lpData; |
| 201 | DWORD cbData; |
| 202 | BYTE cbOverhead; |
| 203 | BYTE iRegionIndex; |
| 204 | WORD wFlags; |
| 205 | __C89_NAMELESS union { |
| 206 | struct { |
| 207 | HANDLE hMem; |
| 208 | DWORD dwReserved[3]; |
| 209 | } Block; |
| 210 | struct { |
| 211 | DWORD dwCommittedSize; |
| 212 | DWORD dwUnCommittedSize; |
| 213 | LPVOID lpFirstBlock; |
| 214 | LPVOID lpLastBlock; |
| 215 | } Region; |
| 216 | } DUMMYUNIONNAME; |
| 217 | } PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY,*PPROCESS_HEAP_ENTRY; |
| 218 | |
| 219 | #define PROCESS_HEAP_REGION 0x1 |
| 220 | #define PROCESS_HEAP_UNCOMMITTED_RANGE 0x2 |
| 221 | #define PROCESS_HEAP_ENTRY_BUSY 0x4 |
| 222 | #define PROCESS_HEAP_SEG_ALLOC 0x8 |
| 223 | #define PROCESS_HEAP_ENTRY_MOVEABLE 0x10 |
| 224 | #define PROCESS_HEAP_ENTRY_DDESHARE 0x20 |
| 225 | |
| 226 | typedef struct _REASON_CONTEXT { |
| 227 | ULONG Version; |
| 228 | DWORD Flags; |
| 229 | union { |
| 230 | struct { |
| 231 | HMODULE LocalizedReasonModule; |
| 232 | ULONG LocalizedReasonId; |
| 233 | ULONG ReasonStringCount; |
| 234 | LPWSTR *ReasonStrings; |
| 235 | } Detailed; |
| 236 | LPWSTR SimpleReasonString; |
| 237 | } Reason; |
| 238 | } REASON_CONTEXT, *PREASON_CONTEXT; |
| 239 | |
| 240 | #define EXCEPTION_DEBUG_EVENT 1 |
| 241 | #define CREATE_THREAD_DEBUG_EVENT 2 |
| 242 | #define CREATE_PROCESS_DEBUG_EVENT 3 |
| 243 | #define EXIT_THREAD_DEBUG_EVENT 4 |
| 244 | #define EXIT_PROCESS_DEBUG_EVENT 5 |
| 245 | #define LOAD_DLL_DEBUG_EVENT 6 |
| 246 | #define UNLOAD_DLL_DEBUG_EVENT 7 |
| 247 | #define OUTPUT_DEBUG_STRING_EVENT 8 |
| 248 | #define RIP_EVENT 9 |
| 249 | |
| 250 | typedef DWORD (WINAPI *PTHREAD_START_ROUTINE) (LPVOID lpThreadParameter); |
| 251 | typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE; |
| 252 | |
| 253 | typedef LPVOID (WINAPI *PENCLAVE_ROUTINE) (LPVOID lpThreadParameter); |
| 254 | typedef PENCLAVE_ROUTINE LPENCLAVE_ROUTINE; |
| 255 | |
| 256 | typedef struct _EXCEPTION_DEBUG_INFO { |
| 257 | EXCEPTION_RECORD ExceptionRecord; |
| 258 | DWORD dwFirstChance; |
| 259 | } EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO; |
| 260 | |
| 261 | typedef struct _CREATE_THREAD_DEBUG_INFO { |
| 262 | HANDLE hThread; |
| 263 | LPVOID lpThreadLocalBase; |
| 264 | LPTHREAD_START_ROUTINE lpStartAddress; |
| 265 | } CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO; |
| 266 | |
| 267 | typedef struct _CREATE_PROCESS_DEBUG_INFO { |
| 268 | HANDLE hFile; |
| 269 | HANDLE hProcess; |
| 270 | HANDLE hThread; |
| 271 | LPVOID lpBaseOfImage; |
| 272 | DWORD dwDebugInfoFileOffset; |
| 273 | DWORD nDebugInfoSize; |
| 274 | LPVOID lpThreadLocalBase; |
| 275 | LPTHREAD_START_ROUTINE lpStartAddress; |
| 276 | LPVOID lpImageName; |
| 277 | WORD fUnicode; |
| 278 | } CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO; |
| 279 | |
| 280 | typedef struct _EXIT_THREAD_DEBUG_INFO { |
| 281 | DWORD dwExitCode; |
| 282 | } EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO; |
| 283 | |
| 284 | typedef struct _EXIT_PROCESS_DEBUG_INFO { |
| 285 | DWORD dwExitCode; |
| 286 | } EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO; |
| 287 | |
| 288 | typedef struct _LOAD_DLL_DEBUG_INFO { |
| 289 | HANDLE hFile; |
| 290 | LPVOID lpBaseOfDll; |
| 291 | DWORD dwDebugInfoFileOffset; |
| 292 | DWORD nDebugInfoSize; |
| 293 | LPVOID lpImageName; |
| 294 | WORD fUnicode; |
| 295 | } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO; |
| 296 | |
| 297 | typedef struct _UNLOAD_DLL_DEBUG_INFO { |
| 298 | LPVOID lpBaseOfDll; |
| 299 | } UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO; |
| 300 | |
| 301 | typedef struct _OUTPUT_DEBUG_STRING_INFO { |
| 302 | LPSTR lpDebugStringData; |
| 303 | WORD fUnicode; |
| 304 | WORD nDebugStringLength; |
| 305 | } OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO; |
| 306 | |
| 307 | typedef struct _RIP_INFO { |
| 308 | DWORD dwError; |
| 309 | DWORD dwType; |
| 310 | } RIP_INFO, *LPRIP_INFO; |
| 311 | |
| 312 | typedef struct _DEBUG_EVENT { |
| 313 | DWORD dwDebugEventCode; |
| 314 | DWORD dwProcessId; |
| 315 | DWORD dwThreadId; |
| 316 | union { |
| 317 | EXCEPTION_DEBUG_INFO Exception; |
| 318 | CREATE_THREAD_DEBUG_INFO CreateThread; |
| 319 | CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; |
| 320 | EXIT_THREAD_DEBUG_INFO ExitThread; |
| 321 | EXIT_PROCESS_DEBUG_INFO ExitProcess; |
| 322 | LOAD_DLL_DEBUG_INFO LoadDll; |
| 323 | UNLOAD_DLL_DEBUG_INFO UnloadDll; |
| 324 | OUTPUT_DEBUG_STRING_INFO DebugString; |
| 325 | RIP_INFO RipInfo; |
| 326 | } u; |
| 327 | } DEBUG_EVENT, *LPDEBUG_EVENT; |
| 328 | |
| 329 | #ifndef __WIDL__ |
| 330 | typedef PCONTEXT LPCONTEXT; |
| 331 | #endif |
| 332 | |
| 333 | #define STILL_ACTIVE STATUS_PENDING |
| 334 | #define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION |
| 335 | #define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT |
| 336 | #define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT |
| 337 | #define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP |
| 338 | #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED |
| 339 | #define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND |
| 340 | #define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO |
| 341 | #define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT |
| 342 | #define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION |
| 343 | #define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW |
| 344 | #define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK |
| 345 | #define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW |
| 346 | #define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO |
| 347 | #define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW |
| 348 | #define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION |
| 349 | #define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR |
| 350 | #define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION |
| 351 | #define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION |
| 352 | #define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW |
| 353 | #define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION |
| 354 | #define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION |
| 355 | #define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE |
| 356 | #define EXCEPTION_POSSIBLE_DEADLOCK STATUS_POSSIBLE_DEADLOCK |
| 357 | #define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT |
| 358 | |
| 359 | #define LMEM_FIXED 0x0 |
| 360 | #define LMEM_MOVEABLE 0x2 |
| 361 | #define LMEM_NOCOMPACT 0x10 |
| 362 | #define LMEM_NODISCARD 0x20 |
| 363 | #define LMEM_ZEROINIT 0x40 |
| 364 | #define LMEM_MODIFY 0x80 |
| 365 | #define LMEM_DISCARDABLE 0xf00 |
| 366 | #define LMEM_VALID_FLAGS 0xf72 |
| 367 | #define LMEM_INVALID_HANDLE 0x8000 |
| 368 | |
| 369 | #define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT) |
| 370 | #define LPTR (LMEM_FIXED | LMEM_ZEROINIT) |
| 371 | |
| 372 | #define NONZEROLHND (LMEM_MOVEABLE) |
| 373 | #define NONZEROLPTR (LMEM_FIXED) |
| 374 | |
| 375 | #define LocalDiscard(h) LocalReAlloc ((h), 0, LMEM_MOVEABLE) |
| 376 | |
| 377 | #define LMEM_DISCARDED 0x4000 |
| 378 | #define LMEM_LOCKCOUNT 0xff |
| 379 | |
| 380 | #define NUMA_NO_PREFERRED_NODE ((DWORD) -1) |
| 381 | |
| 382 | #ifdef __cplusplus |
| 383 | } |
| 384 | #endif |
| 385 | #endif |