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