source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/minwinbase.h@ 1194

Last change on this file since 1194 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 10.5 KB
Line 
1#ifndef _MINWINBASE_
2#define _MINWINBASE_
3
4#ifdef __cplusplus
5extern "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
Note: See TracBrowser for help on using the repository browser.