On FAT16 partitions smaller than 128MB, the cluster size is 2048, which is
[reactos.git] / reactos / subsys / smss / smss.c
index 43c64e4..4aad777 100644 (file)
@@ -1,9 +1,9 @@
 /* $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.
  *
  * --------------------------------------------------------------------
  */
 #include "smss.h"
-//#include <ntdll/rtl.h>
-#include <rosrtl/string.h>
+#include <reactos/buildno.h>
 
 #define NDEBUG
 #include <debug.h>
 
+ULONG SmSsProcessId = 0;
+
 /* Native image's entry point */
 
-VOID STDCALL
-NtProcessStartup(PPEB Peb)
+NTSTATUS __cdecl _main(int argc,
+                       char *argv[],
+                       char *envp[],
+                       ULONG DebugFlag)
 {
-  NTSTATUS Status;
+  NTSTATUS Status = STATUS_SUCCESS;
+  PROCESS_BASIC_INFORMATION PBI = {0};
 
-  Status = InitSessionManager(Children);
+  /* 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))
     {
       int i;
@@ -59,7 +76,7 @@ NtProcessStartup(PPEB Peb)
                                    NULL);      /* NULL for infinite */
   if (!NT_SUCCESS(Status))
     {
-      DPRINT1("SM: NtWaitForMultipleObjects failed!\n");
+      DPRINT1("SM: NtWaitForMultipleObjects failed! (Status=0x%08lx)\n", Status);
     }
   else
     {
@@ -72,6 +89,8 @@ ByeBye:
                   0,0,0,0,0);
 
 //   NtTerminateProcess(NtCurrentProcess(), 0);
+#endif
+       return NtTerminateThread(NtCurrentThread(), Status);
 }
 
 /* EOF */