WaitForDebugEvent: Fehler versteckt (kann ihn nicht finden)



  • Hallo WinApi-Coder,

    Irgendwo hier ist ein Fehler versteckt, kann ihn aber nicht finden. Das Program bricht sich immer selber ab :(. Ich benutze mingw compiler.

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    int main(int argc, char *argv[])
    {
        DEBUG_EVENT *DBEvent;
        STARTUPINFO *startinfo;
        PROCESS_INFORMATION *pi;
    
        GetStartupInfo(startinfo);
        CreateProcessA("progdebug.exe", NULL, NULL, NULL, FALSE, DEBUG_PROCESS + DEBUG_ONLY_THIS_PROCESS, NULL, NULL, startinfo, pi);
    
        while(1)
        {
                WaitForDebugEvent(DBEvent, INFINITE);  
                if(DBEvent->dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT)
                {
                     MessageBox(0, "Exit!!", "Exit", MB_OK + MB_ICONINFORMATION);
                     break;                            
                }      
        }
    
        CloseHandle(pi->hProcess);
        CloseHandle(pi->hThread);
    
        system("PAUSE");	
        return 0;
    }
    

    Was ist da falsch? Danke.

    Gruss, Tarrantel-X



  • Der erste Parameter von WaitForDebugEvent muss ein Zeiger auf eine DEBUG_EVENT-Struktur sein. Der Zeiger, den du da übergibtst, zeigt irgendwo in den Speicher, aber nicht auf eine gültige Struktur, denn er ist nicht initialisiert.

    Und gewöhn dir mal an, die Rückgabewerte von Funktionen wie CreateProcess und WaitForDebugEvent zu prüfen. Dazu sind sie da.



  • ja danke, es ist eh aussichtslos, hab keine winapi zur hand. werde wohl zu hause weitermachen müssen. danke


Anmelden zum Antworten