mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
Moved smss to a better place.
svn path=/trunk/; revision=640
This commit is contained in:
parent
c92eafe2f1
commit
648c68ff1a
4 changed files with 297 additions and 0 deletions
93
reactos/subsys/smss/init.c
Normal file
93
reactos/subsys/smss/init.c
Normal 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 */
|
||||||
|
|
61
reactos/subsys/smss/makefile
Normal file
61
reactos/subsys/smss/makefile
Normal 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
105
reactos/subsys/smss/smss.c
Normal 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 */
|
38
reactos/subsys/smss/smss.rc
Normal file
38
reactos/subsys/smss/smss.rc
Normal 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
|
||||||
|
|
Loading…
Reference in a new issue