mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +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