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