SM some simple work (wip)
Modified: trunk/reactos/subsys/smss/client.c
Modified: trunk/reactos/subsys/smss/init.c
Modified: trunk/reactos/subsys/smss/initobdir.c
Modified: trunk/reactos/subsys/smss/smss.c
Modified: trunk/reactos/subsys/smss/smss.h

Modified: trunk/reactos/subsys/smss/client.c
--- trunk/reactos/subsys/smss/client.c	2005-02-26 23:21:58 UTC (rev 13761)
+++ trunk/reactos/subsys/smss/client.c	2005-02-26 23:22:48 UTC (rev 13762)
@@ -169,6 +169,8 @@
 	 * Initialize the client data
 	 */
 	pClient->SubsystemId = ConnectData->Subsystem;
+	/* SM auto-initializes; other subsystems are required to call
+	 * SM_API_COMPLETE_SESSION via SMDLL. */
 	pClient->Initialized = (IMAGE_SUBSYSTEM_NATIVE == pClient->SubsystemId);
 	if (SbApiPortNameSize > 0)
 	{

Modified: trunk/reactos/subsys/smss/init.c
--- trunk/reactos/subsys/smss/init.c	2005-02-26 23:21:58 UTC (rev 13761)
+++ trunk/reactos/subsys/smss/init.c	2005-02-26 23:22:48 UTC (rev 13762)
@@ -36,14 +36,14 @@
 static NTSTATUS
 SmpSignalInitEvent(VOID)
 {
-  NTSTATUS Status;
-  OBJECT_ATTRIBUTES ObjectAttributes;
-  UNICODE_STRING UnicodeString;
-  HANDLE ReactOSInitEvent;
+  NTSTATUS          Status = STATUS_SUCCESS;
+  OBJECT_ATTRIBUTES ObjectAttributes = {0};
+  UNICODE_STRING    EventName ={0};
+  HANDLE            ReactOSInitEvent = NULL;
 
-  RtlRosInitUnicodeStringFromLiteral(&UnicodeString, L"\\ReactOSInitDone");
+  RtlInitUnicodeString (& EventName, L"\\ReactOSInitDone");
   InitializeObjectAttributes(&ObjectAttributes,
-    &UnicodeString,
+    & EventName,
     EVENT_ALL_ACCESS,
     0,
     NULL);

Modified: trunk/reactos/subsys/smss/initobdir.c
--- trunk/reactos/subsys/smss/initobdir.c	2005-02-26 23:21:58 UTC (rev 13761)
+++ trunk/reactos/subsys/smss/initobdir.c	2005-02-26 23:22:48 UTC (rev 13762)
@@ -23,8 +23,6 @@
  *
  * --------------------------------------------------------------------
  */
-
-
 #include "smss.h"
 
 #define NDEBUG
@@ -82,7 +80,7 @@
   QueryTable[0].QueryRoutine = SmpObjectDirectoryQueryRoutine;
 
   Status = RtlQueryRegistryValues(RTL_REGISTRY_CONTROL,
-				  L"\\Session Manager",
+				  SM_REGISTRY_ROOT_NAME,
 				  QueryTable,
 				  NULL,
 				  NULL);

Modified: trunk/reactos/subsys/smss/smss.c
--- trunk/reactos/subsys/smss/smss.c	2005-02-26 23:21:58 UTC (rev 13761)
+++ trunk/reactos/subsys/smss/smss.c	2005-02-26 23:22:48 UTC (rev 13762)
@@ -30,18 +30,32 @@
 #define NDEBUG
 #include <debug.h>
 
+HANDLE SmSsProcessId = 0;
+
 /* Native image's entry point */
 
 VOID STDCALL
 NtProcessStartup(PPEB Peb)
 {
   NTSTATUS Status;
-
+  PROCESS_BASIC_INFORMATION PBI = {0};
+  
   DisplayString(L"SMSS\n");
   PrintString("ReactOS Session Manager %s (Build %s)\n",
 	     KERNEL_RELEASE_STR,
 	     KERNEL_VERSION_BUILD_STR);
 
+  /* Lookup yourself */
+  Status = NtQueryInformationProcess (NtCurrentProcess(),
+		    		      ProcessBasicInformation,
+				      & PBI,
+				      sizeof PBI,
+      				      NULL);
+  if(NT_SUCCESS(Status))
+  {
+	  SmSsProcessId = PBI.UniqueProcessId;
+  }
+  /* Initialize the system */
   Status = InitSessionManager();
   if (!NT_SUCCESS(Status))
     {
@@ -64,7 +78,7 @@
 				    NULL);	/* NULL for infinite */
   if (!NT_SUCCESS(Status))
     {
-      DPRINT1("SM: NtWaitForMultipleObjects failed!\n");
+      DPRINT1("SM: NtWaitForMultipleObjects failed! (Status=0x%08lx)\n", Status);
     }
   else
     {

Modified: trunk/reactos/subsys/smss/smss.h
--- trunk/reactos/subsys/smss/smss.h	2005-02-26 23:21:58 UTC (rev 13761)
+++ trunk/reactos/subsys/smss/smss.h	2005-02-26 23:22:48 UTC (rev 13762)
@@ -9,6 +9,9 @@
 #define CHILD_CSRSS     0
 #define CHILD_WINLOGON  1
 
+/* smss.c */
+extern HANDLE SmSsProcessId;
+
 /* init.c */
 NTSTATUS InitSessionManager(VOID);