2 * PROJECT: ReactOS Session Manager
3 * LICENSE: GPL v2 or later - See COPYING in the top level directory
4 * FILE: base/system/smss/init.c
5 * PURPOSE: Initialization.
6 * PROGRAMMERS: ReactOS Development Team
9 /* INCLUDES ******************************************************************/
16 /* FUNCTIONS ****************************************************************/
18 typedef NTSTATUS (* SM_INIT_ROUTINE
)(VOID
);
22 SM_INIT_ROUTINE EntryPoint
;
25 {TRUE
, SmCreateHeap
, "create private heap, aborting"},
26 {TRUE
, SmCreateObjectDirectories
, "create object directories"},
27 {TRUE
, SmCreateApiPort
, "create \\SmApiPort"},
28 {TRUE
, SmCreateEnvironment
, "create the system environment"},
29 {TRUE
, SmSetEnvironmentVariables
, "set system environment variables"},
30 {TRUE
, SmInitDosDevices
, "create dos device links"},
31 {TRUE
, SmRunBootApplications
, "run boot applications"},
32 {TRUE
, SmProcessFileRenameList
, "process the file rename list"},
33 {FALSE
, SmLoadKnownDlls
, "preload system DLLs"},
34 {TRUE
, SmCreatePagingFiles
, "create paging files"},
35 {TRUE
, SmInitializeRegistry
, "initialize the registry"},
36 {FALSE
, SmUpdateEnvironment
, "update environment variables"},
37 {TRUE
, SmInitializeClientManagement
, "initialize client management"},
38 {TRUE
, SmLoadSubsystems
, "load subsystems"}
42 InitSessionManager(VOID
)
45 NTSTATUS Status
= STATUS_SUCCESS
;
47 for (i
=0; i
< (sizeof InitRoutine
/ sizeof InitRoutine
[0]); i
++)
49 Status
= InitRoutine
[i
].EntryPoint();
50 if(!NT_SUCCESS(Status
))
52 DPRINT1("SM: %s: failed to %s (Status=%lx)\n",
54 InitRoutine
[i
].ErrorMessage
,
56 if (InitRoutine
[i
].Required
)
62 return(STATUS_SUCCESS
);