Implemented PsCreateSystemProcess()

svn path=/trunk/; revision=1815
This commit is contained in:
Eric Kohl 2001-04-21 12:39:33 +00:00
parent 71d0b655ac
commit cb2396496c
4 changed files with 71 additions and 44 deletions

View file

@ -1,4 +1,4 @@
/* $Id: psfuncs.h,v 1.12 2000/12/22 13:29:48 ekohl Exp $ /* $Id: psfuncs.h,v 1.13 2001/04/21 12:38:28 ekohl Exp $
*/ */
#ifndef _INCLUDE_DDK_PSFUNCS_H #ifndef _INCLUDE_DDK_PSFUNCS_H
#define _INCLUDE_DDK_PSFUNCS_H #define _INCLUDE_DDK_PSFUNCS_H
@ -34,6 +34,10 @@ NTSTATUS STDCALL PsCreateSystemThread(PHANDLE ThreadHandle,
PVOID StartContext); PVOID StartContext);
NTSTATUS STDCALL PsTerminateSystemThread(NTSTATUS ExitStatus); NTSTATUS STDCALL PsTerminateSystemThread(NTSTATUS ExitStatus);
NTSTATUS STDCALL PsCreateSystemProcess(PHANDLE ProcessHandle,
ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes);
struct _ETHREAD* STDCALL PsGetCurrentThread(VOID); struct _ETHREAD* STDCALL PsGetCurrentThread(VOID);
struct _EPROCESS* STDCALL PsGetCurrentProcess(VOID); struct _EPROCESS* STDCALL PsGetCurrentProcess(VOID);
PACCESS_TOKEN STDCALL PsReferenceImpersonationToken(struct _ETHREAD* Thread, PACCESS_TOKEN STDCALL PsReferenceImpersonationToken(struct _ETHREAD* Thread,

View file

@ -1,4 +1,4 @@
; $Id: ntoskrnl.def,v 1.103 2001/04/16 00:48:04 chorns Exp $ ; $Id: ntoskrnl.def,v 1.104 2001/04/21 12:39:33 ekohl Exp $
; ;
; reactos/ntoskrnl/ntoskrnl.def ; reactos/ntoskrnl/ntoskrnl.def
; ;
@ -586,7 +586,7 @@ PoUnregisterSystemState@4
;ProbeForWrite@12 ;ProbeForWrite@12
PsAssignImpersonationToken@8 PsAssignImpersonationToken@8
;PsChargePoolQuota@12 ;PsChargePoolQuota@12
;PsCreateSystemProcess@12 PsCreateSystemProcess@12
PsCreateSystemThread@28 PsCreateSystemThread@28
;PsCreateWin32Process@4 ;PsCreateWin32Process@4
;PsEstablishWin32Callouts@24 ;PsEstablishWin32Callouts@24

View file

@ -1,4 +1,4 @@
; $Id: ntoskrnl.edf,v 1.90 2001/04/16 00:48:04 chorns Exp $ ; $Id: ntoskrnl.edf,v 1.91 2001/04/21 12:39:33 ekohl Exp $
; ;
; reactos/ntoskrnl/ntoskrnl.def ; reactos/ntoskrnl/ntoskrnl.def
; ;
@ -586,7 +586,7 @@ PoUnregisterSystemState=PoUnregisterSystemState@4
;ProbeForWrite=ProbeForWrite@12 ;ProbeForWrite=ProbeForWrite@12
PsAssignImpersonationToken=PsAssignImpersonationToken@8 PsAssignImpersonationToken=PsAssignImpersonationToken@8
;PsChargePoolQuota=PsChargePoolQuota@12 ;PsChargePoolQuota=PsChargePoolQuota@12
;PsCreateSystemProcess=PsCreateSystemProcess@12 PsCreateSystemProcess=PsCreateSystemProcess@12
PsCreateSystemThread=PsCreateSystemThread@28 PsCreateSystemThread=PsCreateSystemThread@28
;PsCreateWin32Process ;PsCreateWin32Process
;PsEstablishWin32Callouts ;PsEstablishWin32Callouts

View file

@ -1,4 +1,4 @@
/* $Id: process.c,v 1.62 2001/04/16 16:29:03 dwelch Exp $ /* $Id: process.c,v 1.63 2001/04/21 12:39:05 ekohl Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -296,7 +296,8 @@ static NTSTATUS PsCreatePeb(HANDLE ProcessHandle,
} }
PKPROCESS KeGetCurrentProcess(VOID) PKPROCESS
KeGetCurrentProcess(VOID)
/* /*
* FUNCTION: Returns a pointer to the current process * FUNCTION: Returns a pointer to the current process
*/ */
@ -304,7 +305,8 @@ PKPROCESS KeGetCurrentProcess(VOID)
return(&(PsGetCurrentProcess()->Pcb)); return(&(PsGetCurrentProcess()->Pcb));
} }
HANDLE STDCALL PsGetCurrentProcessId(VOID) HANDLE STDCALL
PsGetCurrentProcessId(VOID)
{ {
return((HANDLE)PsGetCurrentProcess()->UniqueProcessId); return((HANDLE)PsGetCurrentProcess()->UniqueProcessId);
} }
@ -312,7 +314,8 @@ HANDLE STDCALL PsGetCurrentProcessId(VOID)
/* /*
* FUNCTION: Returns a pointer to the current process * FUNCTION: Returns a pointer to the current process
*/ */
PEPROCESS STDCALL PsGetCurrentProcess(VOID) PEPROCESS STDCALL
PsGetCurrentProcess(VOID)
{ {
if (PsGetCurrentThread() == NULL || if (PsGetCurrentThread() == NULL ||
PsGetCurrentThread()->ThreadsProcess == NULL) PsGetCurrentThread()->ThreadsProcess == NULL)
@ -325,13 +328,29 @@ PEPROCESS STDCALL PsGetCurrentProcess(VOID)
} }
} }
PEPROCESS STDCALL IoGetCurrentProcess(VOID) PEPROCESS STDCALL
IoGetCurrentProcess(VOID)
{ {
return(PsGetCurrentProcess()); return(PsGetCurrentProcess());
} }
NTSTATUS STDCALL NTSTATUS STDCALL
NtCreateProcess (OUT PHANDLE ProcessHandle, PsCreateSystemProcess(PHANDLE ProcessHandle,
ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes)
{
return NtCreateProcess(ProcessHandle,
DesiredAccess,
ObjectAttributes,
SystemProcessHandle,
FALSE,
NULL,
NULL,
NULL);
}
NTSTATUS STDCALL
NtCreateProcess(OUT PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ParentProcessHandle, IN HANDLE ParentProcessHandle,
@ -573,7 +592,8 @@ NtCreateProcess (OUT PHANDLE ProcessHandle,
} }
NTSTATUS STDCALL NtOpenProcess (OUT PHANDLE ProcessHandle, NTSTATUS STDCALL
NtOpenProcess(OUT PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_ATTRIBUTES ObjectAttributes,
IN PCLIENT_ID ClientId) IN PCLIENT_ID ClientId)
@ -655,7 +675,8 @@ NTSTATUS STDCALL NtOpenProcess (OUT PHANDLE ProcessHandle,
} }
NTSTATUS STDCALL NtQueryInformationProcess (IN HANDLE ProcessHandle, NTSTATUS STDCALL
NtQueryInformationProcess(IN HANDLE ProcessHandle,
IN CINT ProcessInformationClass, IN CINT ProcessInformationClass,
OUT PVOID ProcessInformation, OUT PVOID ProcessInformation,
IN ULONG ProcessInformationLength, IN ULONG ProcessInformationLength,
@ -724,7 +745,8 @@ NTSTATUS STDCALL NtQueryInformationProcess (IN HANDLE ProcessHandle,
return(Status); return(Status);
} }
NTSTATUS PspAssignPrimaryToken(PEPROCESS Process, NTSTATUS
PspAssignPrimaryToken(PEPROCESS Process,
HANDLE TokenHandle) HANDLE TokenHandle)
{ {
PACCESS_TOKEN Token; PACCESS_TOKEN Token;
@ -750,7 +772,8 @@ NTSTATUS PspAssignPrimaryToken(PEPROCESS Process,
return(Status); return(Status);
} }
NTSTATUS STDCALL NtSetInformationProcess(IN HANDLE ProcessHandle, NTSTATUS STDCALL
NtSetInformationProcess(IN HANDLE ProcessHandle,
IN CINT ProcessInformationClass, IN CINT ProcessInformationClass,
IN PVOID ProcessInformation, IN PVOID ProcessInformation,
IN ULONG ProcessInformationLength) IN ULONG ProcessInformationLength)