当Reactos在系统初始化时,就会调用进程管理初始化函数PsInitSystem来进行初始化。只有把进程管理初始化后,才可以创建进程,这样才可运行各种各样的任务。下面就来分析进程管理器初始化函数:@H_403_11@
#001 BOOLEAN@H_403_11@
#002 NTAPI@H_403_11@
#003 PsInitSystem(IN PLOADER_PARAMETER_BLOCK LoaderBlock)@H_403_11@
#004 {@H_403_11@
在参数里把系统引导参数传递进来,以便根据不同的配置选择不同的进程管理方案。@H_403_11@
@H_403_11@
#005 /* Check the initialization phase */@H_403_11@
#006 switch (ExpInitializationPhase)@H_403_11@
#007 {@H_403_11@
#008 case 0:@H_403_11@
#009 @H_403_11@
@H_403_11@
这里进行第0阶段的进程管理器初始化。@H_403_11@
#010 /* Do Phase 0 */@H_403_11@
#011 return PspInitPhase0(LoaderBlock);@H_403_11@
#012 @H_403_11@
#013 case 1:@H_403_11@
#014 @H_403_11@
@H_403_11@
这里进行第1阶段的进程管理器初始化。@H_403_11@
#015 /* Do Phase 1 */@H_403_11@
#016 return PspInitPhase1();@H_403_11@
#017 @H_403_11@
#018 default:@H_403_11@
#019 @H_403_11@
@H_403_11@
#020 /* Don't know any other phase! Bugcheck! */@H_403_11@
#021 KeBugCheckEx(UNEXPECTED_INITIALIZATION_CALL,@H_403_11@
#022 1,@H_403_11@
#023 ExpInitializationPhase,@H_403_11@
#024 0,@H_403_11@
#025 0);@H_403_11@
#026 return FALSE;@H_403_11@
#027 }@H_403_11@
#028 }@H_403_11@