Esempio n. 1
0
PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData) {
  void **exports = reinterpret_cast<void**>(ppData[PLUGIN_DATA_AMX_EXPORTS]);
  ::logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];

  void *amx_Exec_ptr = exports[PLUGIN_AMX_EXPORT_Exec];
  void *amx_Exec_sub = SubHook::ReadDst(amx_Exec_ptr);

  if (amx_Exec_sub == 0) {
    exec_hook.Install(amx_Exec_ptr, (void*)AmxExec);
  } else {
    std::string module = fileutils::GetFileName(os::GetModuleName(amx_Exec_sub));
    if (!module.empty()) {
      logprintf("  CrashDetect must be loaded before '%s'", module.c_str());
    }
    return false;
  }

  os::SetCrashHandler(CrashDetect::OnCrash);
  os::SetInterruptHandler(CrashDetect::OnInterrupt);

  logprintf("  CrashDetect v" PROJECT_VERSION_STRING " is OK.");
  return true;
}
Esempio n. 2
0
PLUGIN_EXPORT void PLUGIN_CALL Unload() {
  logprintf_hook.Remove();
}
Esempio n. 3
0
PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData) {
  pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
  logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];
  logprintf_hook.Install(ppData[PLUGIN_DATA_LOGPRINTF], (void*)do_logprintf);
  return true;
}