SMDLL + SMLIB (static code in SMSS.EXE) SM now self registers for IMAGE_SUBSYSTEM_NATIVE. Modified: trunk/reactos/Makefile Modified: trunk/reactos/include/sm/helper.h Deleted: trunk/reactos/lib/smdll/compses.c Deleted: trunk/reactos/lib/smdll/connect.c Deleted: trunk/reactos/lib/smdll/execpgm.c Modified: trunk/reactos/lib/smdll/makefile Added: trunk/reactos/lib/smdll/query.c Modified: trunk/reactos/lib/smdll/smdll.def Added: trunk/reactos/lib/smlib/ Added: trunk/reactos/lib/smlib/compses.c Added: trunk/reactos/lib/smlib/connect.c Added: trunk/reactos/lib/smlib/execpgm.c Added: trunk/reactos/lib/smlib/makefile Modified: trunk/reactos/subsys/smss/initss.c Modified: trunk/reactos/subsys/smss/makefile _____
Modified: trunk/reactos/Makefile --- trunk/reactos/Makefile 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/Makefile 2005-03-14 22:38:12 UTC (rev 14080) @@ -61,8 +61,8 @@
DLLS = acledit aclui advapi32 advpack cabinet cards comctl32 crtdll comdlg32 d3d8thk dbghelp expat fmifs freetype \ gdi32 gdiplus glu32 hid imagehlp imm32 iphlpapi kernel32 lzexpand mesa32 midimap mmdrv mpr msacm msafd \ msgina msi msimg32 msvcrt20 msvideo mswsock netapi32 ntdll ole32 oleaut32 oledlg olepro32 opengl32 \ - packet psapi riched20 richedit rpcrt4 samlib secur32 setupapi shell32 shlwapi smdll snmpapi syssetup \ - twain user32 userenv version wininet winmm winspool ws2help ws2_32 wsock32 wshirda dnsapi \ + packet psapi riched20 richedit rpcrt4 samlib secur32 setupapi shell32 shlwapi smlib smdll snmpapi \ + syssetup twain user32 userenv version wininet winmm winspool ws2help ws2_32 wsock32 wshirda dnsapi \ urlmon shdocvw dinput dinput8 dxdiagn devenum dsound lsasrv $(DLLS_KBD) $(DLLS_CPL) $(DLLS_SHELLEXT)
SUBSYS = smss win32k csrss ntvdm _____
Modified: trunk/reactos/include/sm/helper.h --- trunk/reactos/include/sm/helper.h 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/include/sm/helper.h 2005-03-14 22:38:12 UTC (rev 14080) @@ -3,21 +3,31 @@
/* $Id$ */
-/* smdll/connect.c */ +/* smlib/connect.c */ NTSTATUS STDCALL SmConnectApiPort (IN PUNICODE_STRING pSbApiPortName OPTIONAL, IN HANDLE hSbApiPort OPTIONAL, IN DWORD dwSubsystem OPTIONAL, /* pe.h */ IN OUT PHANDLE phSmApiPort); -/* smdll/compses.c */ +/* smlib/compses.c */ NTSTATUS STDCALL SmCompleteSession (IN HANDLE hSmApiPort, IN HANDLE hSbApiPort, IN HANDLE hApiPort); -/* smdll/execpgm.c */ +/* smlib/execpgm.c */ NTSTATUS STDCALL SmExecuteProgram (IN HANDLE hSmApiPort, IN PUNICODE_STRING Pgm ); +/* smdll/query.c */ +typedef enum { + SM_BASE_INFORMATION +} SM_INFORMATION_CLASS, *PSM_INFORMATION_CLASS;
+NTSTATUS STDCALL +SmQuery (IN HANDLE SmApiPort, + IN SM_INFORMATION_CLASS SmInformationClass, + IN OUT PVOID Data, + IN OUT PULONG DataLength); + #endif /* ndef INCLUDE_SM_HELPER_H */ _____
Deleted: trunk/reactos/lib/smdll/compses.c --- trunk/reactos/lib/smdll/compses.c 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/lib/smdll/compses.c 2005-03-14 22:38:12 UTC (rev 14080) @@ -1,64 +0,0 @@
-/* $Id$ - * - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS system libraries - * FILE: lib/smlib/compses.c - * PURPOSE: Call SM API SM_API_COMPLETE_SESSION - */ -#define NTOS_MODE_USER -#include <ntos.h> -#include <sm/api.h> -#include <sm/helper.h> - -#define NDEBUG -#include <debug.h> - -/********************************************************************** - * NAME EXPORTED - * SmCompleteSession/3 - * - * DESCRIPTION - * This function is called by an environment subsystem server to - * tell the SM it finished initialization phase and is ready to - * manage processes it registered for (SmConnectApiPort). - * - * ARGUMENTS - * hSmApiPort: port handle returned by SmConnectApiPort; - * hSbApiPort: call back API port of the subsystem (handle); - * hApiPort : API port of the subsystem (handle). - * - * RETURN VALUE - * Success status as handed by the SM reply; otherwise a failure - * status code. - */ -NTSTATUS STDCALL -SmCompleteSession (IN HANDLE hSmApiPort, - IN HANDLE hSbApiPort, - IN HANDLE hApiPort) -{ - NTSTATUS Status; - SM_PORT_MESSAGE SmReqMsg; - - DPRINT("SMDLL: %s called\n", __FUNCTION__); - - /* Marshal Ses in the LPC message */ - SmReqMsg.CompSes.hApiPort = hApiPort; - SmReqMsg.CompSes.hSbApiPort = hSbApiPort; - - /* SM API to invoke */ - SmReqMsg.ApiIndex = SM_API_COMPLETE_SESSION; - - /* Port message */ - SmReqMsg.Header.MessageType = LPC_NEW_MESSAGE; - SmReqMsg.Header.DataSize = SM_PORT_DATA_SIZE(SmReqMsg.CompSes); - SmReqMsg.Header.MessageSize = SM_PORT_MESSAGE_SIZE; - Status = NtRequestWaitReplyPort (hSmApiPort, (PLPC_MESSAGE) & SmReqMsg, (PLPC_MESSAGE) & SmReqMsg); - if (NT_SUCCESS(Status)) - { - return SmReqMsg.Status; - } - DPRINT("SMDLL: %s failed (Status=0x%08lx)\n", __FUNCTION__, Status); - return Status; -} - -/* EOF */ _____
Deleted: trunk/reactos/lib/smdll/connect.c --- trunk/reactos/lib/smdll/connect.c 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/lib/smdll/connect.c 2005-03-14 22:38:12 UTC (rev 14080) @@ -1,98 +0,0 @@
-/* $Id$ - * - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS system libraries - * FILE: reactos/lib/smdll/connect.c - * PURPOSE: Connect to the API LPC port exposed by the SM - */ -#define NTOS_MODE_USER -#include <ntos.h> -#include <sm/api.h> -#include <sm/helper.h> -#include <pe.h> - -#define NDEBUG -#include <debug.h> - -/********************************************************************** - * NAME EXPORTED - * SmConnectApiPort/4 - * - * DESCRIPTION - * Connect to SM API port and register a session "begin" port (Sb) - * or to issue API requests to SmApiPort. - * - * ARGUMENTS - * pSbApiPortName: name of the Sb port the calling subsystem - * server already created in the system name space; - * hSbApiPort: LPC port handle (checked, but not used); - * dwSubsystem: a valid IMAGE_SUBSYSTEM_xxx value; - * phSmApiPort: a pointer to a HANDLE, which will be - * filled with a valid client-side LPC comm port. - * - * RETURN VALUE - * If all three optional values are omitted, an LPC status. - * STATUS_INVALID_PARAMETER_MIX if PortName is defined and - * both hSbApiPort and dwSubsystem are 0. - */ -NTSTATUS STDCALL -SmConnectApiPort (IN PUNICODE_STRING pSbApiPortName OPTIONAL, - IN HANDLE hSbApiPort OPTIONAL, - IN DWORD dwSubsystem OPTIONAL, - IN OUT PHANDLE phSmApiPort) -{ - UNICODE_STRING SmApiPortName; - SECURITY_QUALITY_OF_SERVICE SecurityQos; - NTSTATUS Status = STATUS_SUCCESS; - SM_CONNECT_DATA ConnectData = {0,{0}}; - ULONG ConnectDataLength = 0; - - DPRINT("SMDLL: %s called\n", __FUNCTION__); - - if (pSbApiPortName) - { - if (pSbApiPortName->Length > (sizeof pSbApiPortName->Buffer[0] * SM_SB_NAME_MAX_LENGTH)) - { - return STATUS_INVALID_PARAMETER_1; - } - if (NULL == hSbApiPort || IMAGE_SUBSYSTEM_UNKNOWN == dwSubsystem) - { - return STATUS_INVALID_PARAMETER_MIX; - } - RtlZeroMemory (& ConnectData, sizeof ConnectData); - ConnectData.Subsystem = dwSubsystem; - if (pSbApiPortName->Length > 0) - { - RtlCopyMemory (& ConnectData.SbName, - pSbApiPortName->Buffer, - pSbApiPortName->Length); - } - } - ConnectDataLength = sizeof ConnectData; - - SecurityQos.Length = sizeof (SecurityQos); - SecurityQos.ImpersonationLevel = SecurityIdentification; - SecurityQos.ContextTrackingMode = TRUE; - SecurityQos.EffectiveOnly = TRUE; - - RtlInitUnicodeString (& SmApiPortName, SM_API_PORT_NAME); - - Status = NtConnectPort ( - phSmApiPort, - & SmApiPortName, - & SecurityQos, - NULL, - NULL, - NULL, - & ConnectData, - & ConnectDataLength - ); - if (NT_SUCCESS(Status)) - { - return STATUS_SUCCESS; - } - DPRINT("SMDLL: %s failed (Status=0x%08lx)\n", __FUNCTION__, Status); - return Status; -} - -/* EOF */ _____
Deleted: trunk/reactos/lib/smdll/execpgm.c --- trunk/reactos/lib/smdll/execpgm.c 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/lib/smdll/execpgm.c 2005-03-14 22:38:12 UTC (rev 14080) @@ -1,76 +0,0 @@
-/* $Id$ - * - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS system libraries - * FILE: lib/smdll/execpgm.c - * PURPOSE: Call SM API SM_API_EXECPGM - */ -#define NTOS_MODE_USER -#include <ntos.h> -#include <sm/api.h> -#include <sm/helper.h> -#include <string.h> - -#define NDEBUG -#include <debug.h> - -/********************************************************************** - * NAME EXPORTED - * SmExecuteProgram/2 - * - * DESCRIPTION - * This function is used to make the SM start an environment - * subsystem server process. - * - * ARGUMENTS - * hSmApiPort: port handle returned by SmConnectApiPort; - * Pgm : name of the subsystem (to be used by the SM to - * lookup the image name from the registry). - * Valid names are: DEBUG, WINDOWS, POSIX, OS2, - * and VMS. - * - * RETURN VALUE - * Success status as handed by the SM reply; otherwise a failure - * status code. - */ -NTSTATUS STDCALL -SmExecuteProgram (IN HANDLE hSmApiPort, - IN PUNICODE_STRING Pgm) -{ - NTSTATUS Status; - SM_PORT_MESSAGE SmReqMsg; - - - DPRINT("SMDLL: %s called\n", __FUNCTION__); - - /* Check Pgm's length */ - if (Pgm->Length > (sizeof (Pgm->Buffer[0]) * SM_EXEXPGM_MAX_LENGTH)) - { - return STATUS_INVALID_PARAMETER; - } - /* Marshal Pgm in the LPC message */ - RtlZeroMemory (& SmReqMsg, sizeof SmReqMsg); - SmReqMsg.ExecPgm.NameLength = Pgm->Length; - RtlCopyMemory (SmReqMsg.ExecPgm.Name, - Pgm->Buffer, - Pgm->Length); - - /* SM API to invoke */ - SmReqMsg.ApiIndex = SM_API_EXECUTE_PROGRAMME; - - /* LPC message */ - SmReqMsg.Header.MessageType = LPC_NEW_MESSAGE; - SmReqMsg.Header.DataSize = SM_PORT_DATA_SIZE(SmReqMsg.ExecPgm); - SmReqMsg.Header.MessageSize = SM_PORT_MESSAGE_SIZE; - - /* Call SM and wait for a reply */ - Status = NtRequestWaitReplyPort (hSmApiPort, (PLPC_MESSAGE) & SmReqMsg, (PLPC_MESSAGE) & SmReqMsg); - if (NT_SUCCESS(Status)) - { - return SmReqMsg.Status; - } - DPRINT("SMDLL: %s failed (Status=0x%08lx)\n", __FUNCTION__, Status); - return Status; -} - -/* EOF */ _____
Modified: trunk/reactos/lib/smdll/makefile --- trunk/reactos/lib/smdll/makefile 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/lib/smdll/makefile 2005-03-14 22:38:12 UTC (rev 14080) @@ -6,7 +6,7 @@
TARGET_NAME = smdll
-TARGET_SDKLIBS = ntdll.a +TARGET_SDKLIBS = smlib.a ntdll.a
TARGET_CFLAGS = -I./include -Wall -Werror
@@ -19,9 +19,7 @@
TARGET_OBJECTS = \ dllmain.o \ - connect.o \ - execpgm.o \ - compses.o + query.o DEP_OBJECTS = $(TARGET_OBJECTS)
_____
Added: trunk/reactos/lib/smdll/query.c --- trunk/reactos/lib/smdll/query.c 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/lib/smdll/query.c 2005-03-14 22:38:12 UTC (rev 14080) @@ -0,0 +1,39 @@
+/* $Id: compses.c 13731 2005-02-23 23:37:06Z ea $ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS system libraries + * FILE: lib/smdll/query.c + * PURPOSE: Call SM API SM_API_QUERY (not in NT) + */ +#define NTOS_MODE_USER +#include <ntos.h> +#include <sm/api.h> +#include <sm/helper.h> + +#define NDEBUG +#include <debug.h> + +/********************************************************************** + * NAME EXPORTED + * SmQuery/4 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + */ +NTSTATUS STDCALL +SmQuery (IN HANDLE SmApiPort, + IN SM_INFORMATION_CLASS SmInformationClass, + IN OUT PVOID Data, + IN OUT PULONG DataLength) +{ + /* TODO */ + if(NULL != DataLength) + { + *DataLength = 0; + } + return STATUS_SUCCESS; +} +/* EOF */ _____
Modified: trunk/reactos/lib/smdll/smdll.def --- trunk/reactos/lib/smdll/smdll.def 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/lib/smdll/smdll.def 2005-03-14 22:38:12 UTC (rev 14080) @@ -3,3 +3,4 @@
SmCompleteSession@12 SmConnectApiPort@16 SmExecuteProgram@8 +SmQuery@16 _____
Added: trunk/reactos/lib/smlib/compses.c --- trunk/reactos/lib/smlib/compses.c 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/lib/smlib/compses.c 2005-03-14 22:38:12 UTC (rev 14080) @@ -0,0 +1,64 @@
+/* $Id: compses.c 13731 2005-02-23 23:37:06Z ea $ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS system libraries + * FILE: lib/smlib/compses.c + * PURPOSE: Call SM API SM_API_COMPLETE_SESSION + */ +#define NTOS_MODE_USER +#include <ntos.h> +#include <sm/api.h> +#include <sm/helper.h> + +#define NDEBUG +#include <debug.h> + +/********************************************************************** + * NAME EXPORTED + * SmCompleteSession/3 + * + * DESCRIPTION + * This function is called by an environment subsystem server to + * tell the SM it finished initialization phase and is ready to + * manage processes it registered for (SmConnectApiPort). + * + * ARGUMENTS + * hSmApiPort: port handle returned by SmConnectApiPort; + * hSbApiPort: call back API port of the subsystem (handle); + * hApiPort : API port of the subsystem (handle). + * + * RETURN VALUE + * Success status as handed by the SM reply; otherwise a failure + * status code. + */ +NTSTATUS STDCALL +SmCompleteSession (IN HANDLE hSmApiPort, + IN HANDLE hSbApiPort, + IN HANDLE hApiPort) +{ + NTSTATUS Status; + SM_PORT_MESSAGE SmReqMsg; + + DPRINT("SMLIB: %s called\n", __FUNCTION__); + + /* Marshal Ses in the LPC message */ + SmReqMsg.CompSes.hApiPort = hApiPort; + SmReqMsg.CompSes.hSbApiPort = hSbApiPort; + + /* SM API to invoke */ + SmReqMsg.ApiIndex = SM_API_COMPLETE_SESSION; + + /* Port message */ + SmReqMsg.Header.MessageType = LPC_NEW_MESSAGE; + SmReqMsg.Header.DataSize = SM_PORT_DATA_SIZE(SmReqMsg.CompSes); + SmReqMsg.Header.MessageSize = SM_PORT_MESSAGE_SIZE; + Status = NtRequestWaitReplyPort (hSmApiPort, (PLPC_MESSAGE) & SmReqMsg, (PLPC_MESSAGE) & SmReqMsg); + if (NT_SUCCESS(Status)) + { + return SmReqMsg.Status; + } + DPRINT("SMLIB: %s failed (Status=0x%08lx)\n", __FUNCTION__, Status); + return Status; +} + +/* EOF */ _____
Added: trunk/reactos/lib/smlib/connect.c --- trunk/reactos/lib/smlib/connect.c 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/lib/smlib/connect.c 2005-03-14 22:38:12 UTC (rev 14080) @@ -0,0 +1,98 @@
+/* $Id: connect.c 14015 2005-03-13 17:00:19Z ea $ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS system libraries + * FILE: reactos/lib/smlib/connect.c + * PURPOSE: Connect to the API LPC port exposed by the SM + */ +#define NTOS_MODE_USER +#include <ntos.h> +#include <sm/api.h> +#include <sm/helper.h> +#include <pe.h> + +#define NDEBUG +#include <debug.h> + +/********************************************************************** + * NAME EXPORTED + * SmConnectApiPort/4 + * + * DESCRIPTION + * Connect to SM API port and register a session "begin" port (Sb) + * or to issue API requests to SmApiPort. + * + * ARGUMENTS + * pSbApiPortName: name of the Sb port the calling subsystem + * server already created in the system name space; + * hSbApiPort: LPC port handle (checked, but not used); + * dwSubsystem: a valid IMAGE_SUBSYSTEM_xxx value; + * phSmApiPort: a pointer to a HANDLE, which will be + * filled with a valid client-side LPC comm port. + * + * RETURN VALUE + * If all three optional values are omitted, an LPC status. + * STATUS_INVALID_PARAMETER_MIX if PortName is defined and + * both hSbApiPort and dwSubsystem are 0. + */ +NTSTATUS STDCALL +SmConnectApiPort (IN PUNICODE_STRING pSbApiPortName OPTIONAL, + IN HANDLE hSbApiPort OPTIONAL, + IN DWORD dwSubsystem OPTIONAL, + IN OUT PHANDLE phSmApiPort) +{ + UNICODE_STRING SmApiPortName; + SECURITY_QUALITY_OF_SERVICE SecurityQos; + NTSTATUS Status = STATUS_SUCCESS; + SM_CONNECT_DATA ConnectData = {0,{0}}; + ULONG ConnectDataLength = 0; + + DPRINT("SMLIB: %s called\n", __FUNCTION__); + + if (pSbApiPortName) + { + if (pSbApiPortName->Length > (sizeof pSbApiPortName->Buffer[0] * SM_SB_NAME_MAX_LENGTH)) + { + return STATUS_INVALID_PARAMETER_1; + } + if (NULL == hSbApiPort || IMAGE_SUBSYSTEM_UNKNOWN == dwSubsystem) + { + return STATUS_INVALID_PARAMETER_MIX; + } + RtlZeroMemory (& ConnectData, sizeof ConnectData); + ConnectData.Subsystem = dwSubsystem; + if (pSbApiPortName->Length > 0) + { + RtlCopyMemory (& ConnectData.SbName, + pSbApiPortName->Buffer, + pSbApiPortName->Length); + } + } + ConnectDataLength = sizeof ConnectData; + + SecurityQos.Length = sizeof (SecurityQos); + SecurityQos.ImpersonationLevel = SecurityIdentification; + SecurityQos.ContextTrackingMode = TRUE; + SecurityQos.EffectiveOnly = TRUE; + + RtlInitUnicodeString (& SmApiPortName, SM_API_PORT_NAME); + + Status = NtConnectPort ( + phSmApiPort, + & SmApiPortName, + & SecurityQos, + NULL, + NULL, + NULL, + & ConnectData, + & ConnectDataLength + ); + if (NT_SUCCESS(Status)) + { + return STATUS_SUCCESS; + } + DPRINT("SMLIB: %s failed (Status=0x%08lx)\n", __FUNCTION__, Status); + return Status; +} + +/* EOF */ _____
Added: trunk/reactos/lib/smlib/execpgm.c --- trunk/reactos/lib/smlib/execpgm.c 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/lib/smlib/execpgm.c 2005-03-14 22:38:12 UTC (rev 14080) @@ -0,0 +1,76 @@
+/* $Id: execpgm.c 13731 2005-02-23 23:37:06Z ea $ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS system libraries + * FILE: lib/smlib/execpgm.c + * PURPOSE: Call SM API SM_API_EXECPGM + */ +#define NTOS_MODE_USER +#include <ntos.h> +#include <sm/api.h> +#include <sm/helper.h> +#include <string.h> + +#define NDEBUG +#include <debug.h> + +/********************************************************************** + * NAME EXPORTED + * SmExecuteProgram/2 + * + * DESCRIPTION + * This function is used to make the SM start an environment + * subsystem server process. + * + * ARGUMENTS + * hSmApiPort: port handle returned by SmConnectApiPort; + * Pgm : name of the subsystem (to be used by the SM to + * lookup the image name from the registry). + * Valid names are: DEBUG, WINDOWS, POSIX, OS2, + * and VMS. + * + * RETURN VALUE + * Success status as handed by the SM reply; otherwise a failure + * status code. + */ +NTSTATUS STDCALL +SmExecuteProgram (IN HANDLE hSmApiPort, + IN PUNICODE_STRING Pgm) +{ + NTSTATUS Status; + SM_PORT_MESSAGE SmReqMsg; + + + DPRINT("SMLIB: %s called\n", __FUNCTION__); + + /* Check Pgm's length */ + if (Pgm->Length > (sizeof (Pgm->Buffer[0]) * SM_EXEXPGM_MAX_LENGTH)) + { + return STATUS_INVALID_PARAMETER; + } + /* Marshal Pgm in the LPC message */ + RtlZeroMemory (& SmReqMsg, sizeof SmReqMsg); + SmReqMsg.ExecPgm.NameLength = Pgm->Length; + RtlCopyMemory (SmReqMsg.ExecPgm.Name, + Pgm->Buffer, + Pgm->Length); + + /* SM API to invoke */ + SmReqMsg.ApiIndex = SM_API_EXECUTE_PROGRAMME; + + /* LPC message */ + SmReqMsg.Header.MessageType = LPC_NEW_MESSAGE; + SmReqMsg.Header.DataSize = SM_PORT_DATA_SIZE(SmReqMsg.ExecPgm); + SmReqMsg.Header.MessageSize = SM_PORT_MESSAGE_SIZE; + + /* Call SM and wait for a reply */ + Status = NtRequestWaitReplyPort (hSmApiPort, (PLPC_MESSAGE) & SmReqMsg, (PLPC_MESSAGE) & SmReqMsg); + if (NT_SUCCESS(Status)) + { + return SmReqMsg.Status; + } + DPRINT("SMLIB: %s failed (Status=0x%08lx)\n", __FUNCTION__, Status); + return Status; +} + +/* EOF */ _____
Added: trunk/reactos/lib/smlib/makefile --- trunk/reactos/lib/smlib/makefile 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/lib/smlib/makefile 2005-03-14 22:38:12 UTC (rev 14080) @@ -0,0 +1,35 @@
+ +PATH_TO_TOP = ../.. + +TARGET_TYPE = library + +TARGET_NAME = smlib + +include $(PATH_TO_TOP)/config + +TARGET_CFLAGS = -Wall -Werror -ffreestanding + +# require os code to explicitly request A/W version of structs/functions +TARGET_CFLAGS += -D_DISABLE_TIDENTS + +ifneq ($(DBG), 0) +TARGET_CFLAGS += -DDBG +endif + +TARGET_OBJECTS = \ + connect.o \ + execpgm.o \ + compses.o + + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk + +DEP_OBJECTS := $(TARGET_OBJECTS) + +TARGET_CLEAN = $(DEP_FILES) + +include $(PATH_TO_TOP)/tools/depend.mk + +# EOF _____
Modified: trunk/reactos/subsys/smss/initss.c --- trunk/reactos/subsys/smss/initss.c 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/subsys/smss/initss.c 2005-03-14 22:38:12 UTC (rev 14080) @@ -60,7 +60,7 @@
* (programmatically). This also open hSmApiPort to be used * in loading required subsystems. */ -#if 0 + static NTSTATUS SmpRegisterSmss(VOID) { @@ -68,7 +68,8 @@ UNICODE_STRING SbApiPortName = {0,0,NULL};
DPRINT("SM: %s called\n",__FUNCTION__); - + + RtlInitUnicodeString (& SbApiPortName, L""); Status = SmConnectApiPort(& SbApiPortName, (HANDLE) 0, IMAGE_SUBSYSTEM_NATIVE, @@ -79,6 +80,7 @@ __FUNCTION__,Status); return Status; } + DPRINT("SM self registered\n"); /* * Note that you don't need to call complete session * because connection handling code autocompletes @@ -86,8 +88,8 @@ */ return Status; } -#endif
+ /********************************************************************** */ NTSTATUS @@ -103,13 +105,12 @@ DPRINT("SM: loading subsystems\n");
/* SM self registers */ -#if 0 Status = SmpRegisterSmss(); if(!NT_SUCCESS(Status)) { DPRINT1("SM: SM failed to self register: system is not secure!\n"); } -#endif + /* Load Kmode subsystem (aka win32k.sys) */ Status = SmLookupSubsystem (L"Kmode", Data, @@ -136,7 +137,7 @@ } /* TODO: load Required subsystems (Debug Windows) */ #if 0 - Status = SmExecuteProgram(L"DEBUG"); + Status = SmExecuteProgram (hSmApiPort, L"DEBUG"); if(!NT_SUCCESS(Status)) { DPRINT1("SM: DBSS failed to initialize!\n"); _____
Modified: trunk/reactos/subsys/smss/makefile --- trunk/reactos/subsys/smss/makefile 2005-03-14 22:28:58 UTC (rev 14079) +++ trunk/reactos/subsys/smss/makefile 2005-03-14 22:38:12 UTC (rev 14080) @@ -6,7 +6,7 @@
TARGET_APPTYPE = native
-TARGET_SDKLIBS = ntdll.a smdll.a +TARGET_SDKLIBS = smlib.a ntdll.a
TARGET_NAME = smss