#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)
KeReleaseSpinLock(&PsProcessListLock, oldIrql);
}
+#endif /* LIBCAPTIVE */
VOID
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;
PsProcessType->Create = NULL;
PsProcessType->DuplicationNotify = NULL;
- RtlInitUnicodeStringFromLiteral(&PsProcessType->TypeName, L"Process");
+ RtlInitUnicodeStringFromLiteral(&PsProcessType->TypeName, REACTOS_UCS2(L"Process"));
InitializeListHead(&PsProcessListHead);
KeInitializeSpinLock(&PsProcessListLock);
/* 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;
strcpy(PsInitialSystemProcess->ImageFileName, "SYSTEM");
+#ifndef LIBCAPTIVE
SepCreateSystemProcessToken(PsInitialSystemProcess);
+#endif /* LIBCAPTIVE */
ObCreateHandle(PsInitialSystemProcess,
PsInitialSystemProcess,
&SystemProcessHandle);
}
+#ifndef LIBCAPTIVE
+
VOID STDCALL
PiDeleteProcess(PVOID ObjectBody)
{
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)
{
return(STATUS_SUCCESS);
}
+#endif /* LIBCAPTIVE */
+
/* EOF */