-/* $Id: smss.c,v 1.14 2002/10/25 22:08:20 chorns Exp $
+/* $Id$
*
* smss.c - Session Manager
- *
+ *
* ReactOS Operating System
- *
+ *
* --------------------------------------------------------------------
*
* This software is free software; you can redistribute it and/or
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING.LIB. If not, write
* to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
- * MA 02139, USA.
+ * MA 02139, USA.
*
* --------------------------------------------------------------------
- *
- * 19990529 (Emanuele Aliberti)
- * Compiled successfully with egcs 1.1.2
*/
-#include <ddk/ntddk.h>
-
#include "smss.h"
+#include <reactos/buildno.h>
+#define NDEBUG
+#include <debug.h>
-void
-DisplayString(LPCWSTR lpwString)
-{
- UNICODE_STRING us;
-
- RtlInitUnicodeString(&us, lpwString);
- NtDisplayString(&us);
-}
-
-
-void
-PrintString(char* fmt,...)
-{
- char buffer[512];
- va_list ap;
- UNICODE_STRING UnicodeString;
- ANSI_STRING AnsiString;
-
- va_start(ap, fmt);
- vsprintf(buffer, fmt, ap);
- va_end(ap);
-
- RtlInitAnsiString(&AnsiString, buffer);
- RtlAnsiStringToUnicodeString(&UnicodeString,
- &AnsiString,
- TRUE);
- NtDisplayString(&UnicodeString);
- RtlFreeUnicodeString(&UnicodeString);
-}
-
+ULONG SmSsProcessId = 0;
/* Native image's entry point */
-VOID STDCALL
-NtProcessStartup(PPEB Peb)
+NTSTATUS __cdecl _main(int argc,
+ char *argv[],
+ char *envp[],
+ ULONG DebugFlag)
{
- HANDLE Children[2]; /* csrss, winlogon */
- NTSTATUS Status;
-
- Status = InitSessionManager(Children);
+ NTSTATUS Status = STATUS_SUCCESS;
+ PROCESS_BASIC_INFORMATION PBI = {0};
+
+ /* Lookup yourself */
+ Status = NtQueryInformationProcess (NtCurrentProcess(),
+ ProcessBasicInformation,
+ & PBI,
+ sizeof PBI,
+ NULL);
+ if(NT_SUCCESS(Status))
+ {
+ SmSsProcessId = (ULONG) PBI.UniqueProcessId;
+ }
+ /* Initialize the system */
+ Status = InitSessionManager();
+ /* Watch required subsystems TODO */
+#if 0
if (!NT_SUCCESS(Status))
{
- PrintString("SM: Initialization failed!\n");
+ int i;
+ for (i=0; i < (sizeof Children / sizeof Children[0]); i++)
+ {
+ if (Children[i])
+ {
+ NtTerminateProcess(Children[i],0);
+ }
+ }
+ DPRINT1("SM: Initialization failed!\n");
goto ByeBye;
}
NULL); /* NULL for infinite */
if (!NT_SUCCESS(Status))
{
- PrintString("SM: NtWaitForMultipleObjects failed!\n");
+ DPRINT1("SM: NtWaitForMultipleObjects failed! (Status=0x%08lx)\n", Status);
}
else
{
- PrintString("SM: Process terminated!\n");
+ DPRINT1("SM: Process terminated!\n");
}
ByeBye:
0,0,0,0,0);
// NtTerminateProcess(NtCurrentProcess(), 0);
+#endif
+ return NtTerminateThread(NtCurrentThread(), Status);
}
/* EOF */