bootstrap
[reactos.git] / ntoskrnl / ps / process.c
index c0b094c..751e534 100644 (file)
@@ -50,12 +50,15 @@ static GENERIC_MAPPING PiProcessMapping = {PROCESS_READ,
 
 #define MAX_PROCESS_NOTIFY_ROUTINE_COUNT    8
 
+#ifndef LIBCAPTIVE
 static ULONG PiProcessNotifyRoutineCount = 0;
 static PCREATE_PROCESS_NOTIFY_ROUTINE
 PiProcessNotifyRoutine[MAX_PROCESS_NOTIFY_ROUTINE_COUNT];
+#endif /* LIBCAPTIVE */
 
 /* FUNCTIONS *****************************************************************/
 
+#ifndef LIBCAPTIVE
 
 PEPROCESS 
 PsGetNextProcess(PEPROCESS OldProcess)
@@ -191,6 +194,7 @@ PiKillMostProcesses(VOID)
    KeReleaseSpinLock(&PsProcessListLock, oldIrql);
 }
 
+#endif /* LIBCAPTIVE */
 
 VOID
 PsInitProcessManagment(VOID)
@@ -216,7 +220,11 @@ PsInitProcessManagment(VOID)
    PsProcessType->Dump = NULL;
    PsProcessType->Open = NULL;
    PsProcessType->Close = NULL;
+#ifndef LIBCAPTIVE
    PsProcessType->Delete = PiDeleteProcess;
+#else
+   PsProcessType->Delete = NULL;       /* never Delete PsInitialSystemProcess */
+#endif /* LIBCAPTIVE */
    PsProcessType->Parse = NULL;
    PsProcessType->Security = NULL;
    PsProcessType->QueryName = NULL;
@@ -224,7 +232,7 @@ PsInitProcessManagment(VOID)
    PsProcessType->Create = NULL;
    PsProcessType->DuplicationNotify = NULL;
    
-   RtlInitUnicodeStringFromLiteral(&PsProcessType->TypeName, L"Process");
+   RtlInitUnicodeStringFromLiteral(&PsProcessType->TypeName, REACTOS_UCS2(L"Process"));
    
    InitializeListHead(&PsProcessListHead);
    KeInitializeSpinLock(&PsProcessListLock);
@@ -245,17 +253,23 @@ PsInitProcessManagment(VOID)
    /* System threads may run on any processor. */
    PsInitialSystemProcess->Pcb.Affinity = 0xFFFFFFFF;
    PsInitialSystemProcess->Pcb.BasePriority = PROCESS_PRIO_NORMAL;
+#ifndef LIBCAPTIVE
    KeInitializeDispatcherHeader(&PsInitialSystemProcess->Pcb.DispatcherHeader,
                                InternalProcessType,
                                sizeof(EPROCESS),
                                FALSE);
+#endif /* LIBCAPTIVE */
    KProcess = &PsInitialSystemProcess->Pcb;
    
+#ifndef LIBCAPTIVE
    MmInitializeAddressSpace(PsInitialSystemProcess,
                            &PsInitialSystemProcess->AddressSpace);
+#endif /* LIBCAPTIVE */
    ObCreateHandleTable(NULL,FALSE,PsInitialSystemProcess);
+#ifndef LIBCAPTIVE
    KProcess->DirectoryTableBase = 
      (LARGE_INTEGER)(LONGLONG)(ULONG)MmGetPageDirectory();
+#endif /* LIBCAPTIVE */
    PsInitialSystemProcess->UniqueProcessId = 
      InterlockedIncrement(&PiNextProcessUniqueId);
    PsInitialSystemProcess->Win32WindowStation = (HANDLE)0;
@@ -269,7 +283,9 @@ PsInitProcessManagment(VOID)
    
    strcpy(PsInitialSystemProcess->ImageFileName, "SYSTEM");
 
+#ifndef LIBCAPTIVE
    SepCreateSystemProcessToken(PsInitialSystemProcess);
+#endif /* LIBCAPTIVE */
 
    ObCreateHandle(PsInitialSystemProcess,
                  PsInitialSystemProcess,
@@ -278,6 +294,8 @@ PsInitProcessManagment(VOID)
                  &SystemProcessHandle);
 }
 
+#ifndef LIBCAPTIVE
+
 VOID STDCALL
 PiDeleteProcess(PVOID ObjectBody)
 {
@@ -364,23 +382,31 @@ PsGetCurrentProcessId(VOID)
    return((HANDLE)PsGetCurrentProcess()->UniqueProcessId);
 }
 
+#endif /* LIBCAPTIVE */
+
 /*
  * FUNCTION: Returns a pointer to the current process
  */
 PEPROCESS STDCALL
 PsGetCurrentProcess(VOID)
 {
+#ifndef LIBCAPTIVE
    if (PsGetCurrentThread() == NULL || 
        PsGetCurrentThread()->ThreadsProcess == NULL)
      {
+#endif /* LIBCAPTIVE */
        return(PsInitialSystemProcess);
+#ifndef LIBCAPTIVE
      }
    else
      {
        return(PsGetCurrentThread()->ThreadsProcess);
      }
+#endif /* LIBCAPTIVE */
 }
 
+#ifndef LIBCAPTIVE
+
 PEPROCESS STDCALL
 IoGetCurrentProcess(VOID)
 {
@@ -1245,4 +1271,6 @@ PsSetCreateProcessNotifyRoutine(IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
   return(STATUS_SUCCESS);
 }
 
+#endif /* LIBCAPTIVE */
+
 /* EOF */