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);