AfxTermExtensionModule
Chamar esta função para permitir MFC para limpeza a DLL de extensão quando cada processo desanexa da DLL (o que acontece quando o processo for encerrado, ou quando a DLL é descarregada sistema autônomo resultado de um AfxFreeLibrary telefonar).
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 DLL de extensão.bTodos
If TRUE, limpe todos os módulos DLL de extensão.Caso contrário, limpeza apenas o módulo DLL corrente.
Comentários
AfxTermExtensionModule será excluir qualquer armazenamento local acoplado ao módulo e remova todas as entradas do cache de MAP 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 é carregado e libera dynamitelefonary de DLLs de extensão, certifique-se telefonar AfxTermExtensionModule. Desde a extensão a maioria das DLLs não são carregadas dinamicamente (geralmente, eles são vinculados por meio de suas bibliotecas de importação), a telefonar para AfxTermExtensionModule geralmente não é necessário.
DLLs de extensão do MFC precisará chamar AfxInitExtensionModule in their DllMain. Se a DLL será ser exportando CRuntimeClass objetos ou tem seus próprios recursos personalizados, você também precisará criar um CDynLinkLibrary objeto DllMain.
Requisitos
Cabeçalho: afxdll_.h