首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用DllMain

未调用DllMain
EN

Stack Overflow用户
提问于 2010-10-24 12:15:10
回答 2查看 1.8K关注 0票数 0

我有一个这样定义的DllMain:

代码语言:javascript
复制
BOOL APIENTRY DllMain( HMODULE hModule,
                   DWORD  ul_reason_for_call,
                   LPVOID lpReserved
                 )
{ 

int i=0, DoHijack=0;

switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
    hMod = hModule;
    hProcessCenter = ::FindWindow(NULL, _T("Form1"));

    ExtractPaths(hModule, ExePath, &kNTIExeName, kNTIDllPath, &kNTIDllName);

    //Only hook target processses
    for(i=0; i < NB_TARGETS; i++)
    {
        if(strstr(kNTIExeName, Targets[i]))
            DoHijack=1;
    }

    if(DoHijack)
    {
            DetourTransactionBegin();
        DetourUpdateThread(GetCurrentThread());
        DetourAttach(&(PVOID&)Real_DrawText, Mine_DrawText); // <- magic
        DetourAttach(&(PVOID&)Real_ExtTextOut, Mine_ExtTextOut); 
        DetourTransactionCommit();
    break;   
    }      

case DLL_THREAD_ATTACH:
        break;
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
        DetourTransactionBegin(); 
        DetourUpdateThread(GetCurrentThread());
        DetourDetach(&(PVOID&)Real_DrawText, Mine_DrawText);
        DetourDetach(&(PVOID&)Real_ExtTextOut, Mine_ExtTextOut); // <- magic
        DetourTransactionCommit();
    break;
}
return TRUE;
 }

这是一个我从工作中买回家的项目,在我编译和运行它之后,dllmain永远不会被调用,因此我的问题是process_attach开关永远不会被点击。是什么原因导致了这种情况的发生?编译器中的某些东西,其中一个链接选项?

动态链接库在工作中运行良好...

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2010-10-24 12:37:41

你不能“运行”DLL。也许您已经将其构建为一个可执行项目,对于这个项目,DllMain没有什么特别的意义。

票数 0
EN

Stack Overflow用户

发布于 2010-10-26 05:31:09

今天早上我重新审视了它,意识到dllmain正在被调用,但实际上我在一个检查NBTargets值中犯了一个错误,这就是为什么我的代码不能执行……

回到它..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4007161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档