2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: subsys/csrss/win32csr/dllmain.c
5 * PURPOSE: Initialization
6 * PROGRAMMERS: Dmitry Philippov (shedon@mail.ru)
9 /* INCLUDES ******************************************************************/
16 /* GLOBALS *******************************************************************/
18 HANDLE Win32CsrApiHeap
;
19 HINSTANCE Win32CsrDllHandle
= NULL
;
21 PCSR_API_ROUTINE Win32CsrApiDefinitions
[3] =
28 BOOLEAN Win32CsrApiServerValidTable
[3] =
35 PCHAR Win32CsrApiNameTable
[3] =
42 static HHOOK hhk
= NULL
;
44 /* FUNCTIONS *****************************************************************/
53 return CallNextHookEx(hhk
, nCode
, wParam
, lParam
);
61 if (DLL_PROCESS_ATTACH
== dwReason
)
63 Win32CsrDllHandle
= hDll
;
65 // HACK HACK HACK ReactOS to BOOT! Initialization BUG ALERT! See bug 5655.
67 hhk
= SetWindowsHookEx(WH_KEYBOARD_LL
, KeyboardHookProc
, NULL
, 0);
68 // BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT!
69 // BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT!
70 // BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT! BUG ALERT!
78 PrivateCsrssManualGuiCheck(LONG Check
)
80 NtUserCallOneParam(Check
, ONEPARAM_ROUTINE_CSRSS_GUICHECK
);
85 CreateSystemThreads(PVOID pParam
)
87 NtUserCallOneParam((DWORD
)pParam
, ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
);
88 DPRINT1("This thread should not terminate!\n");
92 CSR_SERVER_DLL_INIT(Win32CsrInitialization
)
98 Win32CsrApiHeap
= RtlGetProcessHeap();
100 NtUserInitialize(0, NULL
, NULL
);
102 PrivateCsrssManualGuiCheck(0);
104 /* Setup the DLL Object */
105 LoadedServerDll
->ApiBase
= 4;
106 LoadedServerDll
->HighestApiSupported
= 3;
107 LoadedServerDll
->DispatchTable
= Win32CsrApiDefinitions
;
108 LoadedServerDll
->ValidTable
= Win32CsrApiServerValidTable
;
109 LoadedServerDll
->NameTable
= Win32CsrApiNameTable
;
110 // LoadedServerDll->SizeOfProcessData = 0;
111 // LoadedServerDll->ConnectCallback = NULL;
112 // LoadedServerDll->DisconnectCallback = NULL;
113 // LoadedServerDll->HardErrorCallback = Win32CsrHardError;
114 // LoadedServerDll->NewProcessCallback = NULL;
115 // LoadedServerDll->DisconnectCallback = NULL;
117 /* Start Raw Input Threads */
118 Status
= RtlCreateUserThread(NtCurrentProcess(), NULL
, TRUE
, 0, 0, 0, (PTHREAD_START_ROUTINE
)CreateSystemThreads
, (PVOID
)0, &ServerThread
, &ClientId
);
119 if (NT_SUCCESS(Status
))
121 NtResumeThread(ServerThread
, NULL
);
122 NtClose(ServerThread
);
125 DPRINT1("Cannot start Raw Input Thread!\n");
127 return STATUS_SUCCESS
;