#define actctx 202
#define resource 203
#define kernel32session 204
+#define comm 205
+#define profile 206
+#define nls 207
#if DBG
#define FIXME(fmt, ...) WARN__(gDebugChannel, fmt,## __VA_ARGS__)
#define ERR(fmt, ...) ERR__(gDebugChannel, fmt, ##__VA_ARGS__)
-#define debugstr_a
+#define STUB \
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); \
+ DPRINT1("%s() is UNIMPLEMENTED!\n", __FUNCTION__)
+
+#define debugstr_a
#define debugstr_w
-#define wine_dbgstr_w
+#define debugstr_wn
+#define wine_dbgstr_w
#define debugstr_guid
#include "wine/unicode.h"
#define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld))
#endif
-#define IsConsoleHandle(h) \
- (((((ULONG_PTR)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
-
-#define HANDLE_DETACHED_PROCESS (HANDLE)-2
-#define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
-#define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
+#define __TRY _SEH2_TRY
+#define __EXCEPT_PAGE_FAULT _SEH2_EXCEPT(_SEH2_GetExceptionCode() == STATUS_ACCESS_VIOLATION)
+#define __ENDTRY _SEH2_END
/* Undocumented CreateProcess flag */
#define STARTF_SHELLPRIVATE 0x400
-
-#define SetLastErrorByStatus(x) RtlSetLastWin32ErrorAndNtStatusFromNtStatus((x))
typedef struct _CODEPAGE_ENTRY
{
- LIST_ENTRY Entry;
- UINT CodePage;
- HANDLE SectionHandle;
- PBYTE SectionMapping;
- CPTABLEINFO CodePageTable;
+ LIST_ENTRY Entry;
+ UINT CodePage;
+ HANDLE SectionHandle;
+ PBYTE SectionMapping;
+ CPTABLEINFO CodePageTable;
} CODEPAGE_ENTRY, *PCODEPAGE_ENTRY;
+typedef struct tagLOADPARMS32
+{
+ LPSTR lpEnvAddress;
+ LPSTR lpCmdLine;
+ WORD wMagicValue;
+ WORD wCmdShow;
+ DWORD dwReserved;
+} LOADPARMS32;
+
+typedef enum _BASE_SEARCH_PATH_TYPE
+{
+ BaseSearchPathInvalid,
+ BaseSearchPathDll,
+ BaseSearchPathApp,
+ BaseSearchPathDefault,
+ BaseSearchPathEnv,
+ BaseSearchPathCurrent,
+ BaseSearchPathMax
+} BASE_SEARCH_PATH_TYPE, *PBASE_SEARCH_PATH_TYPE;
+
+typedef enum _BASE_CURRENT_DIR_PLACEMENT
+{
+ BaseCurrentDirPlacementInvalid = -1,
+ BaseCurrentDirPlacementDefault,
+ BaseCurrentDirPlacementSafe,
+ BaseCurrentDirPlacementMax
+} BASE_CURRENT_DIR_PLACEMENT;
+
+typedef struct _BASEP_ACTCTX_BLOCK
+{
+ ULONG Flags;
+ PVOID ActivationContext;
+ PVOID CompletionContext;
+ LPOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine;
+} BASEP_ACTCTX_BLOCK, *PBASEP_ACTCTX_BLOCK;
+
+#define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_ERROR 1
+#define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_SUCCESS 2
+#define BASEP_GET_MODULE_HANDLE_EX_PARAMETER_VALIDATION_CONTINUE 3
+
+extern PBASE_STATIC_SERVER_DATA BaseStaticServerData;
+
typedef
DWORD
(*WaitForInputIdleType)(
HANDLE hProcess,
DWORD dwMilliseconds);
+extern WaitForInputIdleType UserWaitForInputIdleRoutine;
+
/* GLOBAL VARIABLES **********************************************************/
extern BOOL bIsFileApiAnsi;
-extern HANDLE hProcessHeap;
-extern HANDLE hBaseDir;
extern HMODULE hCurrentModule;
extern RTL_CRITICAL_SECTION BaseDllDirectoryLock;
extern LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter;
-/* FUNCTION PROTOTYPES *******************************************************/
-
-BOOL WINAPI VerifyConsoleIoHandle(HANDLE Handle);
+extern SYSTEM_BASIC_INFORMATION BaseCachedSysInfo;
-BOOL WINAPI CloseConsoleHandle(HANDLE Handle);
+extern BOOLEAN BaseRunningInServerProcess;
-HANDLE WINAPI
-GetConsoleInputWaitHandle (VOID);
-
-HANDLE WINAPI OpenConsoleW (LPCWSTR wsName,
- DWORD dwDesiredAccess,
- BOOL bInheritHandle,
- DWORD dwShareMode);
+/* FUNCTION PROTOTYPES *******************************************************/
-BOOL WINAPI SetConsoleInputExeNameW(LPCWSTR lpInputExeName);
+VOID
+NTAPI
+BaseDllInitializeMemoryManager(VOID);
PTEB GetTeb(VOID);
-HANDLE FASTCALL TranslateStdHandle(HANDLE hHandle);
-
PWCHAR FilenameA2W(LPCSTR NameA, BOOL alloc);
DWORD FilenameW2A_N(LPSTR dest, INT destlen, LPCWSTR src, INT srclen);
#define HeapAlloc RtlAllocateHeap
#define HeapReAlloc RtlReAllocateHeap
#define HeapFree RtlFreeHeap
-#define _lread (_readfun)_hread
+#define _lread(a, b, c) (long)(_hread(a, b, (long)c))
+
+PLARGE_INTEGER
+WINAPI
+BaseFormatTimeOut(OUT PLARGE_INTEGER Timeout,
+ IN DWORD dwMilliseconds);
POBJECT_ATTRIBUTES
WINAPI
-BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
+BaseFormatObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL,
IN PUNICODE_STRING ObjectName);
-
+
NTSTATUS
WINAPI
-BasepCreateStack(HANDLE hProcess,
+BaseCreateStack(HANDLE hProcess,
SIZE_T StackReserve,
SIZE_T StackCommit,
PINITIAL_TEB InitialTeb);
-
+
VOID
WINAPI
-BasepInitializeContext(IN PCONTEXT Context,
+BaseInitializeContext(IN PCONTEXT Context,
IN PVOID Parameter,
IN PVOID StartAddress,
IN PVOID StackAddress,
IN ULONG ContextType);
-
+
VOID
WINAPI
BaseThreadStartupThunk(VOID);
VOID
WINAPI
BaseProcessStartThunk(VOID);
-
+
+VOID
+NTAPI
+BasepFreeActivationContextActivationBlock(
+ IN PBASEP_ACTCTX_BLOCK ActivationBlock
+);
+
+NTSTATUS
+NTAPI
+BasepAllocateActivationContextActivationBlock(
+ IN DWORD Flags,
+ IN PVOID CompletionRoutine,
+ IN PVOID CompletionContext,
+ OUT PBASEP_ACTCTX_BLOCK *ActivationBlock
+);
+
__declspec(noreturn)
VOID
WINAPI
BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter);
-
+
VOID
WINAPI
-BasepFreeStack(HANDLE hProcess,
- PINITIAL_TEB InitialTeb);
+BaseFreeThreadStack(IN HANDLE hProcess,
+ IN PINITIAL_TEB InitialTeb);
__declspec(noreturn)
VOID
VOID
WINAPI
BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress);
-
-BOOLEAN
+
+PVOID
WINAPI
-BasepCheckRealTimePrivilege(VOID);
+BasepIsRealtimeAllowed(IN BOOLEAN Keep);
VOID
WINAPI
BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString,
OUT LPWSTR* UnicodeString);
-
+
PUNICODE_STRING
WINAPI
Basep8BitStringToStaticUnicodeString(IN LPCSTR AnsiString);
WINAPI
Basep8BitStringToDynamicUnicodeString(OUT PUNICODE_STRING UnicodeString,
IN LPCSTR String);
-
-#define BasepUnicodeStringTo8BitString RtlUnicodeStringToAnsiString
typedef NTSTATUS (NTAPI *PRTL_CONVERT_STRING)(IN PUNICODE_STRING UnicodeString,
IN PANSI_STRING AnsiString,
IN BOOLEAN AllocateMemory);
-
+
+typedef ULONG (NTAPI *PRTL_COUNT_STRING)(IN PUNICODE_STRING UnicodeString);
+
+typedef NTSTATUS (NTAPI *PRTL_CONVERT_STRINGA)(IN PANSI_STRING AnsiString,
+ IN PCUNICODE_STRING UnicodeString,
+ IN BOOLEAN AllocateMemory);
+
+typedef ULONG (NTAPI *PRTL_COUNT_STRINGA)(IN PANSI_STRING UnicodeString);
+
+ULONG
+NTAPI
+BasepUnicodeStringToAnsiSize(IN PUNICODE_STRING String);
+
+ULONG
+NTAPI
+BasepAnsiStringToUnicodeSize(IN PANSI_STRING String);
+
extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString;
+extern PRTL_CONVERT_STRINGA BasepUnicodeStringTo8BitString;
+extern PRTL_COUNT_STRING BasepUnicodeStringTo8BitSize;
+extern PRTL_COUNT_STRINGA Basep8BitStringToUnicodeSize;
+
+extern UNICODE_STRING BaseWindowsDirectory, BaseWindowsSystemDirectory;
+extern HANDLE BaseNamedObjectDirectory;
+
+HANDLE
+WINAPI
+BaseGetNamedObjectDirectory(VOID);
NTSTATUS
WINAPI
OUT PHANDLE hSection,
IN PUNICODE_STRING ApplicationName);
+PCODEPAGE_ENTRY FASTCALL
+IntGetCodePageEntry(UINT CodePage);
+
LPWSTR
WINAPI
-BasepGetDllPath(LPWSTR FullPath,
- PVOID Environment);
+BaseComputeProcessDllPath(
+ IN LPWSTR FullPath,
+ IN PVOID Environment
+);
+LPWSTR
+WINAPI
+BaseComputeProcessExePath(
+ IN LPWSTR FullPath
+);
-PCODEPAGE_ENTRY FASTCALL
-IntGetCodePageEntry(UINT CodePage);
+ULONG
+WINAPI
+BaseIsDosApplication(
+ IN PUNICODE_STRING PathName,
+ IN NTSTATUS Status
+);
-LPWSTR
-GetDllLoadPath(LPCWSTR lpModule);
+NTSTATUS
+WINAPI
+BasepCheckBadapp(
+ IN HANDLE FileHandle,
+ IN PWCHAR ApplicationName,
+ IN PWCHAR Environment,
+ IN USHORT ExeType,
+ IN PVOID* SdbQueryAppCompatData,
+ IN PULONG SdbQueryAppCompatDataSize,
+ IN PVOID* SxsData,
+ IN PULONG SxsDataSize,
+ OUT PULONG FusionFlags
+);
+
+BOOLEAN
+WINAPI
+IsShimInfrastructureDisabled(
+ VOID
+);
VOID
WINAPI
/* FIXME */
WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
+
+VOID
+NTAPI
+BasepLocateExeLdrEntry(IN PLDR_DATA_TABLE_ENTRY Entry,
+ IN PVOID Context,
+ OUT BOOLEAN *StopEnumeration);
+
+typedef NTSTATUS
+(NTAPI *PBASEP_APPCERT_PLUGIN_FUNC)(
+ IN LPWSTR ApplicationName,
+ IN ULONG CertFlag
+);
+
+typedef NTSTATUS
+(NTAPI *PBASEP_APPCERT_EMBEDDED_FUNC)(
+ IN LPWSTR ApplicationName
+);
+
+typedef NTSTATUS
+(NTAPI *PSAFER_REPLACE_PROCESS_THREAD_TOKENS)(
+ IN HANDLE Token,
+ IN HANDLE Process,
+ IN HANDLE Thread
+);
+
+typedef struct _BASEP_APPCERT_ENTRY
+{
+ LIST_ENTRY Entry;
+ UNICODE_STRING Name;
+ PBASEP_APPCERT_PLUGIN_FUNC fPluginCertFunc;
+} BASEP_APPCERT_ENTRY, *PBASEP_APPCERT_ENTRY;
+
+typedef struct _BASE_MSG_SXS_HANDLES
+{
+ HANDLE File;
+ HANDLE Process;
+ HANDLE Section;
+ LARGE_INTEGER ViewBase;
+} BASE_MSG_SXS_HANDLES, *PBASE_MSG_SXS_HANDLES;
+
+typedef struct _SXS_WIN32_NT_PATH_PAIR
+{
+ PUNICODE_STRING Win32;
+ PUNICODE_STRING Nt;
+} SXS_WIN32_NT_PATH_PAIR, *PSXS_WIN32_NT_PATH_PAIR;
+
+typedef struct _SXS_OVERRIDE_MANIFEST
+{
+ PCWCH Name;
+ PVOID Address;
+ ULONG Size;
+} SXS_OVERRIDE_MANIFEST, *PSXS_OVERRIDE_MANIFEST;
+
+NTSTATUS
+NTAPI
+BasepConfigureAppCertDlls(
+ IN PWSTR ValueName,
+ IN ULONG ValueType,
+ IN PVOID ValueData,
+ IN ULONG ValueLength,
+ IN PVOID Context,
+ IN PVOID EntryContext
+);
+
+extern LIST_ENTRY BasepAppCertDllsList;
+extern RTL_CRITICAL_SECTION gcsAppCert;
+
+VOID
+WINAPI
+BaseMarkFileForDelete(
+ IN HANDLE FileHandle,
+ IN ULONG FileAttributes
+);
+
+
+/* FIXME: This is EXPORTED! It should go in an external kernel32.h header */
+VOID
+WINAPI
+BasepFreeAppCompatData(
+ IN PVOID AppCompatData,
+ IN PVOID AppCompatSxsData
+);
+
+NTSTATUS
+WINAPI
+BasepCheckWinSaferRestrictions(
+ IN HANDLE UserToken,
+ IN LPWSTR ApplicationName,
+ IN HANDLE FileHandle,
+ OUT PBOOLEAN InJob,
+ OUT PHANDLE NewToken,
+ OUT PHANDLE JobHandle
+);