的DllMain和Qt Mfc的迁移(DllMain and Qt Mfc Migration)

2019-10-18 04:55发布

我使用了MFC Qt的迁移方案,迁移我的MFC插件的Qt。 我的MFC插件加载第三方MFC应用程序。 基本上我用下面的例子基于Qt的应用程序扩展 :

BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID  ) {
 static bool ownApplication = FALSE;
 if ( dwReason == DLL_PROCESS_ATTACH )
     ownApplication = QMfcApp::pluginInstance( hInstance );
 if ( dwReason == DLL_PROCESS_DETACH && ownApplication )
     delete qApp;
 return TRUE;
}

我读pluginInstance功能的代码,诠释了Qt源,并注意pluginInstance调用LoadLibrary和SetWindowsHook内。

一切工作确定,到目前为止。 但是,我有以下的忧虑:严禁调用LoadLibrary和功能从像SetWindowsHook从DllMain的user32.dll中。 我读到,在MSDN文档的DllMain中。 所以,如果这是不安全的,为什么官方Qt的网站说,打电话pluginInstance DllMain中? 基于Qt的应用程序扩展也许我失去了一些东西

Answer 1:

也许他们没有看过吧:),但它的安全调用LoadLibrary()为不叫喜欢的CreateThread()等其他“不安全”的API一个DLL,它只是一个建议,只是觉得自己这是怎么回事时,你叫从DLL_PROCESS_ATTACH调用LoadLibrary(),库被加载时,IAT充满叫的DllMain()。



文章来源: DllMain and Qt Mfc Migration