#define actctx 202
#define resource 203
#define kernel32session 204
+#define comm 205
+#define profile 206
+#define nls 207
#if DBG
#define debugstr_a
#define debugstr_w
+#define debugstr_wn
#define wine_dbgstr_w
#define debugstr_guid
#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
-
-//
-// This stuff maybe should go in a vdm.h?
-//
-typedef enum _VDM_ENTRY_CODE
-{
- VdmEntryUndo,
- VdmEntryUpdateProcess,
- VdmEntryUpdateControlCHandler
-} VDM_ENTRY_CODE;
-
-//
-// Undo States
-//
-#define VDM_UNDO_PARTIAL 0x01
-#define VDM_UNDO_FULL 0x02
-#define VDM_UNDO_REUSE 0x04
-#define VDM_UNDO_COMPLETED 0x08
-
-//
-// Binary Types to share with VDM
-//
-#define BINARY_TYPE_EXE 0x01
-#define BINARY_TYPE_COM 0x02
-#define BINARY_TYPE_PIF 0x03
-#define BINARY_TYPE_DOS 0x10
-#define BINARY_TYPE_SEPARATE_WOW 0x20
-#define BINARY_TYPE_WOW 0x40
-#define BINARY_TYPE_WOW_EX 0x80
-
-//
-// VDM States
-//
-#define VDM_NOT_LOADED 0x01
-#define VDM_NOT_READY 0x02
-#define VDM_READY 0x04
+#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
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;
+typedef struct tagLOADPARMS32
+{
+ LPSTR lpEnvAddress;
+ LPSTR lpCmdLine;
+ WORD wMagicValue;
+ WORD wCmdShow;
+ DWORD dwReserved;
} LOADPARMS32;
typedef enum _BASE_SEARCH_PATH_TYPE
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
HANDLE hProcess,
DWORD dwMilliseconds);
-
-extern BOOLEAN InWindows;
-extern WaitForInputIdleType lpfnGlobalRegisterWaitForInputIdle;
+extern WaitForInputIdleType UserWaitForInputIdleRoutine;
/* GLOBAL VARIABLES **********************************************************/
NTAPI
BaseDllInitializeMemoryManager(VOID);
-BOOL WINAPI VerifyConsoleIoHandle(HANDLE Handle);
-
-BOOL WINAPI CloseConsoleHandle(HANDLE Handle);
-
-HANDLE WINAPI
-GetConsoleInputWaitHandle (VOID);
-
-HANDLE WINAPI OpenConsoleW (LPCWSTR wsName,
- DWORD dwDesiredAccess,
- BOOL bInheritHandle,
- DWORD dwShareMode);
-
-BOOL WINAPI SetConsoleInputExeNameW(LPCWSTR lpInputExeName);
-
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
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
VOID
);
-BOOL
-NTAPI
-BaseDestroyVDMEnvironment(
- IN PANSI_STRING AnsiEnv,
- IN PUNICODE_STRING UnicodeEnv
-);
-
-BOOL
-WINAPI
-BaseGetVdmConfigInfo(
- IN LPCWSTR Reserved,
- IN ULONG DosSeqId,
- IN ULONG BinaryType,
- IN PUNICODE_STRING CmdLineString,
- OUT PULONG VdmSize
-);
-
-BOOL
-NTAPI
-BaseCreateVDMEnvironment(
- IN PWCHAR lpEnvironment,
- IN PANSI_STRING AnsiEnv,
- IN PUNICODE_STRING UnicodeEnv
-);
-
VOID
WINAPI
InitCommandLines(VOID);
/* FIXME */
WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
-HANDLE
-WINAPI
-DuplicateConsoleHandle(HANDLE hConsole,
- DWORD dwDesiredAccess,
- BOOL bInheritHandle,
- DWORD dwOptions);
-
VOID
NTAPI
BasepLocateExeLdrEntry(IN PLDR_DATA_TABLE_ENTRY Entry,
typedef NTSTATUS
(NTAPI *PBASEP_APPCERT_PLUGIN_FUNC)(
- IN PCHAR ApplicationName,
+ IN LPWSTR ApplicationName,
IN ULONG CertFlag
);
typedef NTSTATUS
(NTAPI *PBASEP_APPCERT_EMBEDDED_FUNC)(
- IN PCHAR ApplicationName
+ IN LPWSTR ApplicationName
);
typedef NTSTATUS
extern LIST_ENTRY BasepAppCertDllsList;
extern RTL_CRITICAL_SECTION gcsAppCert;
-BOOL
-WINAPI
-BaseUpdateVDMEntry(
- IN ULONG UpdateIndex,
- IN OUT PHANDLE WaitHandle,
- IN ULONG IndexInfo,
- IN ULONG BinaryType
-);
-
VOID
WINAPI
BaseMarkFileForDelete(
IN ULONG FileAttributes
);
+
/* FIXME: This is EXPORTED! It should go in an external kernel32.h header */
VOID
WINAPI
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
+);