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