2 * PROJECT: ReactOS Session Manager
3 * LICENSE: GPL v2 or later - See COPYING in the top level directory
4 * FILE: base/system/smss/smss.c
5 * PURPOSE: Initialization routine.
6 * PROGRAMMERS: ReactOS Development Team
9 /* INCLUDES ******************************************************************/
11 #include <reactos/buildno.h>
16 ULONG SmSsProcessId
= 0;
18 /* Native image's entry point */
20 NTSTATUS __cdecl
_main(int argc
,
25 NTSTATUS Status
= STATUS_SUCCESS
;
26 PROCESS_BASIC_INFORMATION PBI
= {0};
29 Status
= NtQueryInformationProcess (NtCurrentProcess(),
30 ProcessBasicInformation
,
34 if(NT_SUCCESS(Status
))
36 SmSsProcessId
= (ULONG
) PBI
.UniqueProcessId
;
38 /* Initialize the system */
39 Status
= InitSessionManager();
40 /* Watch required subsystems TODO */
42 if (!NT_SUCCESS(Status
))
45 for (i
=0; i
< (sizeof Children
/ sizeof Children
[0]); i
++)
49 NtTerminateProcess(Children
[i
],0);
52 DPRINT1("SM: Initialization failed!\n");
56 Status
= NtWaitForMultipleObjects(((LONG
) sizeof(Children
) / sizeof(HANDLE
)),
60 NULL
); /* NULL for infinite */
61 if (!NT_SUCCESS(Status
))
63 DPRINT1("SM: NtWaitForMultipleObjects failed! (Status=0x%08lx)\n", Status
);
67 DPRINT1("SM: Process terminated!\n");
71 /* Raise a hard error (crash the system/BSOD) */
72 NtRaiseHardError(STATUS_SYSTEM_PROCESS_TERMINATED
,
75 // NtTerminateProcess(NtCurrentProcess(), 0);
77 return NtTerminateThread(NtCurrentThread(), Status
);