[KMTESTS:NPFS]
[reactos.git] / rossubsys / os2 / server / server.c
1 /* $Id$
2 *
3 * server.c - OS/2 Enviroment Subsystem Server - Initialization
4 *
5 * ReactOS Operating System
6 *
7 * --------------------------------------------------------------------
8 *
9 * This software is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of the
12 * License, or (at your option) any later version.
13 *
14 * This software is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this software; see the file COPYING.LIB. If not, write
21 * to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
22 * MA 02139, USA.
23 *
24 * --------------------------------------------------------------------
25 */
26 #include "os2srv.h"
27
28 //#define NDEBUG
29 #include <debug.h>
30
31 HANDLE Os2ApiPort = NULL;
32
33 /**********************************************************************
34 * NAME PRIVATE
35 * Os2StaticServerThread/1
36 */
37 VOID STDCALL Os2StaticServerThread (PVOID x)
38 {
39 NTSTATUS Status = STATUS_SUCCESS;
40 PPORT_MESSAGE Request = (PPORT_MESSAGE) x;
41 PPORT_MESSAGE Reply = NULL;
42 ULONG MessageType = 0;
43
44 DPRINT("VMSSRV: %s called\n", __FUNCTION__);
45
46 MessageType = Request->u2.s2.Type;
47 DPRINT("VMSSRV: %s received a message (Type=%d)\n",
48 __FUNCTION__, MessageType);
49 switch (MessageType)
50 {
51 default:
52 Reply = Request;
53 Status = NtReplyPort (Os2ApiPort, Reply);
54 break;
55 }
56 }
57
58 /*=====================================================================
59 * PUBLIC API
60 *===================================================================*/
61
62 NTSTATUS STDCALL ServerDllInitialization (ULONG ArgumentCount,
63 LPWSTR *Argument)
64 {
65 NTSTATUS Status = STATUS_SUCCESS;
66
67 DPRINT("VMSSRV: %s called\n", __FUNCTION__);
68
69 // Get the listening port from csrsrv.dll
70 Os2ApiPort = CsrQueryApiPort ();
71 if (NULL == Os2ApiPort)
72 {
73 return STATUS_UNSUCCESSFUL;
74 }
75 // Register our message dispatcher
76 Status = CsrAddStaticServerThread (Os2StaticServerThread);
77 if (NT_SUCCESS(Status))
78 {
79 //TODO: perform the real OS/2 server internal initialization here
80 }
81 return Status;
82 }
83
84 /* EOF */