Erro não tratado com CreateProcess [duplicado]
Esta questão já tem uma resposta aqui:
O método CreateProcess acaba com um erro 1 respostaEu estava lendo sobre a função CreateProcess em c ++ e queria testá-lo. Idéia básica do código é fazer com que o meu principal execute outro processo (notepad). Realmente, é apenas o código básico. Quando eu corro o programa, recebo:
Exceção de primeira chance em 0x752bb763 em createprocess.exe: 0xC0000005: violação de acesso escrita localização 0x00be57b8.
Exceção sem tratamento no 0x752bb763 no createprocess.exe: 0xC0000005: violação de acesso escrita localização 0x00be57b8.
Quando eu faço um ponto de interrupção para onde o erro ocorre, eu sou levado para o tidtable.c (que é para acessar threads, eu acho). Especificamente em tidtable.c emCRTIMP PFLS_GETVALUE_FUNCTION __cdecl __set_flsgetvalue()
Eu realmente não sei o que ou como evitar esse problema. O erro ocorre com a chamada CreateProcess (ou seja, nunca gera o "out of create").
Meu código é:
<code>#include "stdafx.h" #include <stdio.h> #include <windows.h> #include <strsafe.h> #include <direct.h> #include <string.h> #include <conio.h> int main(VOID) { STARTUPINFO si; PROCESS_INFORMATION pi; //allocate memory ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); fprintf(stderr, "This is just a test"); //create child process if (!CreateProcess(NULL, L"C:\\Windows\\Notepad.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { fprintf(stderr, "create process failed"); return -1; } fprintf(stderr, "out of create"); //parent waits for child to complete WaitForSingleObject(pi.hProcess, INFINITE); fprintf(stderr, "after wait"); printf("Child Complete"); //close handle CloseHandle(pi.hProcess); // CloseHandle(pi.hthread); } </code>
Se alguém souber como superar esse problema, sua ajuda será apreciada.