-/* $Id: create.c,v 1.51 2002/09/07 15:12:27 chorns Exp $
+/* $Id: create.c,v 1.52 2002/09/08 10:22:45 chorns Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
/* INCLUDES ****************************************************************/
+#include <ddk/ntddk.h>
#include <windows.h>
-#define NTOS_USER_MODE
-#include <ntos.h>
#include <kernel32/proc.h>
#include <kernel32/thread.h>
#include <wchar.h>
#include <string.h>
-#include <csrss/csrss.h>
+#include <napi/i386/segment.h>
+#include <ntdll/ldr.h>
+#include <napi/teb.h>
#include <ntdll/base.h>
+#include <ntdll/rtl.h>
+#include <csrss/csrss.h>
+#include <ntdll/csr.h>
#define NDEBUG
#include <kernel32/kernel32.h>
/* FUNCTIONS ****************************************************************/
-#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
-
WINBOOL STDCALL
CreateProcessA (LPCSTR lpApplicationName,
LPSTR lpCommandLine,
#if 0
InitialTeb.StackCommit = (StackCommit < PAGESIZE) ? PAGESIZE : StackCommit;
#endif
- InitialTeb.StackCommit = InitialTeb.StackReserve - PAGE_SIZE;
+ InitialTeb.StackCommit = InitialTeb.StackReserve - PAGESIZE;
/* size of guard page */
- InitialTeb.StackCommit += PAGE_SIZE;
+ InitialTeb.StackCommit += PAGESIZE;
/* Reserve stack */
InitialTeb.StackAllocate = NULL;
/* Protect guard page */
Status = NtProtectVirtualMemory(ProcessHandle,
InitialTeb.StackLimit,
- PAGE_SIZE,
+ PAGESIZE,
PAGE_GUARD | PAGE_READWRITE,
&OldPageProtection);
if (!NT_SUCCESS(Status))
static NTSTATUS
KlInitPeb (HANDLE ProcessHandle,
- PRTL_ROS_USER_PROCESS_PARAMETERS Ppb,
+ PRTL_USER_PROCESS_PARAMETERS Ppb,
PVOID* ImageBaseAddress)
{
NTSTATUS Status;
/* create the PPB */
PpbBase = NULL;
- PpbSize = Ppb->AllocationSize;
+ PpbSize = Ppb->MaximumLength;
Status = NtAllocateVirtualMemory(ProcessHandle,
&PpbBase,
0,
NtWriteVirtualMemory(ProcessHandle,
PpbBase,
Ppb,
- Ppb->AllocationSize,
+ Ppb->MaximumLength,
&BytesWritten);
/* write pointer to environment */
- Offset = FIELD_OFFSET(RTL_ROS_USER_PROCESS_PARAMETERS, Environment);
+ Offset = FIELD_OFFSET(RTL_USER_PROCESS_PARAMETERS, Environment);
NtWriteVirtualMemory(ProcessHandle,
(PVOID)(PpbBase + Offset),
&EnvPtr,
UNICODE_STRING ImagePathName_U;
PROCESS_BASIC_INFORMATION ProcessBasicInfo;
ULONG retlen;
- PRTL_ROS_USER_PROCESS_PARAMETERS Ppb;
+ PRTL_USER_PROCESS_PARAMETERS Ppb;
UNICODE_STRING CommandLine_U;
CSRSS_API_REQUEST CsrRequest;
CSRSS_API_REPLY CsrReply;
ULONG i, Count = *(ULONG*)lpStartupInfo->lpReserved2;
HANDLE * hFile;
HANDLE hTemp;
- PRTL_ROS_USER_PROCESS_PARAMETERS CurrPpb = NtCurrentPeb()->ProcessParameters;
+ PRTL_USER_PROCESS_PARAMETERS CurrPpb = NtCurrentPeb()->ProcessParameters;
/* FIXME:
/*
* Create the PPB
*/
- RtlRosCreateProcessParameters(&Ppb,
+ RtlCreateProcessParameters(&Ppb,
&ImagePathName_U,
NULL,
lpCurrentDirectory ? &CurrentDirectory_U : NULL,
hProcess,
&Ppb->CurrentDirectory.Handle,
0,
- HANDLE_FLAG_INHERIT,
+ TRUE,
DUPLICATE_SAME_ACCESS);
}
hProcess,
&Ppb->ConsoleHandle,
0,
- HANDLE_FLAG_INHERIT,
+ TRUE,
DUPLICATE_SAME_ACCESS);
}
hProcess,
&Ppb->InputHandle,
0,
- HANDLE_FLAG_INHERIT,
+ TRUE,
DUPLICATE_SAME_ACCESS);
if(!NT_SUCCESS(Status))
{
hProcess,
&Ppb->OutputHandle,
0,
- HANDLE_FLAG_INHERIT,
+ TRUE,
DUPLICATE_SAME_ACCESS);
if(!NT_SUCCESS(Status))
{
hProcess,
&Ppb->ErrorHandle,
0,
- HANDLE_FLAG_INHERIT,
+ TRUE,
DUPLICATE_SAME_ACCESS);
if(!NT_SUCCESS(Status))
{
KlInitPeb(hProcess, Ppb, &ImageBaseAddress);
- RtlRosDestroyProcessParameters (Ppb);
+ RtlDestroyProcessParameters (Ppb);
Status = NtSetInformationProcess(hProcess,
ProcessImageFileName,