DllMain和Qt Mfc Migration

时间:2009-11-05 07:36:34

标签: winapi qt qt4 qt-mfc-migration

我正在使用Mfc to Qt迁移解决方案,将我的Mfc插件迁移到Qt。 我的Mfc插件加载在第三方Mfc应用程序中。基本上我使用以下示例Qt based Application Extension

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;
}

我在Qt Sources中读取了pluginInstance函数的代码,并注意到pluginInstance调用了LoadLibrary和SetWindowsHook。

到目前为止,一切正常。但我有以下担忧: 禁止从DllMain中的SetWindowsHook调用来自user32.dll的LoadLibrary和函数。我在msdn doc中读到了DllMain。那么,如果这是不安全的,为什么官方的Qt网站会说在DllMain中调用pluginInstance? Qt based Application Extension 也许我错过了什么

1 个答案:

答案 0 :(得分:0)

也许他们没有阅读它:),但是可以安全地调用LoadLibrary()来获取一个不会调用其他'不安全'api的DLL,比如CreateThread()等,这只是一个建议,只要想想自己是什么从DLL_PROCESS_ATTACH调用LoadLibrary()时,继续加载,加载IAT,填充IAT并调用DllMain()。