5 #define MAX_USER_MODE_DRV_BUFFER 526 24 #define KEY_LENGTH 1024 108 INT bytesToCopy, nullPos;
112 if (bytesToCopy != 0)
118 nullPos = (bytesToCopy /
sizeof(
WCHAR)) - 1;
246 TRACE(
"In ClientThreadSetup(IsCallback == %s, gfServerProcess = %s, IsFirstThread = %s)\n",
247 IsCallback ?
"TRUE" :
"FALSE",
gfServerProcess ?
"TRUE" :
"FALSE", IsFirstThread ?
"TRUE" :
"FALSE");
255 ERR(
"ClientThreadSetup: Thread already initialized.\n");
292 TRACE(
"Checkpoint (register PFN)\n");
295 ERR(
"RegisterClientPFN failed\n");
305 TRACE(
"Checkpoint (Allocating TLS)\n");
314 if (!
gpsi)
ERR(
"AAAAAAAAAAAHHHHHHHHHHHHHH!!!!!!!! gpsi == NULL !!!!\n");
317 TRACE(
"Checkpoint (MessageInit)\n");
321 TRACE(
"Checkpoint (MenuInit)\n");
324 TRACE(
"Checkpoint initialization done OK\n");
380 TRACE(
"ClientThreadSetup is not implemented\n");
389 TRACE(
"user32::Init(0x%p) -->\n", UserCon);
422 TRACE(
"HACK: Hackish NtUserProcessConnect call!!\n");
445 TRACE(
"HACK: Using Init-ClientThreadSetupHelper hack!!\n");
448 TRACE(
"Init-ClientThreadSetupHelper hack failed!\n");
452 TRACE(
"<-- user32::Init()\n");
479 #define WIN_OBJ_DIR L"\\Windows" 480 #define SESSION_DIR L"\\Sessions" 484 #if 0 // Disabling this code is a BIG HACK!! 487 ULONG ConnectInfoSize =
sizeof(ConnectInfo);
488 WCHAR SessionDir[256];
494 TRACE(
"user32::DllMain\n");
520 TRACE(
"Checkpoint (call CSR)\n");
530 ERR(
"Failed to connect to CSR (Status %lx)\n",
Status);
534 TRACE(
"Checkpoint (CSR called)\n");
541 TRACE(
"Checkpoint (call Init)\n");
542 if (!
Init(&ConnectInfo))
547 #if WIN32K_ISNT_BROKEN 580 TRACE(
"User32CallClientThreadSetupFromKernel -->\n");
583 TRACE(
"<-- User32CallClientThreadSetupFromKernel\n");
594 TRACE(
"GetCharsetInfo\n");
607 if (!
gpsi->hIconSmWindows)
677 (Argument->bRect) ? &Argument->rect :
NULL,
BOOL WINAPI ExtTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_ UINT options, _In_opt_ const RECT *lprect, _In_reads_opt_(c) LPCWSTR lpString, _In_ UINT c, _In_reads_opt_(c) const INT *lpDx)
NTSTATUS WINAPI User32CallDDEGetFromKernel(PVOID Arguments, ULONG ArgumentLength)
#define MAX_USER_MODE_DRV_BUFFER
#define OBJ_CASE_INSENSITIVE
BOOL WINAPI InitializeImmEntryTable(VOID)
#define USERSRV_SERVERDLL_INDEX
NTSTATUS WINAPI User32CallSetWndIconsFromKernel(PVOID Arguments, ULONG ArgumentLength)
NTSTATUS WINAPI User32CallCopyImageFromKernel(PVOID Arguments, ULONG ArgumentLength)
NTSTATUS WINAPI User32CallDDEPostFromKernel(PVOID Arguments, ULONG ArgumentLength)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
WCHAR szAppInit[KEY_LENGTH]
#define DLL_PROCESS_ATTACH
NTSTATUS WINAPI User32SetupDefaultCursors(PVOID Arguments, ULONG ArgumentLength)
#define GetWin32ClientInfo()
BOOL Init(PUSERCONNECT UserCon)
BOOL WINAPI DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
NTSTATUS WINAPI User32CallClientThreadSetupFromKernel(PVOID Arguments, ULONG ArgumentLength)
PUSER_HANDLE_TABLE gHandleTable
PUSER_HANDLE_ENTRY gHandleEntries
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_BUFFER_TOO_SMALL
char _InterlockedExchange8(_Interlocked_operand_ char volatile *_Target, char _Value)
NTSYSAPI NTSTATUS NTAPI ZwCallbackReturn(_In_ PVOID Result, _In_ ULONG ResultLength, _In_ NTSTATUS Status)
BOOL WINAPI ClientThreadSetup(VOID)
VOID WINAPI GdiProcessSetup(VOID)
NTSTATUS WINAPI User32CallGetCharsetInfo(PVOID Arguments, ULONG ArgumentLength)
PVOID apfnDispatch[USER32_CALLBACK_MAXIMUM+1]
NTSTATUS WINAPI User32DeliverUserAPC(PVOID Arguments, ULONG ArgumentLength)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
VOID LoadAppInitDlls(VOID)
struct _UMPDPKTHEAD UMPDPKTHEAD
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
NTSTATUS WINAPI User32LoadSysMenuTemplateForKernel(PVOID Arguments, ULONG ArgumentLength)
NTSTATUS WINAPI User32CallWindowProcFromKernel(PVOID Arguments, ULONG ArgumentLength)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
NTSTATUS WINAPI User32CallLPKFromKernel(PVOID Arguments, ULONG ArgumentLength)
CRITICAL_SECTION U32AccelCacheLock
INT WINAPI GdiPrinterThunk(PUMPDPKTHEAD, PVOID, INT)
BOOL WINAPI RegisterClientPFN(VOID)
NTSTATUS WINAPI User32CallSendAsyncProcForKernel(PVOID Arguments, ULONG ArgumentLength)
#define DLL_PROCESS_DETACH
#define NtCurrentProcess()
#define USER32_CALLBACK_MAXIMUM
NTSYSAPI NTSTATUS NTAPI NtQueryValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
BOOL WINAPI TranslateCharsetInfo(_Inout_ PDWORD, _Out_ LPCHARSETINFO, _In_ DWORD)
VOID UnloadAppInitDlls(VOID)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
BOOL WINAPI TlsFree(IN DWORD Index)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define NT_SUCCESS(StatCode)
#define USERSRV_API_CONNECTINFO
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI GdiDllInitialize(HANDLE hDll, DWORD dwReason, LPVOID lpReserved)
NTSTATUS WINAPI User32CallEventProcFromKernel(PVOID Arguments, ULONG ArgumentLength)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define STATUS_UNSUCCESSFUL
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
RTL_CRITICAL_SECTION gcsUserApiHook
static ULONG User32TlsIndex
NTSTATUS WINAPI User32CallOBMFromKernel(PVOID Arguments, ULONG ArgumentLength)
DWORD WINAPI TlsAlloc(VOID)
#define TLS_OUT_OF_INDEXES
VOID DeleteFrameBrushes(VOID)
VOID FASTCALL MessageCleanup(VOID)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HBITMAP WINAPI LoadBitmapW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
WINE_DEFAULT_DEBUG_CHANNEL(crtdll)
PUSER_HANDLE_ENTRY handles
struct _KEY_VALUE_PARTIAL_INFORMATION KEY_VALUE_PARTIAL_INFORMATION
struct _GET_CHARSET_INFO * PGET_CHARSET_INFO
BOOL WINAPI ClientThreadSetupHelper(BOOL IsCallback)
static __inline PVOID SharedPtrToUser(PVOID Ptr)
NTSTATUS WINAPI User32CallClientLoadLibraryFromKernel(PVOID Arguments, ULONG ArgumentLength)
BOOL FASTCALL MessageInit(VOID)
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
#define RtlZeroMemory(Destination, Length)
#define InitializeObjectAttributes(p, n, a, r, s)
#define RtlCopyMemory(Destination, Source, Length)
#define MAKEINTRESOURCEW(i)
NTSTATUS WINAPI User32CallUMPDFromKernel(PVOID Arguments, ULONG ArgumentLength)
struct _LPK_CALLBACK_ARGUMENTS * PLPK_CALLBACK_ARGUMENTS
ULONG_PTR g_ulSharedDelta
struct _UMPDPKTHEAD * PUMPDPKTHEAD
NTSTATUS WINAPI User32CallLoadMenuFromKernel(PVOID Arguments, ULONG ArgumentLength)
NTSTATUS NTAPI CsrClientConnectToServer(IN PWSTR ObjectDirectory, IN ULONG ServerId, IN PVOID ConnectionInfo, IN OUT PULONG ConnectionInfoSize, OUT PBOOLEAN ServerToServerCall)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define HeapFree(x, y, z)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
NTSTATUS NTAPI NtUserProcessConnect(IN HANDLE ProcessHandle, OUT PUSERCONNECT pUserConnect, IN ULONG Size)
NTSTATUS WINAPI User32CallHookProcFromKernel(PVOID Arguments, ULONG ArgumentLength)
struct tagOEMBITMAPINFO oembmi[93]
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
#define RTL_CONSTANT_STRING(s)