Moved smss to a better place.

svn path=/trunk/; revision=640
This commit is contained in:
Eric Kohl 1999-09-05 12:29:50 +00:00
parent c92eafe2f1
commit 648c68ff1a
4 changed files with 297 additions and 0 deletions

View file

@ -0,0 +1,93 @@
/* $Id: init.c,v 1.1 1999/09/05 12:29:50 ekohl Exp $
*
* init.c - Session Manager initialization
*
* ReactOS Operating System
*
* --------------------------------------------------------------------
*
* This software is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* 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.
*
* --------------------------------------------------------------------
*
* 19990530 (Emanuele Aliberti)
* Compiled successfully with egcs 1.1.2
*/
#include <ddk/ntddk.h>
//#include <internal/lpc.h>
BOOL
InitSessionManager(
HANDLE Children[]
)
{
NTSTATUS Status;
UNICODE_STRING CmdLineW;
/* FIXME: Create the \SmApiPort object (LPC) */
/* FIXME: Create two thread for \SmApiPort */
/* FIXME: Create the system environment variables */
/* FIXME: Define symbolic links to kernel devices (MS-DOS names) */
/* FIXME: Create paging files (if any) other than the first one */
/* FIXME: Load the well known DLLs */
/* FIXME: Load the kernel mode driver win32k.sys */
#if 0
/* Start the Win32 subsystem (csrss.exe) */
Status = NtCreateProcess(
L"\\??\\C:\\reactos\\system32\\csrss.exe",
& Children[CHILD_CSRSS]
);
#endif
/* Start the simple shell (shell.exe) */
RtlInitUnicodeString(&CmdLineW,
L"\\??\\C:\\reactos\\system32\\shell.exe");
Status = RtlCreateUserProcess(&CmdLineW,
NULL,
NULL,
FALSE,
0,
NULL,
&Children[0],
NULL);
if (!NT_SUCCESS(Status))
{
return FALSE;
}
#if 0
/* Start winlogon.exe */
Status = NtCreateProcess(
L"\\??\\C:\\reactos\\system32\\winlogon.exe",
& Children[CHILD_WINLOGON]
);
if (!NT_SUCCESS(Status))
{
Status = NtTerminateProcess(
Children[CHILD_CSRSS]
);
return FALSE;
}
#endif
/* FIXME: Create the \DbgSsApiPort object (LPC) */
/* FIXME: Create the \DbgUiApiPort object (LPC) */
return TRUE;
}
/* EOF */

View file

@ -0,0 +1,61 @@
# $Id: makefile,v 1.1 1999/09/05 12:29:50 ekohl Exp $
#
# Session Manager
#
# ReactOS Operating System
#
TARGET=smss
BASE_CFLAGS = -I../../include
OBJECTS = $(TARGET).o init.o $(TARGET).coff
LIBS = ../../lib/ntdll/ntdll.a
CLEAN_FILES = *.o $(TARGET).exe $(TARGET).sym $(TARGET).coff
all: $(TARGET).exe
.phony: all
$(TARGET).coff: $(TARGET).rc
$(RC) $(TARGET).rc $(TARGET).coff
$(TARGET).exe: $(OBJECTS) $(LIBS)
$(LD) \
$(OBJECTS) \
$(LIBS) \
-o $(TARGET).exe \
--subsystem native
$(NM) --numeric-sort $(TARGET).exe > $(TARGET).sym
clean: $(CLEAN_FILES:%=%_clean)
$(CLEAN_FILES:%=%_clean): %_clean:
- $(RM) $*
.PHONY: clean $(CLEAN_FILES:%=%_clean)
floppy: $(FLOPPY_DIR)/subsys/$(TARGET).exe
$(FLOPPY_DIR)/subsys/$(TARGET).exe: $(TARGET).exe
ifeq ($(DOSCLI),yes)
$(CP) $(TARGET).exe $(FLOPPY_DIR)\subsys\$(TARGET).exe
else
$(CP) $(TARGET).exe $(FLOPPY_DIR)/subsys/$(TARGET).exe
endif
dist: $(DIST_DIR)/subsys/$(TARGET).exe
$(DIST_DIR)/subsys/$(TARGET).exe: $(TARGET).exe
ifeq ($(DOSCLI),yes)
$(CP) $(TARGET).exe ..\..\$(DIST_DIR)\subsys\$(TARGET).exe
else
$(CP) $(TARGET).exe ../../$(DIST_DIR)/subsys/$(TARGET).exe
endif
include ../../rules.mak

105
reactos/subsys/smss/smss.c Normal file
View file

@ -0,0 +1,105 @@
/* $Id: smss.c,v 1.1 1999/09/05 12:29:50 ekohl Exp $
*
* smss.c - Session Manager
*
* ReactOS Operating System
*
* --------------------------------------------------------------------
*
* This software is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* 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.
*
* --------------------------------------------------------------------
*
* 19990529 (Emanuele Aliberti)
* Compiled successfully with egcs 1.1.2
*/
#include <ddk/ntddk.h>
#include <wchar.h>
BOOL InitSessionManager(HANDLE Children[]); /* ./init.c */
void
DisplayString( LPCWSTR lpwString )
{
UNICODE_STRING us;
us.Buffer = (LPWSTR) lpwString;
us.Length = wcslen(lpwString) * sizeof (WCHAR);
us.MaximumLength = us.Length + sizeof (WCHAR);
NtDisplayString( & us );
}
/* Native image's entry point */
void
NtProcessStartup( PSTARTUP_ARGUMENT StartupArgument )
{
HANDLE Children[2]; /* csrss, winlogon */
DisplayString( L"Session Manager\n" );
if (TRUE == InitSessionManager(Children))
{
LARGE_INTEGER Time = {{(DWORD)-1,(DWORD)-1}}; /* infinite? */
NTSTATUS wws;
DisplayString( L"SM: Waiting for process termination...\n" );
wws = NtWaitForSingleObject (
Children[0],
TRUE, /* alertable */
& Time
);
#if 0
wws = NtWaitForMultipleObjects (
((LONG) sizeof Children / sizeof (HANDLE)),
Children,
WaitAny,
TRUE, /* alertable */
& Time
);
#endif
if (!NT_SUCCESS(wws))
{
DisplayString( L"SM: NtWaitForMultipleObjects failed!\n" );
/* FIXME: CRASH THE SYSTEM (BSOD) */
}
else
{
DisplayString( L"SM: Process terminated!\n" );
/* FIXME: CRASH THE SYSTEM (BSOD) */
}
}
else
{
DisplayString( L"SM: initialization failed!\n" );
/* FIXME: CRASH SYSTEM (BSOD)*/
}
/*
* OK: CSRSS asked to shutdown the system;
* We die.
*/
NtTerminateProcess( NtCurrentProcess(), 0 );
}
/* EOF */

View file

@ -0,0 +1,38 @@
#include "../../include/defines.h"
#include "../../include/reactos/resource.h"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
VS_VERSION_INFO VERSIONINFO
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", RES_STR_COMPANY_NAME
VALUE "FileDescription", "ReactOS Session Manager\0"
VALUE "FileVersion", RES_STR_FILE_VERSION
VALUE "InternalName", "smss\0"
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
VALUE "OriginalFilename", "smss.exe\0"
VALUE "ProductName", RES_STR_PRODUCT_NAME
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END