1 /* $Id: init.c,v 1.5 2000/02/27 02:11:54 ekohl Exp $
3 * reactos/subsys/csrss/init.c
5 * Initialize the CSRSS subsystem server process.
7 * ReactOS Operating System
11 /* INCLUDES ******************************************************************/
13 #include <ddk/ntddk.h>
14 #include <ntdll/rtl.h>
15 #include <csrss/csrss.h>
19 /* GLOBALS ******************************************************************/
22 * Server's named ports.
24 static HANDLE ApiPortHandle
;
27 HANDLE CsrInitEvent
= INVALID_HANDLE_VALUE
;
28 HANDLE CsrHeap
= INVALID_HANDLE_VALUE
;
30 HANDLE CsrObjectDirectory
= INVALID_HANDLE_VALUE
;
31 HANDLE CsrApiPort
= INVALID_HANDLE_VALUE
;
32 HANDLE CsrSbApiPort
= INVALID_HANDLE_VALUE
;
34 UNICODE_STRING CsrDirectoryName
;
44 OBJECT_ATTRIBUTES Attributes
;
45 ANSI_STRING AnsiString
;
49 DbgPrint ("Arguments: %ld\n", ArgumentCount
);
50 for (i
= 0; i
< ArgumentCount
; i
++)
52 DbgPrint ("Argument %ld: %S\n", i
, ArgumentArray
[i
]);
56 /* create object directory ('\Windows') */
57 RtlCreateUnicodeString (&CsrDirectoryName
,
60 InitializeObjectAttributes (&Attributes
,
66 Status
= NtCreateDirectoryObject(&CsrObjectDirectory
,
74 /**********************************************************************
76 * CsrServerInitialization
79 * Create a directory object (\windows) and two named LPC ports:
82 * 2. \windows\SbApiPort
85 * TRUE: Initialization OK; otherwise FALSE.
89 CsrServerInitialization (
95 OBJECT_ATTRIBUTES ObAttributes
;
96 UNICODE_STRING PortName
;
98 Status
= CsrParseCommandLine (ArgumentCount
, ArgumentArray
);
99 if (!NT_SUCCESS(Status
))
101 PrintString("Unable to parse the command line (Status: %x)\n", Status
);
105 /* NEW NAMED PORT: \ApiPort */
106 RtlInitUnicodeString(&PortName
, L
"\\Windows\\ApiPort");
107 InitializeObjectAttributes(&ObAttributes
,
113 Status
= NtCreatePort(&ApiPortHandle
,
118 if (!NT_SUCCESS(Status
))
120 PrintString("Unable to create \\ApiPort (Status %x)\n", Status
);
124 Status
= RtlCreateUserThread(NtCurrentProcess(),
130 (PTHREAD_START_ROUTINE
)Thread_Api
,
134 if (!NT_SUCCESS(Status
))
136 PrintString("Unable to create server thread\n");
137 NtClose(ApiPortHandle
);