| 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 >= 0x0A000004 |
| 124 |
typedef enum _READ_DIRECTORY_NOTIFY_INFORMATION_CLASS { |
| 125 |
ReadDirectoryNotifyInformation = 1, |
| 126 |
ReadDirectoryNotifyExtendedInformation = 2 |
| 127 |
} READ_DIRECTORY_NOTIFY_INFORMATION_CLASS, *PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS; |
| 128 |
#endif |
| 129 |
#endif |
| 130 |
|
| 131 |
typedef enum _GET_FILEEX_INFO_LEVELS { |
| 132 |
GetFileExInfoStandard, |
| 133 |
GetFileExMaxInfoLevel |
| 134 |
} GET_FILEEX_INFO_LEVELS; |
| 135 |
|
| 136 |
#if _WIN32_WINNT >= 0x0600 |
| 137 |
typedef enum _FILE_INFO_BY_HANDLE_CLASS { |
| 138 |
FileBasicInfo /* is zero? */, |
| 139 |
FileStandardInfo, |
| 140 |
FileNameInfo, |
| 141 |
FileRenameInfo, |
| 142 |
FileDispositionInfo, |
| 143 |
FileAllocationInfo, |
| 144 |
FileEndOfFileInfo, |
| 145 |
FileStreamInfo, |
| 146 |
FileCompressionInfo, |
| 147 |
FileAttributeTagInfo, |
| 148 |
FileIdBothDirectoryInfo, |
| 149 |
FileIdBothDirectoryRestartInfo, |
| 150 |
FileIoPriorityHintInfo, |
| 151 |
FileRemoteProtocolInfo, |
| 152 |
FileFullDirectoryInfo, |
| 153 |
FileFullDirectoryRestartInfo, |
| 154 |
#if _WIN32_WINNT >= 0x0602 |
| 155 |
FileStorageInfo, |
| 156 |
FileAlignmentInfo, |
| 157 |
FileIdInfo, |
| 158 |
FileIdExtdDirectoryInfo, |
| 159 |
FileIdExtdDirectoryRestartInfo, |
| 160 |
#endif |
| 161 |
#if _WIN32_WINNT >= 0x0A000002 |
| 162 |
FileDispositionInfoEx, |
| 163 |
FileRenameInfoEx, |
| 164 |
#endif |
| 165 |
FileCaseSensitiveInfo, |
| 166 |
FileNormalizedNameInfo, |
| 167 |
MaximumFileInfoByHandleClass |
| 168 |
} FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS; |
| 169 |
#endif |
| 170 |
|
| 171 |
typedef RTL_CRITICAL_SECTION CRITICAL_SECTION; |
| 172 |
typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION; |
| 173 |
typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION; |
| 174 |
typedef RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG; |
| 175 |
typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG; |
| 176 |
typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG; |
| 177 |
|
| 178 |
typedef VOID (WINAPI *LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped); |
| 179 |
|
| 180 |
#define LOCKFILE_FAIL_IMMEDIATELY 0x1 |
| 181 |
#define LOCKFILE_EXCLUSIVE_LOCK 0x2 |
| 182 |
|
| 183 |
typedef struct _PROCESS_HEAP_ENTRY { |
| 184 |
PVOID lpData; |
| 185 |
DWORD cbData; |
| 186 |
BYTE cbOverhead; |
| 187 |
BYTE iRegionIndex; |
| 188 |
WORD wFlags; |
| 189 |
__C89_NAMELESS union { |
| 190 |
struct { |
| 191 |
HANDLE hMem; |
| 192 |
DWORD dwReserved[3]; |
| 193 |
} Block; |
| 194 |
struct { |
| 195 |
DWORD dwCommittedSize; |
| 196 |
DWORD dwUnCommittedSize; |
| 197 |
LPVOID lpFirstBlock; |
| 198 |
LPVOID lpLastBlock; |
| 199 |
} Region; |
| 200 |
} DUMMYUNIONNAME; |
| 201 |
} PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY,*PPROCESS_HEAP_ENTRY; |
| 202 |
|
| 203 |
#define PROCESS_HEAP_REGION 0x1 |
| 204 |
#define PROCESS_HEAP_UNCOMMITTED_RANGE 0x2 |
| 205 |
#define PROCESS_HEAP_ENTRY_BUSY 0x4 |
| 206 |
#define PROCESS_HEAP_SEG_ALLOC 0x8 |
| 207 |
#define PROCESS_HEAP_ENTRY_MOVEABLE 0x10 |
| 208 |
#define PROCESS_HEAP_ENTRY_DDESHARE 0x20 |
| 209 |
|
| 210 |
typedef struct _REASON_CONTEXT { |
| 211 |
ULONG Version; |
| 212 |
DWORD Flags; |
| 213 |
union { |
| 214 |
struct { |
| 215 |
HMODULE LocalizedReasonModule; |
| 216 |
ULONG LocalizedReasonId; |
| 217 |
ULONG ReasonStringCount; |
| 218 |
LPWSTR *ReasonStrings; |
| 219 |
} Detailed; |
| 220 |
LPWSTR SimpleReasonString; |
| 221 |
} Reason; |
| 222 |
} REASON_CONTEXT, *PREASON_CONTEXT; |
| 223 |
|
| 224 |
#define EXCEPTION_DEBUG_EVENT 1 |
| 225 |
#define CREATE_THREAD_DEBUG_EVENT 2 |
| 226 |
#define CREATE_PROCESS_DEBUG_EVENT 3 |
| 227 |
#define EXIT_THREAD_DEBUG_EVENT 4 |
| 228 |
#define EXIT_PROCESS_DEBUG_EVENT 5 |
| 229 |
#define LOAD_DLL_DEBUG_EVENT 6 |
| 230 |
#define UNLOAD_DLL_DEBUG_EVENT 7 |
| 231 |
#define OUTPUT_DEBUG_STRING_EVENT 8 |
| 232 |
#define RIP_EVENT 9 |
| 233 |
|
| 234 |
typedef DWORD (WINAPI *PTHREAD_START_ROUTINE) (LPVOID lpThreadParameter); |
| 235 |
typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE; |
| 236 |
|
| 237 |
typedef LPVOID (WINAPI *PENCLAVE_ROUTINE) (LPVOID lpThreadParameter); |
| 238 |
typedef PENCLAVE_ROUTINE LPENCLAVE_ROUTINE; |
| 239 |
|
| 240 |
typedef struct _EXCEPTION_DEBUG_INFO { |
| 241 |
EXCEPTION_RECORD ExceptionRecord; |
| 242 |
DWORD dwFirstChance; |
| 243 |
} EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO; |
| 244 |
|
| 245 |
typedef struct _CREATE_THREAD_DEBUG_INFO { |
| 246 |
HANDLE hThread; |
| 247 |
LPVOID lpThreadLocalBase; |
| 248 |
LPTHREAD_START_ROUTINE lpStartAddress; |
| 249 |
} CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO; |
| 250 |
|
| 251 |
typedef struct _CREATE_PROCESS_DEBUG_INFO { |
| 252 |
HANDLE hFile; |
| 253 |
HANDLE hProcess; |
| 254 |
HANDLE hThread; |
| 255 |
LPVOID lpBaseOfImage; |
| 256 |
DWORD dwDebugInfoFileOffset; |
| 257 |
DWORD nDebugInfoSize; |
| 258 |
LPVOID lpThreadLocalBase; |
| 259 |
LPTHREAD_START_ROUTINE lpStartAddress; |
| 260 |
LPVOID lpImageName; |
| 261 |
WORD fUnicode; |
| 262 |
} CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO; |
| 263 |
|
| 264 |
typedef struct _EXIT_THREAD_DEBUG_INFO { |
| 265 |
DWORD dwExitCode; |
| 266 |
} EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO; |
| 267 |
|
| 268 |
typedef struct _EXIT_PROCESS_DEBUG_INFO { |
| 269 |
DWORD dwExitCode; |
| 270 |
} EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO; |
| 271 |
|
| 272 |
typedef struct _LOAD_DLL_DEBUG_INFO { |
| 273 |
HANDLE hFile; |
| 274 |
LPVOID lpBaseOfDll; |
| 275 |
DWORD dwDebugInfoFileOffset; |
| 276 |
DWORD nDebugInfoSize; |
| 277 |
LPVOID lpImageName; |
| 278 |
WORD fUnicode; |
| 279 |
} LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO; |
| 280 |
|
| 281 |
typedef struct _UNLOAD_DLL_DEBUG_INFO { |
| 282 |
LPVOID lpBaseOfDll; |
| 283 |
} UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO; |
| 284 |
|
| 285 |
typedef struct _OUTPUT_DEBUG_STRING_INFO { |
| 286 |
LPSTR lpDebugStringData; |
| 287 |
WORD fUnicode; |
| 288 |
WORD nDebugStringLength; |
| 289 |
} OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO; |
| 290 |
|
| 291 |
typedef struct _RIP_INFO { |
| 292 |
DWORD dwError; |
| 293 |
DWORD dwType; |
| 294 |
} RIP_INFO, *LPRIP_INFO; |
| 295 |
|
| 296 |
typedef struct _DEBUG_EVENT { |
| 297 |
DWORD dwDebugEventCode; |
| 298 |
DWORD dwProcessId; |
| 299 |
DWORD dwThreadId; |
| 300 |
union { |
| 301 |
EXCEPTION_DEBUG_INFO Exception; |
| 302 |
CREATE_THREAD_DEBUG_INFO CreateThread; |
| 303 |
CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; |
| 304 |
EXIT_THREAD_DEBUG_INFO ExitThread; |
| 305 |
EXIT_PROCESS_DEBUG_INFO ExitProcess; |
| 306 |
LOAD_DLL_DEBUG_INFO LoadDll; |
| 307 |
UNLOAD_DLL_DEBUG_INFO UnloadDll; |
| 308 |
OUTPUT_DEBUG_STRING_INFO DebugString; |
| 309 |
RIP_INFO RipInfo; |
| 310 |
} u; |
| 311 |
} DEBUG_EVENT, *LPDEBUG_EVENT; |
| 312 |
|
| 313 |
#ifndef __WIDL__ |
| 314 |
typedef PCONTEXT LPCONTEXT; |
| 315 |
#endif |
| 316 |
|
| 317 |
#define STILL_ACTIVE STATUS_PENDING |
| 318 |
#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION |
| 319 |
#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT |
| 320 |
#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT |
| 321 |
#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP |
| 322 |
#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED |
| 323 |
#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND |
| 324 |
#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO |
| 325 |
#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT |
| 326 |
#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION |
| 327 |
#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW |
| 328 |
#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK |
| 329 |
#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW |
| 330 |
#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO |
| 331 |
#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW |
| 332 |
#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION |
| 333 |
#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR |
| 334 |
#define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION |
| 335 |
#define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION |
| 336 |
#define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW |
| 337 |
#define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION |
| 338 |
#define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION |
| 339 |
#define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE |
| 340 |
#define EXCEPTION_POSSIBLE_DEADLOCK STATUS_POSSIBLE_DEADLOCK |
| 341 |
#define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT |
| 342 |
|
| 343 |
#define LMEM_FIXED 0x0 |
| 344 |
#define LMEM_MOVEABLE 0x2 |
| 345 |
#define LMEM_NOCOMPACT 0x10 |
| 346 |
#define LMEM_NODISCARD 0x20 |
| 347 |
#define LMEM_ZEROINIT 0x40 |
| 348 |
#define LMEM_MODIFY 0x80 |
| 349 |
#define LMEM_DISCARDABLE 0xf00 |
| 350 |
#define LMEM_VALID_FLAGS 0xf72 |
| 351 |
#define LMEM_INVALID_HANDLE 0x8000 |
| 352 |
|
| 353 |
#define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT) |
| 354 |
#define LPTR (LMEM_FIXED | LMEM_ZEROINIT) |
| 355 |
|
| 356 |
#define NONZEROLHND (LMEM_MOVEABLE) |
| 357 |
#define NONZEROLPTR (LMEM_FIXED) |
| 358 |
|
| 359 |
#define LocalDiscard(h) LocalReAlloc ((h), 0, LMEM_MOVEABLE) |
| 360 |
|
| 361 |
#define LMEM_DISCARDED 0x4000 |
| 362 |
#define LMEM_LOCKCOUNT 0xff |
| 363 |
|
| 364 |
#define NUMA_NO_PREFERRED_NODE ((DWORD) -1) |
| 365 |
|
| 366 |
#ifdef __cplusplus |
| 367 |
} |
| 368 |
#endif |
| 369 |
#endif |