void HostShutdown(object sender, EventArgs e) { //AD7ThreadDestroyEvent.Send(mEngine, mThread, (uint)mProcess.ExitCode); //mCallback.OnProgramDestroy((uint)mProcess.ExitCode); // We dont use process info any more, but have to call this to tell // VS to stop debugging. if (Interlocked.CompareExchange(ref mProcessExitEventSent, 1, 0) == 0) { try { mCallback.OnProcessExit(0); } catch { // swallow exceptions here? } } if (mDbgConnector != null) { mDbgConnector.Dispose(); mDbgConnector = null; } if (mDebugInfoDb != null) { // Commented for debugging, so we can look at the DB after //mDebugInfoDb.DeleteDB(); mDebugInfoDb.Dispose(); mDebugInfoDb = null; } }
int IDebugEngineLaunch2.TerminateProcess(IDebugProcess2 aProcess) { // This function is used to terminate a process that the SampleEngine launched // The debugger will call IDebugEngineLaunch2::CanTerminateProcess before calling this method. try { mProcess.Terminate(); mEngineCallback.OnProcessExit(0); mProgram = null; } catch (Exception e) { return(EngineUtils.UnexpectedException(e)); } return(VSConstants.S_OK); }