6 #define kernel32file 200
7 #define kernel32ver 201
10 #define kernel32session 204
14 #define DEBUG_CHANNEL(ch) static ULONG gDebugChannel = ch;
16 #define DEBUG_CHANNEL(ch)
19 #define TRACE(fmt, ...) TRACE__(gDebugChannel, fmt, ##__VA_ARGS__)
20 #define WARN(fmt, ...) WARN__(gDebugChannel, fmt, ##__VA_ARGS__)
21 #define FIXME(fmt, ...) WARN__(gDebugChannel, fmt,## __VA_ARGS__)
22 #define ERR(fmt, ...) ERR__(gDebugChannel, fmt, ##__VA_ARGS__)
25 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); \
26 DPRINT1("%s() is UNIMPLEMENTED!\n", __FUNCTION__)
33 #include "wine/unicode.h"
36 #define BINARY_UNKNOWN (0)
37 #define BINARY_PE_EXE32 (1)
38 #define BINARY_PE_DLL32 (2)
39 #define BINARY_PE_EXE64 (3)
40 #define BINARY_PE_DLL64 (4)
41 #define BINARY_WIN16 (5)
42 #define BINARY_OS216 (6)
43 #define BINARY_DOS (7)
44 #define BINARY_UNIX_EXE (8)
45 #define BINARY_UNIX_LIB (9)
47 #define MAGIC(c1,c2,c3,c4) ((c1) + ((c2)<<8) + ((c3)<<16) + ((c4)<<24))
49 #define MAGIC_HEAP MAGIC( 'H','E','A','P' )
51 #define ROUNDUP(a,b) ((((a)+(b)-1)/(b))*(b))
52 #define ROUNDDOWN(a,b) (((a)/(b))*(b))
54 #define ROUND_DOWN(n, align) \
55 (((ULONG)n) & ~((align) - 1l))
57 #define ROUND_UP(n, align) \
58 ROUND_DOWN(((ULONG)n) + (align) - 1, (align))
61 #define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld))
64 #define IsConsoleHandle(h) \
65 (((((ULONG_PTR)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
67 #define HANDLE_DETACHED_PROCESS (HANDLE)-2
68 #define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
69 #define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
71 /* Undocumented CreateProcess flag */
72 #define STARTF_SHELLPRIVATE 0x400
74 typedef struct _CODEPAGE_ENTRY
80 CPTABLEINFO CodePageTable
;
81 } CODEPAGE_ENTRY
, *PCODEPAGE_ENTRY
;
83 extern PBASE_STATIC_SERVER_DATA BaseStaticServerData
;
87 (*WaitForInputIdleType
)(
89 DWORD dwMilliseconds
);
91 /* GLOBAL VARIABLES **********************************************************/
93 extern BOOL bIsFileApiAnsi
;
94 extern HANDLE hBaseDir
;
95 extern HMODULE hCurrentModule
;
97 extern RTL_CRITICAL_SECTION BaseDllDirectoryLock
;
99 extern UNICODE_STRING BaseDllDirectory
;
100 extern UNICODE_STRING BaseDefaultPath
;
101 extern UNICODE_STRING BaseDefaultPathAppend
;
102 extern PLDR_DATA_TABLE_ENTRY BasepExeLdrEntry
;
104 extern LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter
;
106 extern SYSTEM_BASIC_INFORMATION BaseCachedSysInfo
;
108 extern BOOLEAN BaseRunningInServerProcess
;
110 /* FUNCTION PROTOTYPES *******************************************************/
114 BaseDllInitializeMemoryManager(VOID
);
116 BOOL WINAPI
VerifyConsoleIoHandle(HANDLE Handle
);
118 BOOL WINAPI
CloseConsoleHandle(HANDLE Handle
);
121 GetConsoleInputWaitHandle (VOID
);
123 HANDLE WINAPI
OpenConsoleW (LPCWSTR wsName
,
124 DWORD dwDesiredAccess
,
128 BOOL WINAPI
SetConsoleInputExeNameW(LPCWSTR lpInputExeName
);
132 HANDLE FASTCALL
TranslateStdHandle(HANDLE hHandle
);
134 PWCHAR
FilenameA2W(LPCSTR NameA
, BOOL alloc
);
135 DWORD
FilenameW2A_N(LPSTR dest
, INT destlen
, LPCWSTR src
, INT srclen
);
137 DWORD
FilenameW2A_FitOrFail(LPSTR DestA
, INT destLen
, LPCWSTR SourceW
, INT sourceLen
);
138 DWORD
FilenameU2A_FitOrFail(LPSTR DestA
, INT destLen
, PUNICODE_STRING SourceU
);
140 #define HeapAlloc RtlAllocateHeap
141 #define HeapReAlloc RtlReAllocateHeap
142 #define HeapFree RtlFreeHeap
143 #define _lread (_readfun)_hread
147 BaseFormatTimeOut(OUT PLARGE_INTEGER Timeout
,
148 IN DWORD dwMilliseconds
);
152 BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes
,
153 IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL
,
154 IN PUNICODE_STRING ObjectName
);
158 BasepCreateStack(HANDLE hProcess
,
161 PINITIAL_TEB InitialTeb
);
165 BasepInitializeContext(IN PCONTEXT Context
,
167 IN PVOID StartAddress
,
168 IN PVOID StackAddress
,
169 IN ULONG ContextType
);
173 BaseThreadStartupThunk(VOID
);
177 BaseProcessStartThunk(VOID
);
182 BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress
,
187 BasepFreeStack(HANDLE hProcess
,
188 PINITIAL_TEB InitialTeb
);
193 BaseFiberStartup(VOID
);
195 typedef UINT (WINAPI
*PPROCESS_START_ROUTINE
)(VOID
);
199 BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress
);
203 BasepCheckRealTimePrivilege(VOID
);
207 BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString
,
208 OUT LPWSTR
* UnicodeString
);
212 Basep8BitStringToStaticUnicodeString(IN LPCSTR AnsiString
);
216 Basep8BitStringToDynamicUnicodeString(OUT PUNICODE_STRING UnicodeString
,
219 #define BasepUnicodeStringTo8BitString RtlUnicodeStringToAnsiString
221 typedef NTSTATUS (NTAPI
*PRTL_CONVERT_STRING
)(IN PUNICODE_STRING UnicodeString
,
222 IN PANSI_STRING AnsiString
,
223 IN BOOLEAN AllocateMemory
);
225 extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString
;
229 BasepMapFile(IN LPCWSTR lpApplicationName
,
230 OUT PHANDLE hSection
,
231 IN PUNICODE_STRING ApplicationName
);
235 BasepGetDllPath(LPWSTR FullPath
,
239 PCODEPAGE_ENTRY FASTCALL
240 IntGetCodePageEntry(UINT CodePage
);
243 GetDllLoadPath(LPCWSTR lpModule
);
247 InitCommandLines(VOID
);
251 BaseSetLastNTError(IN NTSTATUS Status
);
254 WCHAR WINAPI
RtlAnsiCharToUnicodeChar(LPSTR
*);
258 DuplicateConsoleHandle(HANDLE hConsole
,
259 DWORD dwDesiredAccess
,