minwinbase.h 10 KB

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