int Plugin::Unload(bool bExitFAR) { int nResult = TRUE; if (WorkFlags.Check(PIWF_LOADED)) { if (bExitFAR) { ExitInfo Info={sizeof(Info)}; ExitFAR(&Info); } if (!WorkFlags.Check(PIWF_CACHED)) { nResult = m_model->Destroy(m_Instance); ClearExports(); } m_Instance = nullptr; WorkFlags.Clear(PIWF_LOADED); WorkFlags.Clear(PIWF_DATALOADED); bPendingRemove = true; } return nResult; }
CModule::~CModule() { if (loaded && ExitFAR) ExitFAR(); if (hModule) FreeLibrary(hModule); }