【问题标题】:One time Hook DLL initialization一次 Hook DLL 初始化
【发布时间】:2011-03-14 08:00:31
【问题描述】:

我的程序使用 SetWindowsHookEx 在我的 DLL 中设置全局挂钩函数。但是我希望 DLL 可以处理一个文件,所以我需要一个文件打开一次。我不能使用 DllMain 的 DLL_PROCESS_ATTACH,因为它被多次调用。我的问题的最佳解决方案是什么?

【问题讨论】:

    标签: c winapi


    【解决方案1】:

    使用静态标志来判断您是否已经初始化。

    void DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
        static BOOL initialized = FALSE;
    
        switch(dwReason) {
            case DLL_PROCESS_ATTACH:
                if(!initialized) {
                    // Perform initialization here...ex: open your file.
                    initialized = TRUE;
                }
                break;
            case DLL_PROCESS_DETACH:
                if(initialized) {
                    // Perform cleanup here...ex: close your file.
                    initialized = FALSE;
                }
                break;
        };
    
    }
    

    【讨论】:

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