懸浮我有一個DLL內這樣的功能:CreateProcess的默認
int createChildProcess()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
int res;
si.cb=sizeof(STARTUPINFO);
STARTUPINFO* ptr=&si;
if(!CreateProcess(L"c:\\windows\\notepad.exe", NULL, 0, 0, false, CREATE_NEW_CONSOLE, 0, 0, &si, &pi))
{
mylog << "CreateProcess error: " << GetLastError() << std::endl;
res = 0;
}
else
res = pi.dwProcessId;
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return res;
}
,我發現2個問題:
1)第一次調用該函數時,則返回總是錯誤代碼87(該參數是不正確的。)。
2)第二次,該函數工作,但創建一個處於掛起狀態的子進程,父進程中的CPU使用率達到100%。
用winXP的SP3即時通訊測試,我的DLL被編譯在2010年VS
任何幫助嗎?
你在你的'STARTUPINFO'結構初始化的唯一的事情是'cb'成員。其餘的是未初始化的垃圾。結果將是不可預測的。 –
嗯所以你認爲是STARTUPINFO? – jsilva