Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > CreateProcess


Автор: mrbrooks 23.1.2009, 12:08
Мои приветствия.
Заимел MS VS 2008. Создаю процесс в консольном приложение.
Код
 
int _tmain(int argc, _TCHAR* argv[])
{
    PROCESS_INFORMATION pi;
    STARTUPINFO si;
    ZeroMemory(&si,sizeof(STARTUPINFO));
    ZeroMemory(&pi,sizeof(PROCESS_INFORMATION ));
    si.cb = sizeof(si);
    CreateProcess(NULL,L"cmd.exe",NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);
    WaitForSingleObject( pi.hProcess, INFINITE );
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    std::cin.get();
    return 0;
}
  
но радость моя была не долгой. Студия встретила меня следущей мессагой:
Код

Первый этап обработки исключения в "0x7c82f284" в "fuck.exe": 0xC0000005: Нарушение прав доступа при записи "0x00402112".
Необработанное исключение в "0x7c82f284" в "fuck.exe": 0xC0000005: Нарушение прав доступа при записи "0x00402112".

Собственно вопрос - а какого ей надо? 

зы. Что характерно Борман 2009 версии - код сожрал и выплюнул ожидаемый результат.

Автор: SenkraD 23.1.2009, 13:30
У меня щас нет студии под рукой, но второй параметер имеет тип  __inout_opt  LPTSTR lpCommandLine,
может из-за этого: она туда что-то дописать пробует и ей места мало

Я с этим столкнулся когда ей хотел константу вторым параметром скинуть

Автор: mrbrooks 23.1.2009, 14:06
SenkraD, Точно камрад. 
Что же касается меня - то внимательнее надо smile  smile 

Код

int _tmain(int argc, _TCHAR* argv[])
{
    PROCESS_INFORMATION pi;
    STARTUPINFO si;
    ZeroMemory(&si,sizeof(STARTUPINFO));
    ZeroMemory(&pi,sizeof(PROCESS_INFORMATION ));
    si.cb = sizeof(si);
    TCHAR cmd[MAX_PATH] = L"cmd.exe";
    CreateProcess(NULL, cmd,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);
    WaitForSingleObject( pi.hProcess, INFINITE );
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    std::cin.get();
    return 0;
}


Добавлено через 59 секунд
Цитата

The Unicode version of this function, CreateProcessW, can modify the contents of this string. Therefore, this parameter cannot be a pointer to read-only memory (such as a const variable or a literal string). If this parameter is a constant string, the function may cause an access violation.



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)