【问题标题】:DllMain and Qt Mfc MigrationDllMain 和 Qt Mfc 迁移
【发布时间】:2009-11-05 07:36:33
【问题描述】:

我正在使用 Mfc 到 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。

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

【问题讨论】:

    标签: winapi qt qt4 qt-mfc-migration


    【解决方案1】:

    也许他们没有读过它:),但是对于不调用其他“不安全”API(如 CreateThread() 等)的 DLL 调用 LoadLibrary() 是安全的,这只是一个建议,请自行思考什么是当您从 DLL_PROCESS_ATTACH 调用 LoadLibrary() 时继续,库被加载,IAT 填充并调用 DllMain()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多