[CMAKE]
[reactos.git] / dll / win32 / kernel32 / include / kernel32.h
1 #pragma once
2
3 //
4 // Kernel32 Filter IDs
5 //
6 #define kernel32file 200
7 #define kernel32ver 201
8 #define actctx 202
9 #define resource 203
10 #define kernel32session 204
11
12
13 #if DBG
14 #define DEBUG_CHANNEL(ch) static ULONG gDebugChannel = ch;
15 #else
16 #define DEBUG_CHANNEL(ch)
17 #endif
18
19 #define TRACE(fmt, ...) TRACE__(gDebugChannel, fmt, ##__VA_ARGS__)
20 #define WARN(fmt, ...) WARN__(gDebugChannel, fmt, ##__VA_ARGS__)
21 #define FIXME(fmt, ...) WARN__(gDebugChannel, fmt,## __VA_ARGS__)
22 #define ERR(fmt, ...) ERR__(gDebugChannel, fmt, ##__VA_ARGS__)
23
24 #define debugstr_a
25 #define debugstr_w
26 #define wine_dbgstr_w
27 #define debugstr_guid
28
29 #include "wine/unicode.h"
30 #include "baseheap.h"
31
32 #define BINARY_UNKNOWN (0)
33 #define BINARY_PE_EXE32 (1)
34 #define BINARY_PE_DLL32 (2)
35 #define BINARY_PE_EXE64 (3)
36 #define BINARY_PE_DLL64 (4)
37 #define BINARY_WIN16 (5)
38 #define BINARY_OS216 (6)
39 #define BINARY_DOS (7)
40 #define BINARY_UNIX_EXE (8)
41 #define BINARY_UNIX_LIB (9)
42
43 #define MAGIC(c1,c2,c3,c4) ((c1) + ((c2)<<8) + ((c3)<<16) + ((c4)<<24))
44
45 #define MAGIC_HEAP MAGIC( 'H','E','A','P' )
46
47 #define ROUNDUP(a,b) ((((a)+(b)-1)/(b))*(b))
48 #define ROUNDDOWN(a,b) (((a)/(b))*(b))
49
50 #define ROUND_DOWN(n, align) \
51 (((ULONG)n) & ~((align) - 1l))
52
53 #define ROUND_UP(n, align) \
54 ROUND_DOWN(((ULONG)n) + (align) - 1, (align))
55
56 #ifndef FIELD_OFFSET
57 #define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld))
58 #endif
59
60 #define IsConsoleHandle(h) \
61 (((((ULONG_PTR)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
62
63 #define HANDLE_DETACHED_PROCESS (HANDLE)-2
64 #define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
65 #define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
66
67 /* Undocumented CreateProcess flag */
68 #define STARTF_SHELLPRIVATE 0x400
69
70 #define SetLastErrorByStatus(x) RtlSetLastWin32ErrorAndNtStatusFromNtStatus((x))
71
72 typedef struct _CODEPAGE_ENTRY
73 {
74 LIST_ENTRY Entry;
75 UINT CodePage;
76 HANDLE SectionHandle;
77 PBYTE SectionMapping;
78 CPTABLEINFO CodePageTable;
79 } CODEPAGE_ENTRY, *PCODEPAGE_ENTRY;
80
81 typedef
82 DWORD
83 (*WaitForInputIdleType)(
84 HANDLE hProcess,
85 DWORD dwMilliseconds);
86
87 /* GLOBAL VARIABLES **********************************************************/
88
89 extern BOOL bIsFileApiAnsi;
90 extern HANDLE hProcessHeap;
91 extern HANDLE hBaseDir;
92 extern HMODULE hCurrentModule;
93
94 extern RTL_CRITICAL_SECTION BaseDllDirectoryLock;
95
96 extern UNICODE_STRING BaseDllDirectory;
97 extern UNICODE_STRING BaseDefaultPath;
98 extern UNICODE_STRING BaseDefaultPathAppend;
99 extern PLDR_DATA_TABLE_ENTRY BasepExeLdrEntry;
100
101 extern LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter;
102
103 /* FUNCTION PROTOTYPES *******************************************************/
104
105 BOOL WINAPI VerifyConsoleIoHandle(HANDLE Handle);
106
107 BOOL WINAPI CloseConsoleHandle(HANDLE Handle);
108
109 HANDLE WINAPI
110 GetConsoleInputWaitHandle (VOID);
111
112 HANDLE WINAPI OpenConsoleW (LPCWSTR wsName,
113 DWORD dwDesiredAccess,
114 BOOL bInheritHandle,
115 DWORD dwShareMode);
116
117 BOOL WINAPI SetConsoleInputExeNameW(LPCWSTR lpInputExeName);
118
119 PTEB GetTeb(VOID);
120
121 HANDLE FASTCALL TranslateStdHandle(HANDLE hHandle);
122
123 PWCHAR FilenameA2W(LPCSTR NameA, BOOL alloc);
124 DWORD FilenameW2A_N(LPSTR dest, INT destlen, LPCWSTR src, INT srclen);
125
126 DWORD FilenameW2A_FitOrFail(LPSTR DestA, INT destLen, LPCWSTR SourceW, INT sourceLen);
127 DWORD FilenameU2A_FitOrFail(LPSTR DestA, INT destLen, PUNICODE_STRING SourceU);
128
129 #define HeapAlloc RtlAllocateHeap
130 #define HeapReAlloc RtlReAllocateHeap
131 #define HeapFree RtlFreeHeap
132 #define _lread (_readfun)_hread
133
134 POBJECT_ATTRIBUTES
135 WINAPI
136 BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
137 IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL,
138 IN PUNICODE_STRING ObjectName);
139
140 NTSTATUS
141 WINAPI
142 BasepCreateStack(HANDLE hProcess,
143 SIZE_T StackReserve,
144 SIZE_T StackCommit,
145 PINITIAL_TEB InitialTeb);
146
147 VOID
148 WINAPI
149 BasepInitializeContext(IN PCONTEXT Context,
150 IN PVOID Parameter,
151 IN PVOID StartAddress,
152 IN PVOID StackAddress,
153 IN ULONG ContextType);
154
155 VOID
156 WINAPI
157 BaseThreadStartupThunk(VOID);
158
159 VOID
160 WINAPI
161 BaseProcessStartThunk(VOID);
162
163 __declspec(noreturn)
164 VOID
165 WINAPI
166 BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress,
167 LPVOID lpParameter);
168
169 VOID
170 WINAPI
171 BasepFreeStack(HANDLE hProcess,
172 PINITIAL_TEB InitialTeb);
173
174 __declspec(noreturn)
175 VOID
176 WINAPI
177 BaseFiberStartup(VOID);
178
179 typedef UINT (WINAPI *PPROCESS_START_ROUTINE)(VOID);
180
181 VOID
182 WINAPI
183 BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress);
184
185 BOOLEAN
186 WINAPI
187 BasepCheckRealTimePrivilege(VOID);
188
189 VOID
190 WINAPI
191 BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString,
192 OUT LPWSTR* UnicodeString);
193
194 PUNICODE_STRING
195 WINAPI
196 Basep8BitStringToStaticUnicodeString(IN LPCSTR AnsiString);
197
198 BOOLEAN
199 WINAPI
200 Basep8BitStringToDynamicUnicodeString(OUT PUNICODE_STRING UnicodeString,
201 IN LPCSTR String);
202
203 #define BasepUnicodeStringTo8BitString RtlUnicodeStringToAnsiString
204
205 typedef NTSTATUS (NTAPI *PRTL_CONVERT_STRING)(IN PUNICODE_STRING UnicodeString,
206 IN PANSI_STRING AnsiString,
207 IN BOOLEAN AllocateMemory);
208
209 extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString;
210
211 NTSTATUS
212 WINAPI
213 BasepMapFile(IN LPCWSTR lpApplicationName,
214 OUT PHANDLE hSection,
215 IN PUNICODE_STRING ApplicationName);
216
217 LPWSTR
218 WINAPI
219 BasepGetDllPath(LPWSTR FullPath,
220 PVOID Environment);
221
222
223 PCODEPAGE_ENTRY FASTCALL
224 IntGetCodePageEntry(UINT CodePage);
225
226 LPWSTR
227 GetDllLoadPath(LPCWSTR lpModule);
228
229 VOID
230 WINAPI
231 InitCommandLines(VOID);
232
233 VOID
234 WINAPI
235 BaseSetLastNTError(IN NTSTATUS Status);
236
237 /* FIXME */
238 WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);