minwinbase.h (11233B) - Raw
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