CreateProcessW не создаёт процесс
Здраствуйте! Пытаюсь открыть новый процесс и мне обязательно нужно сделать так, чтобы дочерний процесс наследовал определённые дескрипторы родительского процесса. Я знаю о том, что в CreateProcessW есть аргумент, который указывает будут ли наследоваться дескрипторы родительского процесса, но, как только я устанавливаю этот аргумент в значение TRUE, процесс не запускается, при этом GetLastError() равен 0 и метод CreateProcessW возвращает 0-вое значение (на MSDN это означает успешное завершение функции), а значит по логике windows функция выполнилась успешно. В интернете ответов не нашёл. Подскажите пожалуйста, есть ли другой способ передать определённые дескрипторы процессу? (Про функцию DuplicateHandle() знаю и пытался её использовать, но на MSDN не описан аргумент dwDesiredAccess для дескрипторов, а значит я не могу создать дескриптор с правами на наследование дочерними процессами).
STARTUPINFOW SInfo;
PROCESS_INFORMATION PI;
main() {
int crpipret = CreatePipe(hReadPipe, hWritePipe, 0, DEFAULT_BUFLEN);
if (crpipret == 0) {
ShutdownServer("Can't create pipe");
}
ZeroMemory(&SInfo, sizeof(SInfo));
SInfo.cb = sizeof(SInfo);
ZeroMemory(&PI, sizeof(PI));
if(CreateProcessW(L"process", 0, 0, 0, TRUE, CREATE_NEW_CONSOLE, NULL, NULL,
&SInfo, &PI) == 0) {
ShutdownServer("Can't Create Process");
return 0;
}
}
В CreateProcessW специально заменил первый аргумент ( а то ещё взломают ;) )
Ответы (1 шт):
Проблема решена, я перезагрузил компьютер и всё заработало, но причина не ясна. Может баги Visual Studio? Отпишите пожалуйста если сталкивались с похожей проблемой.