5 #define MAX_USER_MODE_DRV_BUFFER 526 24 #define KEY_LENGTH 1024 107 INT bytesToCopy, nullPos;
111 if (bytesToCopy != 0)
117 nullPos = (bytesToCopy /
sizeof(
WCHAR)) - 1;
245 TRACE(
"In ClientThreadSetup(IsCallback == %s, gfServerProcess = %s, IsFirstThread = %s)\n",
246 IsCallback ?
"TRUE" :
"FALSE",
gfServerProcess ?
"TRUE" :
"FALSE", IsFirstThread ?
"TRUE" :
"FALSE");
254 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);
423 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))
581 TRACE(
"User32CallClientThreadSetupFromKernel -->\n");
584 TRACE(
"<-- User32CallClientThreadSetupFromKernel\n");
595 TRACE(
"GetCharsetInfo\n");
608 if (!
gpsi->hIconSmWindows)
678 (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
BOOL WINAPI ImmRegisterClient(PSHAREDINFO ptr, HINSTANCE hMod)
#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)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
NTSTATUS WINAPI User32CallLPKFromKernel(PVOID Arguments, ULONG ArgumentLength)
CRITICAL_SECTION U32AccelCacheLock
DWORD WINAPI ImmProcessKey(HWND hWnd, HKL hKL, UINT vKey, LPARAM lParam, DWORD dwHotKeyID)
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)
NTSTATUS WINAPI User32CallImmProcessKeyFromKernel(PVOID Arguments, ULONG ArgumentLength)
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)
int _cdecl swprintf(const WCHAR *,...)
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)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
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)
HRESULT User32GetImmFileName(_Out_ LPWSTR lpBuffer, _In_ size_t cchBuffer)
NTSTATUS WINAPI User32CallUMPDFromKernel(PVOID Arguments, ULONG ArgumentLength)
struct _LPK_CALLBACK_ARGUMENTS * PLPK_CALLBACK_ARGUMENTS
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)
#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)