eus*_*srh -1 c++ windows visual-c++
有我的代码:
int main()
{
STARTUPINFO si = { sizeof(si) };
PPROCESS_INFORMATION pi;
TCHAR szCommandLine[] = TEXT("C:\Windows\notepad.exe");
auto is_suc = CreateProcess(NULL, szCommandLine, NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在win10 CreateProcess()API中是否存在一些问题?
你有:
Run Code Online (Sandbox Code Playgroud)PPROCESS_INFORMATION pi;
这意味着(注意你之前有一个PPROCESS_INFORMATION,使实际类型成为指针 PROCESS_INFORMATION):
// PPROCESS_INFORMATION = PROCESS_INFORMATION*
PROCESS_INFORMATION *pi;
Run Code Online (Sandbox Code Playgroud)
CreateProcess期望一个指针 PROCESS_INFORMATION作为最后一个参数,但是&pi你正在传递一个指向指针的指针(双重间接).
您可以通过更改pi变量的定义来解决此问题:
PROCESS_INFORMATION pi;
Run Code Online (Sandbox Code Playgroud)
然后&pi将正确地成为一个PROCESS_INFORMATION*,如CreateProcess预期的那样.并且,成功时,pi变量将按预期接收过程标识信息.
PS为了更好的代码卫生,我建议也要清除PROCESS_INFORMATION结构:
PROCESS_INFORMATION pi{ 0 };
Run Code Online (Sandbox Code Playgroud)