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))
25 #define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld))
28 #define IsConsoleHandle(h) \
29 (((((ULONG)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
31 #define HANDLE_DETACHED_PROCESS (HANDLE)-2
32 #define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
33 #define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
35 /* Undocumented CreateProcess flag */
36 #define STARTF_SHELLPRIVATE 0x400
38 #define SetLastErrorByStatus(__S__) \
39 ((void)SetLastError(RtlNtStatusToDosError(__S__)))
43 (*WaitForInputIdleType
)(
45 DWORD dwMilliseconds
);
47 /* GLOBAL VARIABLES **********************************************************/
49 extern BOOL bIsFileApiAnsi
;
50 extern HANDLE hProcessHeap
;
51 extern HANDLE hBaseDir
;
52 extern HMODULE hCurrentModule
;
54 extern RTL_CRITICAL_SECTION DllLock
;
56 extern UNICODE_STRING DllDirectory
;
58 extern LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter
;
60 /* FUNCTION PROTOTYPES *******************************************************/
62 BOOL STDCALL
VerifyConsoleIoHandle(HANDLE Handle
);
64 BOOL STDCALL
CloseConsoleHandle(HANDLE Handle
);
67 GetConsoleInputWaitHandle (VOID
);
69 HANDLE STDCALL
OpenConsoleW (LPWSTR wsName
,
70 DWORD dwDesiredAccess
,
72 DWORD dwCreationDistribution
);
76 PWCHAR
FilenameA2W(LPCSTR NameA
, BOOL alloc
);
78 DWORD
FilenameW2A_FitOrFail(LPSTR DestA
, INT destLen
, LPCWSTR SourceW
, INT sourceLen
);
79 DWORD
FilenameU2A_FitOrFail(LPSTR DestA
, INT destLen
, PUNICODE_STRING SourceU
);
81 #define HeapAlloc RtlAllocateHeap
82 #define HeapReAlloc RtlReAllocateHeap
83 #define HeapFree RtlFreeHeap
87 BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes
,
88 IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL
,
89 IN PUNICODE_STRING ObjectName
);
93 BasepCreateStack(HANDLE hProcess
,
96 PINITIAL_TEB InitialTeb
);
100 BasepInitializeContext(IN PCONTEXT Context
,
102 IN PVOID StartAddress
,
103 IN PVOID StackAddress
,
104 IN ULONG ContextType
);
108 BaseThreadStartupThunk(VOID
);
112 BaseProcessStartThunk(VOID
);
117 BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress
,
122 BasepFreeStack(HANDLE hProcess
,
123 PINITIAL_TEB InitialTeb
);
128 BaseFiberStartup(VOID
);
130 typedef UINT (STDCALL
*PPROCESS_START_ROUTINE
)(VOID
);
134 BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress
);
138 BasepCheckRealTimePrivilege(VOID
);
142 BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString
,
143 OUT LPWSTR
* UnicodeString
);
147 Basep8BitStringToCachedUnicodeString(IN LPCSTR String
);
151 Basep8BitStringToLiveUnicodeString(OUT PUNICODE_STRING UnicodeString
,
156 Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString
,
159 typedef NTSTATUS (NTAPI
*PRTL_CONVERT_STRING
)(IN PUNICODE_STRING UnicodeString
,
160 IN PANSI_STRING AnsiString
,
161 IN BOOLEAN AllocateMemory
);
163 extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString
;
167 BasepMapFile(IN LPCWSTR lpApplicationName
,
168 OUT PHANDLE hSection
,
169 IN PUNICODE_STRING ApplicationName
);
171 #endif /* ndef _KERNEL32_INCLUDE_KERNEL32_H */