89 lines
1.5 KiB
C
89 lines
1.5 KiB
C
/*++
|
|
|
|
Copyright (c) 1989-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
psinit.c
|
|
|
|
Abstract:
|
|
|
|
Process Structure Initialization.
|
|
|
|
--*/
|
|
|
|
#include "psp.h"
|
|
|
|
//
|
|
// Process Structure Global Data
|
|
//
|
|
|
|
DECLSPEC_RDATA OBJECT_TYPE PsThreadObjectType = {
|
|
ExAllocatePoolWithTag,
|
|
ExFreePool,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
(PVOID)FIELD_OFFSET(KTHREAD, Header),
|
|
'erhT'
|
|
};
|
|
|
|
INITIALIZED_LIST_ENTRY(PsReaperListHead);
|
|
KDPC PsReaperDpc;
|
|
|
|
//
|
|
// List head and mutex that links all processes that have been initialized
|
|
//
|
|
|
|
BOOLEAN
|
|
PsInitSystem (
|
|
VOID
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This function fermorms process structure initialization.
|
|
It is called during phase 0 and phase 1 initialization. Its
|
|
function is to dispatch to the appropriate phase initialization
|
|
routine.
|
|
|
|
Arguments:
|
|
|
|
None.
|
|
|
|
Return Value:
|
|
|
|
TRUE - Initialization succeeded.
|
|
|
|
FALSE - Initialization failed.
|
|
|
|
--*/
|
|
{
|
|
HANDLE ThreadHandle;
|
|
|
|
//
|
|
// Initialize Reaper Data Structures
|
|
//
|
|
|
|
KeInitializeDpc(&PsReaperDpc, PspReaper, NULL);
|
|
|
|
//
|
|
// Phase 1 System initialization
|
|
//
|
|
|
|
if ( !NT_SUCCESS(PsCreateSystemThread(
|
|
&ThreadHandle,
|
|
NULL,
|
|
Phase1Initialization,
|
|
NULL,
|
|
FALSE
|
|
)) ) {
|
|
return FALSE;
|
|
}
|
|
|
|
NtClose( ThreadHandle );
|
|
|
|
return TRUE;
|
|
}
|