mirror of
https://github.com/reactos/reactos.git
synced 2025-08-08 00:12:58 +00:00
Performed housekeeping to get the subsystem building. Introduced ros makefile 'standards' throughout.
Is anybody doing any work on the OS/2 support? svn path=/trunk/; revision=3946
This commit is contained in:
parent
a8e38f8c30
commit
a6d6844e8a
20 changed files with 256 additions and 123 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $Id: os2ss.cpp,v 1.1 2002/03/23 19:23:28 robertk Exp $
|
||||
/* $Id: os2ss.cpp,v 1.2 2003/01/07 16:23:12 robd Exp $
|
||||
*
|
||||
* reactos/subsys/csrss/api/process.c
|
||||
*
|
||||
|
@ -10,7 +10,48 @@
|
|||
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ntdll/rtl.h>
|
||||
#include <ntos/synch.h>
|
||||
|
||||
extern "C" {
|
||||
BOOL CsrServerInitialization(ULONG ArgumentCount, PWSTR *ArgumentArray);
|
||||
VOID DisplayString(LPCWSTR lpwString);
|
||||
//BOOL STDCALL CsrServerInitialization (ULONG ArgumentCount, PWSTR *ArgumentArray);
|
||||
//VOID STDCALL DisplayString(LPCWSTR lpwString);
|
||||
//VOID STDCALL PrintString (char* fmt, ...);
|
||||
//NTSTATUS STDCALL NtDisplayString(IN PUNICODE_STRING DisplayString);
|
||||
|
||||
void
|
||||
DisplayString(LPCWSTR lpwString)
|
||||
{
|
||||
UNICODE_STRING us;
|
||||
|
||||
RtlInitUnicodeString(&us, lpwString);
|
||||
NtDisplayString(&us);
|
||||
}
|
||||
|
||||
/*
|
||||
void
|
||||
PrintString(char* fmt,...)
|
||||
{
|
||||
char buffer[512];
|
||||
va_list ap;
|
||||
UNICODE_STRING UnicodeString;
|
||||
ANSI_STRING AnsiString;
|
||||
|
||||
va_start(ap, fmt);
|
||||
vsprintf(buffer, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
RtlInitAnsiString(&AnsiString, buffer);
|
||||
RtlAnsiStringToUnicodeString(&UnicodeString,
|
||||
&AnsiString,
|
||||
TRUE);
|
||||
NtDisplayString(&UnicodeString);
|
||||
RtlFreeUnicodeString(&UnicodeString);
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
/* server variables */
|
||||
|
||||
|
@ -46,70 +87,71 @@ void NtProcessStartup (PPEB Peb)
|
|||
|
||||
while (ArgBuffer[i])
|
||||
{
|
||||
if (ArgBuffer[i] == L' ')
|
||||
{
|
||||
argc++;
|
||||
ArgBuffer[i] = L'\0';
|
||||
argv[argc-1] = &(ArgBuffer[afterlastspace]);
|
||||
i++;
|
||||
while (ArgBuffer[i] == L' ')
|
||||
i++;
|
||||
afterlastspace = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
i++;
|
||||
}
|
||||
if (ArgBuffer[i] == L' ')
|
||||
{
|
||||
argc++;
|
||||
ArgBuffer[i] = L'\0';
|
||||
argv[argc-1] = &(ArgBuffer[afterlastspace]);
|
||||
i++;
|
||||
while (ArgBuffer[i] == L' ')
|
||||
i++;
|
||||
afterlastspace = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
if (ArgBuffer[afterlastspace] != L'\0')
|
||||
{
|
||||
argc++;
|
||||
ArgBuffer[i] = L'\0';
|
||||
argv[argc-1] = &(ArgBuffer[afterlastspace]);
|
||||
argc++;
|
||||
ArgBuffer[i] = L'\0';
|
||||
argv[argc-1] = &(ArgBuffer[afterlastspace]);
|
||||
}
|
||||
|
||||
RtlInitUnicodeString(&UnicodeString,
|
||||
L"\\CsrssInitDone");
|
||||
L"\\CsrssInitDone");
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&UnicodeString,
|
||||
EVENT_ALL_ACCESS,
|
||||
0,
|
||||
NULL);
|
||||
&UnicodeString,
|
||||
EVENT_ALL_ACCESS,
|
||||
0,
|
||||
NULL);
|
||||
Status = NtOpenEvent(&CsrssInitEvent,
|
||||
EVENT_ALL_ACCESS,
|
||||
&ObjectAttributes);
|
||||
EVENT_ALL_ACCESS,
|
||||
&ObjectAttributes);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint("CSR: Failed to open csrss notification event\n");
|
||||
DbgPrint("CSR: Failed to open csrss notification event\n");
|
||||
}
|
||||
if (CsrServerInitialization (argc, argv) == TRUE)
|
||||
{
|
||||
|
||||
NtSetEvent(CsrssInitEvent,
|
||||
NULL);
|
||||
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0, argv);
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0,
|
||||
ArgBuffer);
|
||||
NtSetEvent(CsrssInitEvent,
|
||||
NULL);
|
||||
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0, argv);
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0,
|
||||
ArgBuffer);
|
||||
|
||||
/* terminate the current thread only */
|
||||
NtTerminateThread( NtCurrentThread(), 0 );
|
||||
/* terminate the current thread only */
|
||||
NtTerminateThread( NtCurrentThread(), 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
DisplayString( L"CSR: Subsystem initialization failed.\n" );
|
||||
DisplayString( L"CSR: Subsystem initialization failed.\n" );
|
||||
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0, argv);
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0,
|
||||
ArgBuffer);
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0, argv);
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0,
|
||||
ArgBuffer);
|
||||
|
||||
/*
|
||||
* Tell SM we failed.
|
||||
*/
|
||||
NtTerminateProcess( NtCurrentProcess(), 0 );
|
||||
}
|
||||
/*
|
||||
* Tell SM we failed.
|
||||
*/
|
||||
NtTerminateProcess( NtCurrentProcess(), 0 );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue