1 #ifndef _KERNEL32_INCLUDE_KERNEL32_H
2 #define _KERNEL32_INCLUDE_KERNEL32_H
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)
17 #define MAGIC(c1,c2,c3,c4) ((c1) + ((c2)<<8) + ((c3)<<16) + ((c4)<<24))
19 #define MAGIC_HEAP MAGIC( 'H','E','A','P' )
21 #define ROUNDUP(a,b) ((((a)+(b)-1)/(b))*(b))
22 #define ROUNDDOWN(a,b) (((a)/(b))*(b))
24 #define ROUND_DOWN(n, align) \
25 (((ULONG)n) & ~((align) - 1l))
27 #define ROUND_UP(n, align) \
28 ROUND_DOWN(((ULONG)n) + (align) - 1, (align))
31 #define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld))
34 #define IsConsoleHandle(h) \
35 (((((ULONG)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
37 #define HANDLE_DETACHED_PROCESS (HANDLE)-2
38 #define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
39 #define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
41 /* Undocumented CreateProcess flag */
42 #define STARTF_SHELLPRIVATE 0x400
44 #define SetLastErrorByStatus(__S__) \
45 ((void)SetLastError(RtlNtStatusToDosError(__S__)))
47 typedef struct _CODEPAGE_ENTRY
53 CPTABLEINFO CodePageTable
;
54 } CODEPAGE_ENTRY
, *PCODEPAGE_ENTRY
;
58 (*WaitForInputIdleType
)(
60 DWORD dwMilliseconds
);
62 /* GLOBAL VARIABLES **********************************************************/
64 extern BOOL bIsFileApiAnsi
;
65 extern HANDLE hProcessHeap
;
66 extern HANDLE hBaseDir
;
67 extern HMODULE hCurrentModule
;
69 extern RTL_CRITICAL_SECTION DllLock
;
71 extern UNICODE_STRING DllDirectory
;
73 extern LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter
;
75 /* FUNCTION PROTOTYPES *******************************************************/
77 BOOL WINAPI
VerifyConsoleIoHandle(HANDLE Handle
);
79 BOOL WINAPI
CloseConsoleHandle(HANDLE Handle
);
82 GetConsoleInputWaitHandle (VOID
);
84 HANDLE WINAPI
OpenConsoleW (LPCWSTR wsName
,
85 DWORD dwDesiredAccess
,
91 HANDLE FASTCALL
TranslateStdHandle(HANDLE hHandle
);
93 PWCHAR
FilenameA2W(LPCSTR NameA
, BOOL alloc
);
94 DWORD
FilenameW2A_N(LPSTR dest
, INT destlen
, LPCWSTR src
, INT srclen
);
96 DWORD
FilenameW2A_FitOrFail(LPSTR DestA
, INT destLen
, LPCWSTR SourceW
, INT sourceLen
);
97 DWORD
FilenameU2A_FitOrFail(LPSTR DestA
, INT destLen
, PUNICODE_STRING SourceU
);
99 #define HeapAlloc RtlAllocateHeap
100 #define HeapReAlloc RtlReAllocateHeap
101 #define HeapFree RtlFreeHeap
105 BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes
,
106 IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL
,
107 IN PUNICODE_STRING ObjectName
);
111 BasepCreateStack(HANDLE hProcess
,
114 PINITIAL_TEB InitialTeb
);
118 BasepInitializeContext(IN PCONTEXT Context
,
120 IN PVOID StartAddress
,
121 IN PVOID StackAddress
,
122 IN ULONG ContextType
);
126 BaseThreadStartupThunk(VOID
);
130 BaseProcessStartThunk(VOID
);
135 BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress
,
140 BasepFreeStack(HANDLE hProcess
,
141 PINITIAL_TEB InitialTeb
);
146 BaseFiberStartup(VOID
);
148 typedef UINT (WINAPI
*PPROCESS_START_ROUTINE
)(VOID
);
152 BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress
);
156 BasepCheckRealTimePrivilege(VOID
);
160 BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString
,
161 OUT LPWSTR
* UnicodeString
);
165 Basep8BitStringToCachedUnicodeString(IN LPCSTR String
);
169 Basep8BitStringToLiveUnicodeString(OUT PUNICODE_STRING UnicodeString
,
174 Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString
,
177 typedef NTSTATUS (NTAPI
*PRTL_CONVERT_STRING
)(IN PUNICODE_STRING UnicodeString
,
178 IN PANSI_STRING AnsiString
,
179 IN BOOLEAN AllocateMemory
);
181 extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString
;
185 BasepMapFile(IN LPCWSTR lpApplicationName
,
186 OUT PHANDLE hSection
,
187 IN PUNICODE_STRING ApplicationName
);
189 PCODEPAGE_ENTRY FASTCALL
190 IntGetCodePageEntry(UINT CodePage
);
193 GetDllLoadPath(LPCWSTR lpModule
);
195 #endif /* ndef _KERNEL32_INCLUDE_KERNEL32_H */