[WIN32CSR] Clean up the debris from r47314: Removed some redundant code, reorganized...
[reactos.git] / reactos / subsystems / win32 / csrss / win32csr / dllmain.c
1 /*
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)
7 */
8
9 /* INCLUDES ******************************************************************/
10 #define NDEBUG
11 #include "w32csr.h"
12 #include <debug.h>
13
14 /* Not defined in any header file */
15 extern VOID WINAPI PrivateCsrssManualGuiCheck(LONG Check);
16 extern VOID WINAPI PrivateCsrssInitialized();
17 extern VOID WINAPI InitializeAppSwitchHook();
18
19 /* GLOBALS *******************************************************************/
20
21 HANDLE Win32CsrApiHeap;
22 HINSTANCE Win32CsrDllHandle = NULL;
23 static CSRSS_EXPORTED_FUNCS CsrExports;
24
25 static CSRSS_API_DEFINITION Win32CsrApiDefinitions[] =
26 {
27 CSRSS_DEFINE_API(GET_INPUT_HANDLE, CsrGetInputHandle),
28 CSRSS_DEFINE_API(GET_OUTPUT_HANDLE, CsrGetOutputHandle),
29 CSRSS_DEFINE_API(CLOSE_HANDLE, CsrCloseHandle),
30 CSRSS_DEFINE_API(VERIFY_HANDLE, CsrVerifyHandle),
31 CSRSS_DEFINE_API(DUPLICATE_HANDLE, CsrDuplicateHandle),
32 CSRSS_DEFINE_API(GET_INPUT_WAIT_HANDLE, CsrGetInputWaitHandle),
33 CSRSS_DEFINE_API(WRITE_CONSOLE, CsrWriteConsole),
34 CSRSS_DEFINE_API(READ_CONSOLE, CsrReadConsole),
35 CSRSS_DEFINE_API(ALLOC_CONSOLE, CsrAllocConsole),
36 CSRSS_DEFINE_API(FREE_CONSOLE, CsrFreeConsole),
37 CSRSS_DEFINE_API(SCREEN_BUFFER_INFO, CsrGetScreenBufferInfo),
38 CSRSS_DEFINE_API(SET_CURSOR, CsrSetCursor),
39 CSRSS_DEFINE_API(FILL_OUTPUT, CsrFillOutputChar),
40 CSRSS_DEFINE_API(READ_INPUT, CsrReadInputEvent),
41 CSRSS_DEFINE_API(WRITE_CONSOLE_OUTPUT_CHAR, CsrWriteConsoleOutputChar),
42 CSRSS_DEFINE_API(WRITE_CONSOLE_OUTPUT_ATTRIB, CsrWriteConsoleOutputAttrib),
43 CSRSS_DEFINE_API(FILL_OUTPUT_ATTRIB, CsrFillOutputAttrib),
44 CSRSS_DEFINE_API(GET_CURSOR_INFO, CsrGetCursorInfo),
45 CSRSS_DEFINE_API(SET_CURSOR_INFO, CsrSetCursorInfo),
46 CSRSS_DEFINE_API(SET_ATTRIB, CsrSetTextAttrib),
47 CSRSS_DEFINE_API(GET_CONSOLE_MODE, CsrGetConsoleMode),
48 CSRSS_DEFINE_API(SET_CONSOLE_MODE, CsrSetConsoleMode),
49 CSRSS_DEFINE_API(CREATE_SCREEN_BUFFER, CsrCreateScreenBuffer),
50 CSRSS_DEFINE_API(SET_SCREEN_BUFFER, CsrSetScreenBuffer),
51 CSRSS_DEFINE_API(SET_TITLE, CsrSetTitle),
52 CSRSS_DEFINE_API(GET_TITLE, CsrGetTitle),
53 CSRSS_DEFINE_API(WRITE_CONSOLE_OUTPUT, CsrWriteConsoleOutput),
54 CSRSS_DEFINE_API(FLUSH_INPUT_BUFFER, CsrFlushInputBuffer),
55 CSRSS_DEFINE_API(SCROLL_CONSOLE_SCREEN_BUFFER, CsrScrollConsoleScreenBuffer),
56 CSRSS_DEFINE_API(READ_CONSOLE_OUTPUT_CHAR, CsrReadConsoleOutputChar),
57 CSRSS_DEFINE_API(READ_CONSOLE_OUTPUT_ATTRIB, CsrReadConsoleOutputAttrib),
58 CSRSS_DEFINE_API(GET_NUM_INPUT_EVENTS, CsrGetNumberOfConsoleInputEvents),
59 CSRSS_DEFINE_API(EXIT_REACTOS, CsrExitReactos),
60 CSRSS_DEFINE_API(PEEK_CONSOLE_INPUT, CsrPeekConsoleInput),
61 CSRSS_DEFINE_API(READ_CONSOLE_OUTPUT, CsrReadConsoleOutput),
62 CSRSS_DEFINE_API(WRITE_CONSOLE_INPUT, CsrWriteConsoleInput),
63 CSRSS_DEFINE_API(SETGET_CONSOLE_HW_STATE, CsrHardwareStateProperty),
64 CSRSS_DEFINE_API(GET_CONSOLE_WINDOW, CsrGetConsoleWindow),
65 CSRSS_DEFINE_API(CREATE_DESKTOP, CsrCreateDesktop),
66 CSRSS_DEFINE_API(SHOW_DESKTOP, CsrShowDesktop),
67 CSRSS_DEFINE_API(HIDE_DESKTOP, CsrHideDesktop),
68 CSRSS_DEFINE_API(SET_CONSOLE_ICON, CsrSetConsoleIcon),
69 CSRSS_DEFINE_API(SET_LOGON_NOTIFY_WINDOW, CsrSetLogonNotifyWindow),
70 CSRSS_DEFINE_API(REGISTER_LOGON_PROCESS, CsrRegisterLogonProcess),
71 CSRSS_DEFINE_API(GET_CONSOLE_CP, CsrGetConsoleCodePage),
72 CSRSS_DEFINE_API(SET_CONSOLE_CP, CsrSetConsoleCodePage),
73 CSRSS_DEFINE_API(GET_CONSOLE_OUTPUT_CP, CsrGetConsoleOutputCodePage),
74 CSRSS_DEFINE_API(SET_CONSOLE_OUTPUT_CP, CsrSetConsoleOutputCodePage),
75 CSRSS_DEFINE_API(GET_PROCESS_LIST, CsrGetProcessList),
76 CSRSS_DEFINE_API(ADD_CONSOLE_ALIAS, CsrAddConsoleAlias),
77 CSRSS_DEFINE_API(GET_CONSOLE_ALIAS, CsrGetConsoleAlias),
78 CSRSS_DEFINE_API(GET_ALL_CONSOLE_ALIASES, CsrGetAllConsoleAliases),
79 CSRSS_DEFINE_API(GET_ALL_CONSOLE_ALIASES_LENGTH, CsrGetAllConsoleAliasesLength),
80 CSRSS_DEFINE_API(GET_CONSOLE_ALIASES_EXES, CsrGetConsoleAliasesExes),
81 CSRSS_DEFINE_API(GET_CONSOLE_ALIASES_EXES_LENGTH, CsrGetConsoleAliasesExesLength),
82 CSRSS_DEFINE_API(GENERATE_CTRL_EVENT, CsrGenerateCtrlEvent),
83 CSRSS_DEFINE_API(SET_SCREEN_BUFFER_SIZE, CsrSetScreenBufferSize),
84 { 0, 0, NULL }
85 };
86
87 /* FUNCTIONS *****************************************************************/
88
89 BOOL WINAPI
90 DllMain(HANDLE hDll,
91 DWORD dwReason,
92 LPVOID lpReserved)
93 {
94 if (DLL_PROCESS_ATTACH == dwReason)
95 {
96 Win32CsrDllHandle = hDll;
97 InitializeAppSwitchHook();
98 }
99
100 return TRUE;
101 }
102
103 NTSTATUS FASTCALL
104 Win32CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc,
105 PVOID Context)
106 {
107 return (CsrExports.CsrEnumProcessesProc)(EnumProc, Context);
108 }
109
110 static BOOL WINAPI
111 Win32CsrInitComplete(void)
112 {
113 PrivateCsrssInitialized();
114
115 return TRUE;
116 }
117
118 BOOL WINAPI
119 Win32CsrInitialization(PCSRSS_API_DEFINITION *ApiDefinitions,
120 PCSRPLUGIN_SERVER_PROCS ServerProcs,
121 PCSRSS_EXPORTED_FUNCS Exports,
122 HANDLE CsrssApiHeap)
123 {
124 NTSTATUS Status;
125 CsrExports = *Exports;
126 Win32CsrApiHeap = CsrssApiHeap;
127
128 Status = NtUserInitialize(0 ,NULL, NULL);
129
130 PrivateCsrssManualGuiCheck(0);
131 CsrInitConsoleSupport();
132
133 *ApiDefinitions = Win32CsrApiDefinitions;
134 ServerProcs->InitCompleteProc = Win32CsrInitComplete;
135 ServerProcs->HardErrorProc = Win32CsrHardError;
136 ServerProcs->ProcessInheritProc = Win32CsrDuplicateHandleTable;
137 ServerProcs->ProcessDeletedProc = Win32CsrReleaseConsole;
138
139 return TRUE;
140 }
141
142 /* EOF */