[CONSRV]
[reactos.git] / win32ss / user / consrv / init.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Console Server DLL
4 * FILE: win32ss/user/consrv/init.c
5 * PURPOSE: Initialization
6 * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
7 */
8
9 #include "consrv.h"
10 #include "conio.h"
11
12 #define NDEBUG
13 #include <debug.h>
14
15 HINSTANCE ConSrvDllInstance = NULL;
16 // HANDLE BaseApiPort = NULL;
17
18 /* Memory */
19 HANDLE ConSrvHeap = NULL; // Our own heap.
20 // HANDLE BaseSrvSharedHeap = NULL; // Shared heap with CSR. (CsrSrvSharedSectionHeap)
21 // PBASE_STATIC_SERVER_DATA BaseStaticServerData = NULL; // Data that we can share amongst processes. Initialized inside BaseSrvSharedHeap.
22
23 // Windows 2k3 tables, adapted from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
24 // plus a little bit of Windows 7. It is for testing purposes. After that I will add stubs.
25 // Some names are also deduced from the subsystems/win32/csrss/csrsrv/server.c ones.
26 PCSR_API_ROUTINE ConsoleServerApiDispatchTable[ConsolepMaxApiNumber] =
27 {
28 SrvOpenConsole,
29 SrvGetConsoleInput,
30 SrvWriteConsoleInput,
31 SrvReadConsoleOutput,
32 SrvWriteConsoleOutput,
33 SrvReadConsoleOutputString,
34 SrvWriteConsoleOutputString,
35 SrvFillConsoleOutput,
36 SrvGetConsoleMode,
37 // SrvGetConsoleNumberOfFonts,
38 SrvGetConsoleNumberOfInputEvents,
39 SrvGetConsoleScreenBufferInfo,
40 SrvGetConsoleCursorInfo,
41 // SrvGetConsoleMouseInfo,
42 // SrvGetConsoleFontInfo,
43 // SrvGetConsoleFontSize,
44 // SrvGetConsoleCurrentFont,
45 SrvSetConsoleMode,
46 SrvSetConsoleActiveScreenBuffer,
47 SrvFlushConsoleInputBuffer,
48 // SrvGetLargestConsoleWindowSize,
49 SrvSetConsoleScreenBufferSize,
50 SrvSetConsoleCursorPosition,
51 SrvSetConsoleCursorInfo,
52 // SrvSetConsoleWindowInfo,
53 SrvScrollConsoleScreenBuffer,
54 SrvSetConsoleTextAttribute,
55 // SrvSetConsoleFont,
56 SrvSetConsoleIcon,
57 SrvReadConsole,
58 SrvWriteConsole,
59 SrvDuplicateHandle,
60 // SrvGetHandleInformation,
61 // SrvSetHandleInformation,
62 SrvCloseHandle,
63 SrvVerifyConsoleIoHandle,
64 SrvAllocConsole,
65 SrvFreeConsole,
66 SrvGetConsoleTitle,
67 SrvSetConsoleTitle,
68 SrvCreateConsoleScreenBuffer,
69 // SrvInvalidateBitMapRect,
70 // SrvVDMConsoleOperation,
71 // SrvSetConsoleCursor,
72 // SrvShowConsoleCursor,
73 // SrvConsoleMenuControl,
74 // SrvSetConsolePalette,
75 // SrvSetConsoleDisplayMode,
76 // SrvRegisterConsoleVDM,
77 SrvGetConsoleHardwareState,
78 SrvSetConsoleHardwareState,
79 // SrvGetConsoleDisplayMode,
80 SrvAddConsoleAlias,
81 SrvGetConsoleAlias,
82 SrvGetConsoleAliasesLength,
83 SrvGetConsoleAliasExesLength,
84 SrvGetConsoleAliases,
85 SrvGetConsoleAliasExes,
86 SrvExpungeConsoleCommandHistory,
87 SrvSetConsoleNumberOfCommands,
88 SrvGetConsoleCommandHistoryLength,
89 SrvGetConsoleCommandHistory,
90 // SrvSetConsoleCommandHistoryMode,
91 SrvGetConsoleCP,
92 SrvSetConsoleCP,
93 // SrvSetConsoleKeyShortcuts,
94 // SrvSetConsoleMenuClose,
95 // SrvConsoleNotifyLastClose,
96 SrvGenerateConsoleCtrlEvent,
97 // SrvGetConsoleKeyboardLayoutName,
98 SrvGetConsoleWindow,
99 // SrvGetConsoleCharType,
100 // SrvSetConsoleLocalEUDC,
101 // SrvSetConsoleCursorMode,
102 // SrvGetConsoleCursorMode,
103 // SrvRegisterConsoleOS2,
104 // SrvSetConsoleOS2OemFormat,
105 // SrvGetConsoleNlsMode,
106 // SrvSetConsoleNlsMode,
107 // SrvRegisterConsoleIME,
108 // SrvUnregisterConsoleIME,
109 // SrvGetConsoleLangId,
110 // SrvAttachConsole,
111 SrvGetConsoleSelectionInfo,
112 SrvGetConsoleProcessList,
113 SrvGetConsoleHistory,
114 SrvSetConsoleHistory
115 };
116
117 BOOLEAN ConsoleServerApiServerValidTable[ConsolepMaxApiNumber] =
118 {
119 FALSE, // SrvOpenConsole,
120 FALSE, // SrvGetConsoleInput,
121 FALSE, // SrvWriteConsoleInput,
122 FALSE, // SrvReadConsoleOutput,
123 FALSE, // SrvWriteConsoleOutput,
124 FALSE, // SrvReadConsoleOutputString,
125 FALSE, // SrvWriteConsoleOutputString,
126 FALSE, // SrvFillConsoleOutput,
127 FALSE, // SrvGetConsoleMode,
128 // FALSE, // SrvGetConsoleNumberOfFonts,
129 FALSE, // SrvGetConsoleNumberOfInputEvents,
130 FALSE, // SrvGetConsoleScreenBufferInfo,
131 FALSE, // SrvGetConsoleCursorInfo,
132 // FALSE, // SrvGetConsoleMouseInfo,
133 // FALSE, // SrvGetConsoleFontInfo,
134 // FALSE, // SrvGetConsoleFontSize,
135 // FALSE, // SrvGetConsoleCurrentFont,
136 FALSE, // SrvSetConsoleMode,
137 FALSE, // SrvSetConsoleActiveScreenBuffer,
138 FALSE, // SrvFlushConsoleInputBuffer,
139 // FALSE, // SrvGetLargestConsoleWindowSize,
140 FALSE, // SrvSetConsoleScreenBufferSize,
141 FALSE, // SrvSetConsoleCursorPosition,
142 FALSE, // SrvSetConsoleCursorInfo,
143 // FALSE, // SrvSetConsoleWindowInfo,
144 FALSE, // SrvScrollConsoleScreenBuffer,
145 FALSE, // SrvSetConsoleTextAttribute,
146 // FALSE, // SrvSetConsoleFont,
147 FALSE, // SrvSetConsoleIcon,
148 FALSE, // SrvReadConsole,
149 FALSE, // SrvWriteConsole,
150 FALSE, // SrvDuplicateHandle,
151 // FALSE, // SrvGetHandleInformation,
152 // FALSE, // SrvSetHandleInformation,
153 FALSE, // SrvCloseHandle,
154 FALSE, // SrvVerifyConsoleIoHandle,
155 FALSE, // SrvAllocConsole,
156 FALSE, // SrvFreeConsole,
157 FALSE, // SrvGetConsoleTitle,
158 FALSE, // SrvSetConsoleTitle,
159 FALSE, // SrvCreateConsoleScreenBuffer,
160 // FALSE, // SrvInvalidateBitMapRect,
161 // FALSE, // SrvVDMConsoleOperation,
162 // FALSE, // SrvSetConsoleCursor,
163 // FALSE, // SrvShowConsoleCursor,
164 // FALSE, // SrvConsoleMenuControl,
165 // FALSE, // SrvSetConsolePalette,
166 // FALSE, // SrvSetConsoleDisplayMode,
167 // FALSE, // SrvRegisterConsoleVDM,
168 FALSE, // SrvGetConsoleHardwareState,
169 FALSE, // SrvSetConsoleHardwareState,
170 // TRUE, // SrvGetConsoleDisplayMode,
171 FALSE, // SrvAddConsoleAlias,
172 FALSE, // SrvGetConsoleAlias,
173 FALSE, // SrvGetConsoleAliasesLength,
174 FALSE, // SrvGetConsoleAliasExesLength,
175 FALSE, // SrvGetConsoleAliases,
176 FALSE, // SrvGetConsoleAliasExes,
177 FALSE, // SrvExpungeConsoleCommandHistory,
178 FALSE, // SrvSetConsoleNumberOfCommands,
179 FALSE, // SrvGetConsoleCommandHistoryLength,
180 FALSE, // SrvGetConsoleCommandHistory,
181 // FALSE, // SrvSetConsoleCommandHistoryMode,
182 FALSE, // SrvGetConsoleCP,
183 FALSE, // SrvSetConsoleCP,
184 // FALSE, // SrvSetConsoleKeyShortcuts,
185 // FALSE, // SrvSetConsoleMenuClose,
186 // FALSE, // SrvConsoleNotifyLastClose,
187 FALSE, // SrvGenerateConsoleCtrlEvent,
188 // FALSE, // SrvGetConsoleKeyboardLayoutName,
189 FALSE, // SrvGetConsoleWindow,
190 // FALSE, // SrvGetConsoleCharType,
191 // FALSE, // SrvSetConsoleLocalEUDC,
192 // FALSE, // SrvSetConsoleCursorMode,
193 // FALSE, // SrvGetConsoleCursorMode,
194 // FALSE, // SrvRegisterConsoleOS2,
195 // FALSE, // SrvSetConsoleOS2OemFormat,
196 // FALSE, // SrvGetConsoleNlsMode,
197 // FALSE, // SrvSetConsoleNlsMode,
198 // FALSE, // SrvRegisterConsoleIME,
199 // FALSE, // SrvUnregisterConsoleIME,
200 // FALSE, // SrvGetConsoleLangId,
201 // FALSE, // SrvAttachConsole,
202 FALSE, // SrvGetConsoleSelectionInfo,
203 FALSE, // SrvGetConsoleProcessList,
204 FALSE, // SrvGetConsoleHistory,
205 FALSE, // SrvSetConsoleHistory
206
207 // FALSE
208 };
209
210 PCHAR ConsoleServerApiNameTable[ConsolepMaxApiNumber] =
211 {
212 "OpenConsole",
213 "GetConsoleInput",
214 "WriteConsoleInput",
215 "ReadConsoleOutput",
216 "WriteConsoleOutput",
217 "ReadConsoleOutputString",
218 "WriteConsoleOutputString",
219 "FillConsoleOutput",
220 "GetConsoleMode",
221 // "GetConsoleNumberOfFonts",
222 "GetConsoleNumberOfInputEvents",
223 "GetConsoleScreenBufferInfo",
224 "GetConsoleCursorInfo",
225 // "GetConsoleMouseInfo",
226 // "GetConsoleFontInfo",
227 // "GetConsoleFontSize",
228 // "GetConsoleCurrentFont",
229 "SetConsoleMode",
230 "SetConsoleActiveScreenBuffer",
231 "FlushConsoleInputBuffer",
232 // "GetLargestConsoleWindowSize",
233 "SetConsoleScreenBufferSize",
234 "SetConsoleCursorPosition",
235 "SetConsoleCursorInfo",
236 // "SetConsoleWindowInfo",
237 "ScrollConsoleScreenBuffer",
238 "SetConsoleTextAttribute",
239 // "SetConsoleFont",
240 "SetConsoleIcon",
241 "ReadConsole",
242 "WriteConsole",
243 "DuplicateHandle",
244 // "GetHandleInformation",
245 // "SetHandleInformation",
246 "CloseHandle",
247 "VerifyConsoleIoHandle",
248 "AllocConsole",
249 "FreeConsole",
250 "GetConsoleTitle",
251 "SetConsoleTitle",
252 "CreateConsoleScreenBuffer",
253 // "InvalidateBitMapRect",
254 // "VDMConsoleOperation",
255 // "SetConsoleCursor",
256 // "ShowConsoleCursor",
257 // "ConsoleMenuControl",
258 // "SetConsolePalette",
259 // "SetConsoleDisplayMode",
260 // "RegisterConsoleVDM",
261 "GetConsoleHardwareState",
262 "SetConsoleHardwareState",
263 // "GetConsoleDisplayMode",
264 "AddConsoleAlias",
265 "GetConsoleAlias",
266 "GetConsoleAliasesLength",
267 "GetConsoleAliasExesLength",
268 "GetConsoleAliases",
269 "GetConsoleAliasExes",
270 "ExpungeConsoleCommandHistory",
271 "SetConsoleNumberOfCommands",
272 "GetConsoleCommandHistoryLength",
273 "GetConsoleCommandHistory",
274 // "SetConsoleCommandHistoryMode",
275 "GetConsoleCP",
276 "SetConsoleCP",
277 // "SetConsoleKeyShortcuts",
278 // "SetConsoleMenuClose",
279 // "ConsoleNotifyLastClose",
280 "GenerateConsoleCtrlEvent",
281 // "GetConsoleKeyboardLayoutName",
282 "GetConsoleWindow",
283 // "GetConsoleCharType",
284 // "SetConsoleLocalEUDC",
285 // "SetConsoleCursorMode",
286 // "GetConsoleCursorMode",
287 // "RegisterConsoleOS2",
288 // "SetConsoleOS2OemFormat",
289 // "GetConsoleNlsMode",
290 // "SetConsoleNlsMode",
291 // "RegisterConsoleIME",
292 // "UnregisterConsoleIME",
293 // "GetConsoleLangId",
294 // "AttachConsole",
295 "GetConsoleSelectionInfo",
296 "GetConsoleProcessList",
297 "GetConsoleHistory",
298 "SetConsoleHistory"
299
300 // NULL
301 };
302
303
304 /*
305 PCSR_API_ROUTINE Win32CsrApiDefinitions[] =
306 {
307 CsrGetHandle,
308 CsrGetHandle,
309 CsrCloseHandle,
310 CsrVerifyHandle,
311 CsrDuplicateHandle,
312 CsrGetInputWaitHandle,
313 CsrFillOutputChar,
314 CsrReadInputEvent,
315 CsrWriteConsoleOutputChar,
316 CsrWriteConsoleOutputAttrib,
317 CsrFillOutputAttrib,
318 CsrSetTextAttrib,
319 CsrWriteConsoleOutput,
320 CsrFlushInputBuffer,
321 CsrReadConsoleOutputChar,
322 CsrReadConsoleOutputAttrib,
323 CsrExitReactos,
324 CsrHardwareStateProperty,
325 CsrCreateDesktop,
326 CsrShowDesktop,
327 CsrHideDesktop,
328 CsrSetLogonNotifyWindow,
329 CsrRegisterLogonProcess,
330 CsrGenerateCtrlEvent,
331 };
332
333 static CSRSS_API_DEFINITION Win32CsrApiDefinitions[] =
334 {
335 CSRSS_DEFINE_API(GET_INPUT_HANDLE, CsrGetHandle),
336 CSRSS_DEFINE_API(GET_OUTPUT_HANDLE, CsrGetHandle),
337 CSRSS_DEFINE_API(CLOSE_HANDLE, CsrCloseHandle),
338 CSRSS_DEFINE_API(VERIFY_HANDLE, CsrVerifyHandle),
339 CSRSS_DEFINE_API(DUPLICATE_HANDLE, CsrDuplicateHandle),
340 CSRSS_DEFINE_API(GET_INPUT_WAIT_HANDLE, CsrGetInputWaitHandle),
341 CSRSS_DEFINE_API(WRITE_CONSOLE, CsrWriteConsole),
342 CSRSS_DEFINE_API(READ_CONSOLE, CsrReadConsole),
343 CSRSS_DEFINE_API(ALLOC_CONSOLE, CsrAllocConsole),
344 CSRSS_DEFINE_API(FREE_CONSOLE, CsrFreeConsole),
345 CSRSS_DEFINE_API(SCREEN_BUFFER_INFO, CsrGetScreenBufferInfo),
346 CSRSS_DEFINE_API(SET_CURSOR, CsrSetCursor),
347 CSRSS_DEFINE_API(FILL_OUTPUT, CsrFillOutputChar),
348 CSRSS_DEFINE_API(READ_INPUT, CsrReadInputEvent),
349 CSRSS_DEFINE_API(WRITE_CONSOLE_OUTPUT_CHAR, CsrWriteConsoleOutputChar),
350 CSRSS_DEFINE_API(WRITE_CONSOLE_OUTPUT_ATTRIB, CsrWriteConsoleOutputAttrib),
351 CSRSS_DEFINE_API(FILL_OUTPUT_ATTRIB, CsrFillOutputAttrib),
352 CSRSS_DEFINE_API(GET_CURSOR_INFO, CsrGetCursorInfo),
353 CSRSS_DEFINE_API(SET_CURSOR_INFO, CsrSetCursorInfo),
354 CSRSS_DEFINE_API(SET_ATTRIB, CsrSetTextAttrib),
355 CSRSS_DEFINE_API(GET_CONSOLE_MODE, CsrGetConsoleMode),
356 CSRSS_DEFINE_API(SET_CONSOLE_MODE, CsrSetConsoleMode),
357 CSRSS_DEFINE_API(CREATE_SCREEN_BUFFER, CsrCreateScreenBuffer),
358 CSRSS_DEFINE_API(SET_SCREEN_BUFFER, CsrSetScreenBuffer),
359 CSRSS_DEFINE_API(SET_TITLE, CsrSetTitle),
360 CSRSS_DEFINE_API(GET_TITLE, CsrGetTitle),
361 CSRSS_DEFINE_API(WRITE_CONSOLE_OUTPUT, CsrWriteConsoleOutput),
362 CSRSS_DEFINE_API(FLUSH_INPUT_BUFFER, CsrFlushInputBuffer),
363 CSRSS_DEFINE_API(SCROLL_CONSOLE_SCREEN_BUFFER, CsrScrollConsoleScreenBuffer),
364 CSRSS_DEFINE_API(READ_CONSOLE_OUTPUT_CHAR, CsrReadConsoleOutputChar),
365 CSRSS_DEFINE_API(READ_CONSOLE_OUTPUT_ATTRIB, CsrReadConsoleOutputAttrib),
366 CSRSS_DEFINE_API(GET_NUM_INPUT_EVENTS, CsrGetNumberOfConsoleInputEvents),
367 CSRSS_DEFINE_API(EXIT_REACTOS, CsrExitReactos),
368 CSRSS_DEFINE_API(PEEK_CONSOLE_INPUT, CsrPeekConsoleInput),
369 CSRSS_DEFINE_API(READ_CONSOLE_OUTPUT, CsrReadConsoleOutput),
370 CSRSS_DEFINE_API(WRITE_CONSOLE_INPUT, CsrWriteConsoleInput),
371 CSRSS_DEFINE_API(SETGET_CONSOLE_HW_STATE, CsrHardwareStateProperty),
372 CSRSS_DEFINE_API(GET_CONSOLE_WINDOW, CsrGetConsoleWindow),
373 CSRSS_DEFINE_API(CREATE_DESKTOP, CsrCreateDesktop),
374 CSRSS_DEFINE_API(SHOW_DESKTOP, CsrShowDesktop),
375 CSRSS_DEFINE_API(HIDE_DESKTOP, CsrHideDesktop),
376 CSRSS_DEFINE_API(SET_CONSOLE_ICON, CsrSetConsoleIcon),
377 CSRSS_DEFINE_API(SET_LOGON_NOTIFY_WINDOW, CsrSetLogonNotifyWindow),
378 CSRSS_DEFINE_API(REGISTER_LOGON_PROCESS, CsrRegisterLogonProcess),
379 CSRSS_DEFINE_API(GET_CONSOLE_CP, CsrGetConsoleCodePage),
380 CSRSS_DEFINE_API(SET_CONSOLE_CP, CsrSetConsoleCodePage),
381 CSRSS_DEFINE_API(GET_CONSOLE_OUTPUT_CP, CsrGetConsoleOutputCodePage),
382 CSRSS_DEFINE_API(SET_CONSOLE_OUTPUT_CP, CsrSetConsoleOutputCodePage),
383 CSRSS_DEFINE_API(GET_PROCESS_LIST, CsrGetProcessList),
384 CSRSS_DEFINE_API(ADD_CONSOLE_ALIAS, CsrAddConsoleAlias),
385 CSRSS_DEFINE_API(GET_CONSOLE_ALIAS, CsrGetConsoleAlias),
386 CSRSS_DEFINE_API(GET_ALL_CONSOLE_ALIASES, CsrGetAllConsoleAliases),
387 CSRSS_DEFINE_API(GET_ALL_CONSOLE_ALIASES_LENGTH, CsrGetAllConsoleAliasesLength),
388 CSRSS_DEFINE_API(GET_CONSOLE_ALIASES_EXES, CsrGetConsoleAliasesExes),
389 CSRSS_DEFINE_API(GET_CONSOLE_ALIASES_EXES_LENGTH, CsrGetConsoleAliasesExesLength),
390 CSRSS_DEFINE_API(GENERATE_CTRL_EVENT, CsrGenerateCtrlEvent),
391 CSRSS_DEFINE_API(SET_SCREEN_BUFFER_SIZE, CsrSetScreenBufferSize),
392 CSRSS_DEFINE_API(GET_CONSOLE_SELECTION_INFO, CsrGetConsoleSelectionInfo),
393 CSRSS_DEFINE_API(GET_COMMAND_HISTORY_LENGTH, CsrGetCommandHistoryLength),
394 CSRSS_DEFINE_API(GET_COMMAND_HISTORY, CsrGetCommandHistory),
395 CSRSS_DEFINE_API(EXPUNGE_COMMAND_HISTORY, CsrExpungeCommandHistory),
396 CSRSS_DEFINE_API(SET_HISTORY_NUMBER_COMMANDS, CsrSetHistoryNumberCommands),
397 CSRSS_DEFINE_API(GET_HISTORY_INFO, CsrGetHistoryInfo),
398 CSRSS_DEFINE_API(SET_HISTORY_INFO, CsrSetHistoryInfo),
399 { 0, 0, NULL }
400 };
401 */
402
403
404 /* FUNCTIONS ******************************************************************/
405
406 /*
407 VOID WINAPI ConsoleStaticServerThread(PVOID x)
408 {
409 // NTSTATUS Status = STATUS_SUCCESS;
410 PPORT_MESSAGE Request = (PPORT_MESSAGE)x;
411 PPORT_MESSAGE Reply = NULL;
412 ULONG MessageType = 0;
413
414 DPRINT("BASESRV: %s called\n", __FUNCTION__);
415
416 MessageType = Request->u2.s2.Type;
417 DPRINT("BASESRV: %s received a message (Type=%d)\n",
418 __FUNCTION__, MessageType);
419 switch (MessageType)
420 {
421 default:
422 Reply = Request;
423 /\* Status = *\/ NtReplyPort(BaseApiPort, Reply);
424 break;
425 }
426 }
427 */
428
429 CSR_SERVER_DLL_INIT(ConServerDllInitialization)
430 {
431 /*
432 NTSTATUS Status = STATUS_SUCCESS;
433
434 DPRINT("BASSRV: %s(%ld,...) called\n", __FUNCTION__, ArgumentCount);
435
436 // Get the listening port from csrsrv.dll
437 BaseApiPort = CsrQueryApiPort();
438 if (BaseApiPort == NULL) return STATUS_UNSUCCESSFUL;
439
440 // Register our message dispatcher
441 Status = CsrAddStaticServerThread(ConsoleStaticServerThread);
442 if (NT_SUCCESS(Status))
443 {
444 //TODO initialize the BASE server
445 }
446 return STATUS_SUCCESS;
447 */
448
449 /* Initialize memory */
450 ConSrvHeap = RtlGetProcessHeap(); // Initialize our own heap.
451 // BaseSrvSharedHeap = LoadedServerDll->SharedSection; // Get the CSR shared heap.
452 // LoadedServerDll->SharedSection = BaseStaticServerData;
453
454 CsrInitConsoleSupport();
455
456 /* Setup the DLL Object */
457 LoadedServerDll->ApiBase = CONSRV_FIRST_API_NUMBER;
458 LoadedServerDll->HighestApiSupported = ConsolepMaxApiNumber;
459 LoadedServerDll->DispatchTable = ConsoleServerApiDispatchTable;
460 LoadedServerDll->ValidTable = ConsoleServerApiServerValidTable;
461 LoadedServerDll->NameTable = ConsoleServerApiNameTable;
462 LoadedServerDll->SizeOfProcessData = sizeof(CONSOLE_PROCESS_DATA);
463 LoadedServerDll->ConnectCallback = ConsoleConnect;
464 LoadedServerDll->DisconnectCallback = ConsoleDisconnect;
465 LoadedServerDll->NewProcessCallback = ConsoleNewProcess;
466 // LoadedServerDll->HardErrorCallback = Win32CsrHardError;
467
468 /* All done */
469 return STATUS_SUCCESS;
470 }
471
472 BOOL
473 WINAPI
474 DllMain(IN HINSTANCE hInstanceDll,
475 IN DWORD dwReason,
476 IN LPVOID lpReserved)
477 {
478 UNREFERENCED_PARAMETER(dwReason);
479 UNREFERENCED_PARAMETER(lpReserved);
480
481 if (DLL_PROCESS_ATTACH == dwReason)
482 {
483 ConSrvDllInstance = hInstanceDll;
484 }
485
486 return TRUE;
487 }
488
489 /* EOF */