CRASHRPTAPI(int) crUninstall() { crSetErrorMsg(_T("Success.")); CCrashHandler *pCrashHandler = CCrashHandler::GetCurrentProcessCrashHandler(); if(pCrashHandler==NULL || !pCrashHandler->IsInitialized()) { crSetErrorMsg(_T("Crash handler wasn't preiviously installed for this process.")); return 1; } // Uninstall main thread's C++ exception handlers int nUnset = pCrashHandler->UnSetThreadExceptionHandlers(); if(nUnset!=0) return 2; int nDestroy = pCrashHandler->Destroy(); if(nDestroy!=0) return 3; delete pCrashHandler; return 0; }
crUninstallFromCurrentThread() { crSetErrorMsg(_T("Success.")); CCrashHandler *pCrashHandler = CCrashHandler::GetCurrentProcessCrashHandler(); if(pCrashHandler==NULL) { ATLASSERT(pCrashHandler!=NULL); crSetErrorMsg(_T("Crash handler wasn't previously installed for current thread.")); return 1; // Invalid parameter? } int nResult = pCrashHandler->UnSetThreadExceptionHandlers(); if(nResult!=0) return 2; // Error? // OK. return 0; }
CRASHRPTAPI(int) crUninstall() { crSetErrorMsg(_T("Success.")); // Get crash handler singleton CCrashHandler *pCrashHandler = CCrashHandler::GetCurrentProcessCrashHandler(); // Check if found if(pCrashHandler==NULL || !pCrashHandler->IsInitialized()) { crSetErrorMsg(_T("Crash handler wasn't preiviously installed for this process.")); return 1; } // Uninstall main thread's C++ exception handlers int nUnset = pCrashHandler->UnSetThreadExceptionHandlers(); if(nUnset!=0) return 2; // Destroy the crash handler. int nDestroy = pCrashHandler->Destroy(); if(nDestroy!=0) return 3; // Free the crash handler object. delete pCrashHandler; // Clear last error message list. g_cs.Lock(); g_sErrorMsg.clear(); g_cs.Unlock(); return 0; }