*ReactOS学习笔记*
CreateProcess 内部实现
调用CreateProcessW
调用CreateProcessInternalW
参数检查
获取进程文件路径
调用 BasepMapFile映射文件(内部调用NtCreateSection)
判断是否是一个DLL文件
判断子系统类型(只能是GUI和CUI中的一种)
是GUI时,则去掉CREATE_NEW_CONSOLE标志,增加DETACHED_PROCESS
如果dwCreationFlags参数中包含DEBUG_PROCESS|DEBUG_ONLY_THIS_PROCESS,则调用DbgUiConnectToDbg创建调试对象(debugPort)
调用NtCreateProcess开始创建进程
调用NtCreateProcessEx
调用PspCreateProcess
关联相关句柄的内核对象(SectionHandle,DebugPort,ExceptionPort)
创建进程空间( MmCreateProcessAddressSpace)
初始化进程内核对象(KeInitializeProcess)
复制父进程的Token(PspInitializeProcessSecurity)