CreateProcessW的STARTUPINFO在RtlCreateUserProcess中的调用用途咨询
CreateProcessW中STARTUPINFO在RtlCreateUserProcess的流转与使用
CreateProcessW首先会校验传入的STARTUPINFO/STARTUPINFOEX结构合法性(比如检查cb字段是否匹配结构大小),随后启动预处理流程。- 核心映射通过构造
RTL_USER_PROCESS_PARAMETERS结构完成:- 标准句柄字段
hStdInput/hStdOutput/hStdError会直接复制到RTL_USER_PROCESS_PARAMETERS的StandardInput/StandardOutput/StandardError成员。 STARTUPINFO.dwFlags中的控制标志(如STARTF_USESHOWWINDOW、STARTF_USEPOSITION)会转换为RTL_USER_PROCESS_PARAMETERS.Flags中对应的位标识,同时关联的wShowWindow、X/Y、XSize/YSize等值会存入该结构的对应成员。lpTitle(窗口标题字符串)会被复制到RTL_USER_PROCESS_PARAMETERS.WindowTitle成员中。
- 标准句柄字段
- 如果传入的是扩展结构
STARTUPINFOEX,其lpAttributeList中的进程/线程属性会被提取,直接作为RtlCreateUserProcess的ProcessAttributes、ThreadAttributes参数或额外属性信息传入。 - 构造完成的
RTL_USER_PROCESS_PARAMETERS会作为关键参数传递给RtlCreateUserProcess,内核态会依据该结构中的信息初始化新进程的启动环境,包括标准IO句柄的继承、窗口显示状态、初始位置大小等。
内容的提问来源于stack exchange,提问作者Jochen Van Aelten
相关产品推荐
相关产品推荐

