move from branch
[reactos.git] / reactos / 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 #ifndef FIELD_OFFSET
25 #define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld))
26 #endif
27
28 #define IsConsoleHandle(h) \
29 (((((ULONG)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
30
31 #define HANDLE_DETACHED_PROCESS (HANDLE)-2
32 #define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
33 #define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
34
35 /* Undocumented CreateProcess flag */
36 #define STARTF_SHELLPRIVATE 0x400
37
38 #define SetLastErrorByStatus(__S__) \
39 ((void)SetLastError(RtlNtStatusToDosError(__S__)))
40
41 typedef
42 DWORD
43 (*WaitForInputIdleType)(
44 HANDLE hProcess,
45 DWORD dwMilliseconds);
46
47 /* GLOBAL VARIABLES **********************************************************/
48
49 extern BOOL bIsFileApiAnsi;
50 extern HANDLE hProcessHeap;
51 extern HANDLE hBaseDir;
52 extern HMODULE hCurrentModule;
53
54 extern RTL_CRITICAL_SECTION DllLock;
55
56 extern UNICODE_STRING DllDirectory;
57
58 extern LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter;
59
60 /* FUNCTION PROTOTYPES *******************************************************/
61
62 BOOL STDCALL VerifyConsoleIoHandle(HANDLE Handle);
63
64 BOOL STDCALL CloseConsoleHandle(HANDLE Handle);
65
66 HANDLE STDCALL
67 GetConsoleInputWaitHandle (VOID);
68
69 HANDLE STDCALL OpenConsoleW (LPWSTR wsName,
70 DWORD dwDesiredAccess,
71 BOOL bInheritHandle,
72 DWORD dwCreationDistribution);
73
74 PTEB GetTeb(VOID);
75
76 PWCHAR FilenameA2W(LPCSTR NameA, BOOL alloc);
77
78 DWORD FilenameW2A_FitOrFail(LPSTR DestA, INT destLen, LPCWSTR SourceW, INT sourceLen);
79 DWORD FilenameU2A_FitOrFail(LPSTR DestA, INT destLen, PUNICODE_STRING SourceU);
80
81 #define HeapAlloc RtlAllocateHeap
82 #define HeapReAlloc RtlReAllocateHeap
83 #define HeapFree RtlFreeHeap
84
85 POBJECT_ATTRIBUTES
86 STDCALL
87 BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
88 IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL,
89 IN PUNICODE_STRING ObjectName);
90
91 NTSTATUS
92 STDCALL
93 BasepCreateStack(HANDLE hProcess,
94 ULONG StackReserve,
95 ULONG StackCommit,
96 PINITIAL_TEB InitialTeb);
97
98 VOID
99 STDCALL
100 BasepInitializeContext(IN PCONTEXT Context,
101 IN PVOID Parameter,
102 IN PVOID StartAddress,
103 IN PVOID StackAddress,
104 IN ULONG ContextType);
105
106 VOID
107 STDCALL
108 BaseThreadStartupThunk(VOID);
109
110 VOID
111 STDCALL
112 BaseProcessStartThunk(VOID);
113
114 __declspec(noreturn)
115 VOID
116 STDCALL
117 BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress,
118 LPVOID lpParameter);
119
120 VOID
121 STDCALL
122 BasepFreeStack(HANDLE hProcess,
123 PINITIAL_TEB InitialTeb);
124
125 __declspec(noreturn)
126 VOID
127 WINAPI
128 BaseFiberStartup(VOID);
129
130 typedef UINT (STDCALL *PPROCESS_START_ROUTINE)(VOID);
131
132 VOID
133 STDCALL
134 BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress);
135
136 BOOLEAN
137 STDCALL
138 BasepCheckRealTimePrivilege(VOID);
139
140 VOID
141 STDCALL
142 BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString,
143 OUT LPWSTR* UnicodeString);
144
145 PUNICODE_STRING
146 STDCALL
147 Basep8BitStringToCachedUnicodeString(IN LPCSTR String);
148
149 NTSTATUS
150 STDCALL
151 Basep8BitStringToLiveUnicodeString(OUT PUNICODE_STRING UnicodeString,
152 IN LPCSTR String);
153
154 NTSTATUS
155 STDCALL
156 Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString,
157 IN LPCSTR String);
158
159 typedef NTSTATUS (NTAPI *PRTL_CONVERT_STRING)(IN PUNICODE_STRING UnicodeString,
160 IN PANSI_STRING AnsiString,
161 IN BOOLEAN AllocateMemory);
162
163 extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString;
164
165 NTSTATUS
166 STDCALL
167 BasepMapFile(IN LPCWSTR lpApplicationName,
168 OUT PHANDLE hSection,
169 IN PUNICODE_STRING ApplicationName);
170
171 #endif /* ndef _KERNEL32_INCLUDE_KERNEL32_H */
172