Nieobsługiwany błąd z CreateProcess [duplikat]
To pytanie ma już tutaj odpowiedź:
Metoda CreateProcess kończy się błędem 1 odpowiedźCzytałem o funkcji CreateProcess w c ++ i chciałem ją wypróbować. Podstawową ideą kodu jest to, aby mój główny wykonał inny proces (notatnik). Naprawdę, to tylko podstawowy kod. Po uruchomieniu programu otrzymuję:
Wyjątek pierwszej szansy przy 0x752bb763 w createprocess.exe: 0xC0000005: Miejsce zapisu naruszenia dostępu 0x00be57b8.
Nieobsługiwany wyjątek pod adresem 0x752bb763 w createprocess.exe: 0xC0000005: Miejsce zapisu naruszenia dostępu 0x00be57b8.
Kiedy robię punkt przerwania, w którym pojawia się błąd, przechodzę do tidtable.c (który, jak sądzę, ma dostęp do wątków). W szczególności w tidtable.c atCRTIMP PFLS_GETVALUE_FUNCTION __cdecl __set_flsgetvalue()
Naprawdę nie wiem, co lub jak uniknąć tego problemu. Błąd pojawia się w wywołaniu CreateProcess (tzn. Nigdy nie wysyła „out of create”).
Mój kod to:
<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>
Jeśli ktoś wie, jak rozwiązać ten problem, Twoja pomoc zostanie doceniona.