AfxTermExtensionModule
Chamar esta função para permitir MFC para limpeza a extensão DLL quando cada processo desanexa da DLL (que acontece quando o processo é encerrado ou quando a DLL é descarregada como resultado de uma AfxFreeLibrary de chamada).
void AFXAPI AfxTermExtensionModule(
AFX_EXTENSION_MODULE& state,
BOOL bAll = FALSE
);
Parâmetros
state
Uma referência para o AFX_EXTENSION_MODULE estrutura que contém o estado do módulo de DLL de extensão.Bola
Se TRUE, limpe todos os módulos DLL de extensão.Limpeza caso contrário, somente o módulo DLL atual.
Comentários
AfxTermExtensionModuleexcluirá qualquer armazenamento local conectado ao módulo e remova todas as entradas do cache de mapa de mensagem.Por exemplo:
static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL = { NULL, NULL };
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("NVC_MFC_DLL.DLL Initializing!\n");
// Extension DLL one-time initialization
if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
return 0;
new CMyDynLinkLibrary(NVC_MFC_DLLDLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("NVC_MFC_DLL.DLL Terminating!\n");
// Terminate the library before destructors are called
AfxTermExtensionModule(NVC_MFC_DLLDLL);
}
return 1; // ok
}
Se seu aplicativo carrega e libera DLLs de extensão dinamicamente, certifique-se de chamar AfxTermExtensionModule.Desde que a maioria dos extensão DLLs não são carregadas dinamicamente (geralmente, eles são vinculados por meio de suas bibliotecas de importação), a chamada para AfxTermExtensionModule não é necessário.
Extensão do MFC DLLs necessário chamar AfxInitExtensionModule em seus DllMain.Se a DLL será exportando CRuntimeClass objetos ou tem seus próprios recursos personalizados, você também precisa criar um CDynLinkLibrary de objeto em DllMain.
Requisitos
Cabeçalho: afxdll_.h