PROCESS_INFORMATION pi;
DEBUG_EVENT dbev;
enum RunMode mode = Run;
+ HANDLE image = NULL;
argv = CommandLineToArgvW(GetCommandLine(), &argc);
do {
if (!WaitForDebugEvent (&dbev, INFINITE))
systemError("Cannot fetch debug event, error %d\n");
+ if (dbev.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT)
+ image = dbev.u.CreateProcessInfo.hFile;
if (dbev.dwDebugEventCode == EXCEPTION_DEBUG_EVENT) {
/* The first exception to be delivered is a trap
which indicates completion of startup. */
} while (dbev.dwDebugEventCode != EXCEPTION_DEBUG_EVENT);
if (!DebugActiveProcessStop(dbev.dwProcessId))
systemError("Cannot detach from debugee, error %d\n");
+ if (image)
+ CloseHandle(image);
}
SetConsoleCtrlHandler(ctrlHandler, TRUE);
if (WaitForSingleObject(pi.hProcess, INFINITE) == WAIT_FAILED)
systemError("Wait for debugee failed, error %d\n");
+ CloseHandle(pi.hProcess);
+ CloseHandle(pi.hThread);
doExit(0);
return 0;
}