2010-02-26 11:43:19 +00:00
|
|
|
#pragma once
|
2004-01-23 21:16:04 +00:00
|
|
|
|
2010-08-13 14:47:01 +00:00
|
|
|
//
|
|
|
|
// Kernel32 Filter IDs
|
|
|
|
//
|
|
|
|
#define kernel32file 200
|
|
|
|
#define kernel32ver 201
|
|
|
|
#define actctx 202
|
|
|
|
#define resource 203
|
|
|
|
#define kernel32session 204
|
|
|
|
|
|
|
|
#define TRACE(fmt, ...) TRACE__(gDebugChannel, fmt, ##__VA_ARGS__)
|
|
|
|
#define WARN(fmt, ...) WARN__(gDebugChannel, fmt, ##__VA_ARGS__)
|
|
|
|
#define FIXME(fmt, ...) WARN__(gDebugChannel, fmt,## __VA_ARGS__)
|
|
|
|
#define ERR(fmt, ...) ERR__(gDebugChannel, fmt, ##__VA_ARGS__)
|
|
|
|
|
|
|
|
#define debugstr_a
|
|
|
|
#define debugstr_w
|
|
|
|
#define wine_dbgstr_w
|
|
|
|
#define debugstr_guid
|
|
|
|
|
|
|
|
#include "wine/unicode.h"
|
2006-06-24 18:11:57 +00:00
|
|
|
#include "baseheap.h"
|
|
|
|
|
2004-05-02 14:47:05 +00:00
|
|
|
#define BINARY_UNKNOWN (0)
|
|
|
|
#define BINARY_PE_EXE32 (1)
|
|
|
|
#define BINARY_PE_DLL32 (2)
|
|
|
|
#define BINARY_PE_EXE64 (3)
|
|
|
|
#define BINARY_PE_DLL64 (4)
|
|
|
|
#define BINARY_WIN16 (5)
|
|
|
|
#define BINARY_OS216 (6)
|
|
|
|
#define BINARY_DOS (7)
|
|
|
|
#define BINARY_UNIX_EXE (8)
|
|
|
|
#define BINARY_UNIX_LIB (9)
|
2004-01-23 21:16:04 +00:00
|
|
|
|
|
|
|
#define MAGIC(c1,c2,c3,c4) ((c1) + ((c2)<<8) + ((c3)<<16) + ((c4)<<24))
|
|
|
|
|
|
|
|
#define MAGIC_HEAP MAGIC( 'H','E','A','P' )
|
|
|
|
|
|
|
|
#define ROUNDUP(a,b) ((((a)+(b)-1)/(b))*(b))
|
|
|
|
#define ROUNDDOWN(a,b) (((a)/(b))*(b))
|
|
|
|
|
2009-01-25 16:13:16 +00:00
|
|
|
#define ROUND_DOWN(n, align) \
|
|
|
|
(((ULONG)n) & ~((align) - 1l))
|
|
|
|
|
|
|
|
#define ROUND_UP(n, align) \
|
|
|
|
ROUND_DOWN(((ULONG)n) + (align) - 1, (align))
|
|
|
|
|
2004-01-23 21:16:04 +00:00
|
|
|
#ifndef FIELD_OFFSET
|
|
|
|
#define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld))
|
|
|
|
#endif
|
|
|
|
|
2005-07-12 01:56:14 +00:00
|
|
|
#define IsConsoleHandle(h) \
|
[KERNEL32]
Merge r34770, r36475, r36990, r37019, r43852, r43952, r43954, r43979, r43981, r46868 from amd64 branch:
- Multiple ULONG / SIZE_T fixes
- Use UlongToHandle / HandleToUlong to convert between DWORD ProcessId and ClientId.UniqueProcess
- implement amd64 version of _dump_context
- Make IsConsoleHandle 64bit safe
- Update kernel32.pspec with a lot of Win7 (commented out) and some amd64 specific exports, add some more comments and fix sorting
- Implement amd64 version of BaseThreadStartupThunk and BaseProcessStartThunk
- Stub amd64 version of SwitchToFiber
- Implement amd64 version of BasepInitializeContext
svn path=/trunk/; revision=48119
2010-07-19 18:52:18 +00:00
|
|
|
(((((ULONG_PTR)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
|
2005-07-12 01:56:14 +00:00
|
|
|
|
2005-07-31 21:24:35 +00:00
|
|
|
#define HANDLE_DETACHED_PROCESS (HANDLE)-2
|
|
|
|
#define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-3
|
|
|
|
#define HANDLE_CREATE_NO_WINDOW (HANDLE)-4
|
2005-07-12 05:00:33 +00:00
|
|
|
|
|
|
|
/* Undocumented CreateProcess flag */
|
|
|
|
#define STARTF_SHELLPRIVATE 0x400
|
|
|
|
|
2010-08-13 14:47:01 +00:00
|
|
|
#define SetLastErrorByStatus(x) RtlSetLastWin32ErrorAndNtStatusFromNtStatus((x))
|
|
|
|
#define GetLastError() NtCurrentTeb()->LastErrorValue
|
|
|
|
#define SetLastError(x) NtCurrentTeb()->LastErrorValue = (x)
|
2004-01-23 21:16:04 +00:00
|
|
|
|
2008-11-03 11:27:17 +00:00
|
|
|
typedef struct _CODEPAGE_ENTRY
|
|
|
|
{
|
|
|
|
LIST_ENTRY Entry;
|
|
|
|
UINT CodePage;
|
|
|
|
HANDLE SectionHandle;
|
|
|
|
PBYTE SectionMapping;
|
|
|
|
CPTABLEINFO CodePageTable;
|
|
|
|
} CODEPAGE_ENTRY, *PCODEPAGE_ENTRY;
|
|
|
|
|
2005-05-09 01:46:57 +00:00
|
|
|
typedef
|
2004-01-23 21:16:04 +00:00
|
|
|
DWORD
|
|
|
|
(*WaitForInputIdleType)(
|
|
|
|
HANDLE hProcess,
|
|
|
|
DWORD dwMilliseconds);
|
|
|
|
|
|
|
|
/* GLOBAL VARIABLES **********************************************************/
|
|
|
|
|
|
|
|
extern BOOL bIsFileApiAnsi;
|
|
|
|
extern HANDLE hProcessHeap;
|
|
|
|
extern HANDLE hBaseDir;
|
2004-06-26 20:07:40 +00:00
|
|
|
extern HMODULE hCurrentModule;
|
2004-01-23 21:16:04 +00:00
|
|
|
|
2005-01-03 23:02:15 +00:00
|
|
|
extern RTL_CRITICAL_SECTION DllLock;
|
2004-01-23 21:16:04 +00:00
|
|
|
|
2004-12-09 17:28:10 +00:00
|
|
|
extern UNICODE_STRING DllDirectory;
|
|
|
|
|
2004-12-13 13:32:24 +00:00
|
|
|
extern LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter;
|
|
|
|
|
2004-01-23 21:16:04 +00:00
|
|
|
/* FUNCTION PROTOTYPES *******************************************************/
|
|
|
|
|
2008-11-30 11:42:05 +00:00
|
|
|
BOOL WINAPI VerifyConsoleIoHandle(HANDLE Handle);
|
2004-06-13 20:04:56 +00:00
|
|
|
|
2008-11-30 11:42:05 +00:00
|
|
|
BOOL WINAPI CloseConsoleHandle(HANDLE Handle);
|
2004-01-23 21:16:04 +00:00
|
|
|
|
2008-11-30 11:42:05 +00:00
|
|
|
HANDLE WINAPI
|
2006-06-28 17:02:37 +00:00
|
|
|
GetConsoleInputWaitHandle (VOID);
|
|
|
|
|
2008-11-30 11:42:05 +00:00
|
|
|
HANDLE WINAPI OpenConsoleW (LPCWSTR wsName,
|
2004-01-23 21:16:04 +00:00
|
|
|
DWORD dwDesiredAccess,
|
|
|
|
BOOL bInheritHandle,
|
2008-08-02 17:01:22 +00:00
|
|
|
DWORD dwShareMode);
|
2004-01-23 21:16:04 +00:00
|
|
|
|
2010-05-23 17:40:54 +00:00
|
|
|
BOOL WINAPI SetConsoleInputExeNameW(LPCWSTR lpInputExeName);
|
|
|
|
|
2004-01-23 21:16:04 +00:00
|
|
|
PTEB GetTeb(VOID);
|
|
|
|
|
2008-08-04 17:08:52 +00:00
|
|
|
HANDLE FASTCALL TranslateStdHandle(HANDLE hHandle);
|
|
|
|
|
2005-03-15 19:40:22 +00:00
|
|
|
PWCHAR FilenameA2W(LPCSTR NameA, BOOL alloc);
|
2008-09-13 09:21:43 +00:00
|
|
|
DWORD FilenameW2A_N(LPSTR dest, INT destlen, LPCWSTR src, INT srclen);
|
2005-05-09 01:46:57 +00:00
|
|
|
|
2005-03-15 19:40:22 +00:00
|
|
|
DWORD FilenameW2A_FitOrFail(LPSTR DestA, INT destLen, LPCWSTR SourceW, INT sourceLen);
|
|
|
|
DWORD FilenameU2A_FitOrFail(LPSTR DestA, INT destLen, PUNICODE_STRING SourceU);
|
|
|
|
|
2005-05-15 22:07:07 +00:00
|
|
|
#define HeapAlloc RtlAllocateHeap
|
2005-09-25 21:05:18 +00:00
|
|
|
#define HeapReAlloc RtlReAllocateHeap
|
2005-05-15 22:07:07 +00:00
|
|
|
#define HeapFree RtlFreeHeap
|
2010-08-13 14:47:01 +00:00
|
|
|
#define _lread (_readfun)_hread
|
2005-03-15 19:40:22 +00:00
|
|
|
|
2005-07-12 05:00:33 +00:00
|
|
|
POBJECT_ATTRIBUTES
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
|
|
|
|
IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL,
|
|
|
|
IN PUNICODE_STRING ObjectName);
|
|
|
|
|
|
|
|
NTSTATUS
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
BasepCreateStack(HANDLE hProcess,
|
[KERNEL32]
Merge r34770, r36475, r36990, r37019, r43852, r43952, r43954, r43979, r43981, r46868 from amd64 branch:
- Multiple ULONG / SIZE_T fixes
- Use UlongToHandle / HandleToUlong to convert between DWORD ProcessId and ClientId.UniqueProcess
- implement amd64 version of _dump_context
- Make IsConsoleHandle 64bit safe
- Update kernel32.pspec with a lot of Win7 (commented out) and some amd64 specific exports, add some more comments and fix sorting
- Implement amd64 version of BaseThreadStartupThunk and BaseProcessStartThunk
- Stub amd64 version of SwitchToFiber
- Implement amd64 version of BasepInitializeContext
svn path=/trunk/; revision=48119
2010-07-19 18:52:18 +00:00
|
|
|
SIZE_T StackReserve,
|
|
|
|
SIZE_T StackCommit,
|
2005-07-12 05:00:33 +00:00
|
|
|
PINITIAL_TEB InitialTeb);
|
|
|
|
|
|
|
|
VOID
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
BasepInitializeContext(IN PCONTEXT Context,
|
|
|
|
IN PVOID Parameter,
|
|
|
|
IN PVOID StartAddress,
|
|
|
|
IN PVOID StackAddress,
|
|
|
|
IN ULONG ContextType);
|
|
|
|
|
|
|
|
VOID
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2007-01-26 07:22:19 +00:00
|
|
|
BaseThreadStartupThunk(VOID);
|
2005-07-12 05:00:33 +00:00
|
|
|
|
|
|
|
VOID
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2007-01-26 07:22:19 +00:00
|
|
|
BaseProcessStartThunk(VOID);
|
2005-07-12 05:00:33 +00:00
|
|
|
|
|
|
|
__declspec(noreturn)
|
|
|
|
VOID
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress,
|
|
|
|
LPVOID lpParameter);
|
|
|
|
|
|
|
|
VOID
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
BasepFreeStack(HANDLE hProcess,
|
|
|
|
PINITIAL_TEB InitialTeb);
|
|
|
|
|
|
|
|
__declspec(noreturn)
|
|
|
|
VOID
|
|
|
|
WINAPI
|
|
|
|
BaseFiberStartup(VOID);
|
|
|
|
|
2008-11-30 11:42:05 +00:00
|
|
|
typedef UINT (WINAPI *PPROCESS_START_ROUTINE)(VOID);
|
2005-07-12 05:00:33 +00:00
|
|
|
|
|
|
|
VOID
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress);
|
|
|
|
|
|
|
|
BOOLEAN
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
BasepCheckRealTimePrivilege(VOID);
|
|
|
|
|
|
|
|
VOID
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString,
|
2005-07-29 21:55:09 +00:00
|
|
|
OUT LPWSTR* UnicodeString);
|
2005-07-12 05:00:33 +00:00
|
|
|
|
|
|
|
PUNICODE_STRING
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
Basep8BitStringToCachedUnicodeString(IN LPCSTR String);
|
|
|
|
|
|
|
|
NTSTATUS
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
Basep8BitStringToLiveUnicodeString(OUT PUNICODE_STRING UnicodeString,
|
|
|
|
IN LPCSTR String);
|
|
|
|
|
2005-07-29 21:55:09 +00:00
|
|
|
NTSTATUS
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-29 21:55:09 +00:00
|
|
|
Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString,
|
|
|
|
IN LPCSTR String);
|
|
|
|
|
2006-03-04 17:27:40 +00:00
|
|
|
typedef NTSTATUS (NTAPI *PRTL_CONVERT_STRING)(IN PUNICODE_STRING UnicodeString,
|
|
|
|
IN PANSI_STRING AnsiString,
|
|
|
|
IN BOOLEAN AllocateMemory);
|
2005-07-12 05:00:33 +00:00
|
|
|
|
2005-07-29 21:55:09 +00:00
|
|
|
extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString;
|
2005-07-12 05:00:33 +00:00
|
|
|
|
|
|
|
NTSTATUS
|
2008-11-30 11:42:05 +00:00
|
|
|
WINAPI
|
2005-07-12 05:00:33 +00:00
|
|
|
BasepMapFile(IN LPCWSTR lpApplicationName,
|
|
|
|
OUT PHANDLE hSection,
|
|
|
|
IN PUNICODE_STRING ApplicationName);
|
|
|
|
|
2008-11-03 11:27:17 +00:00
|
|
|
PCODEPAGE_ENTRY FASTCALL
|
|
|
|
IntGetCodePageEntry(UINT CodePage);
|
|
|
|
|
2009-07-17 13:24:07 +00:00
|
|
|
LPWSTR
|
|
|
|
GetDllLoadPath(LPCWSTR lpModule);
|
2010-05-06 10:50:26 +00:00
|
|
|
|
|
|
|
VOID
|
|
|
|
WINAPI
|
|
|
|
InitCommandLines(VOID);
|