1 #ifndef _KERNEL32_INCLUDE_KERNEL32_H
2 #define _KERNEL32_INCLUDE_KERNEL32_H
4 #define BINARY_UNKNOWN (0)
5 #define BINARY_PE_EXE32 (1)
6 #define BINARY_PE_DLL32 (2)
7 #define BINARY_PE_EXE64 (3)
8 #define BINARY_PE_DLL64 (4)
9 #define BINARY_WIN16 (5)
10 #define BINARY_OS216 (6)
11 #define BINARY_DOS (7)
12 #define BINARY_UNIX_EXE (8)
13 #define BINARY_UNIX_LIB (9)
15 #define MAGIC(c1,c2,c3,c4) ((c1) + ((c2)<<8) + ((c3)<<16) + ((c4)<<24))
17 #define MAGIC_HEAP MAGIC( 'H','E','A','P' )
19 #define ROUNDUP(a,b) ((((a)+(b)-1)/(b))*(b))
20 #define ROUNDDOWN(a,b) (((a)/(b))*(b))
23 #define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld))
26 #define IsConsoleHandle(h) \
27 (((((ULONG)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
29 #define HANDLE_DETACHED_PROCESS (HANDLE)-2
30 #define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
31 #define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
33 /* Undocumented CreateProcess flag */
34 #define STARTF_SHELLPRIVATE 0x400
36 #define SetLastErrorByStatus(__S__) \
37 ((void)SetLastError(RtlNtStatusToDosError(__S__)))
41 (*WaitForInputIdleType
)(
43 DWORD dwMilliseconds
);
45 /* GLOBAL VARIABLES **********************************************************/
47 extern BOOL bIsFileApiAnsi
;
48 extern HANDLE hProcessHeap
;
49 extern HANDLE hBaseDir
;
50 extern HMODULE hCurrentModule
;
52 extern RTL_CRITICAL_SECTION DllLock
;
54 extern UNICODE_STRING DllDirectory
;
56 extern LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter
;
58 /* FUNCTION PROTOTYPES *******************************************************/
60 BOOL STDCALL
VerifyConsoleIoHandle(HANDLE Handle
);
62 BOOL STDCALL
CloseConsoleHandle(HANDLE Handle
);
64 HANDLE STDCALL
OpenConsoleW (LPWSTR wsName
,
65 DWORD dwDesiredAccess
,
67 DWORD dwCreationDistribution
);
71 PWCHAR
FilenameA2W(LPCSTR NameA
, BOOL alloc
);
73 DWORD
FilenameW2A_FitOrFail(LPSTR DestA
, INT destLen
, LPCWSTR SourceW
, INT sourceLen
);
74 DWORD
FilenameU2A_FitOrFail(LPSTR DestA
, INT destLen
, PUNICODE_STRING SourceU
);
76 #define HeapAlloc RtlAllocateHeap
77 #define HeapFree RtlFreeHeap
81 BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes
,
82 IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL
,
83 IN PUNICODE_STRING ObjectName
);
87 BasepCreateStack(HANDLE hProcess
,
90 PINITIAL_TEB InitialTeb
);
94 BasepInitializeContext(IN PCONTEXT Context
,
96 IN PVOID StartAddress
,
97 IN PVOID StackAddress
,
98 IN ULONG ContextType
);
102 BaseThreadStartupThunk();
106 BaseProcessStartThunk();
111 BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress
,
116 BasepFreeStack(HANDLE hProcess
,
117 PINITIAL_TEB InitialTeb
);
122 BaseFiberStartup(VOID
);
124 typedef UINT (STDCALL
*PPROCESS_START_ROUTINE
)(VOID
);
128 BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress
);
132 BasepCheckRealTimePrivilege(VOID
);
136 BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString
,
137 OUT LPWSTR
* UnicodeString
);
141 Basep8BitStringToCachedUnicodeString(IN LPCSTR String
);
145 Basep8BitStringToLiveUnicodeString(OUT PUNICODE_STRING UnicodeString
,
150 Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString
,
153 typedef NTSTATUS (STDCALL
*PRTL_CONVERT_STRING
)(IN PUNICODE_STRING UnicodeString
,
154 IN PANSI_STRING AnsiString
,
155 IN BOOLEAN AllocateMemory
);
157 extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString
;
161 BasepMapFile(IN LPCWSTR lpApplicationName
,
162 OUT PHANDLE hSection
,
163 IN PUNICODE_STRING ApplicationName
);
165 #endif /* ndef _KERNEL32_INCLUDE_KERNEL32_H */