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