代码之家  ›  专栏  ›  技术社区  ›  Rahul Ramesh

我有一个启用了代理存根支持的ATL项目,在那里可以找到xdlldata中所有方法的实现。h文件?

  •  0
  • Rahul Ramesh  · 技术社区  · 7 年前
    my generated xdlldta.h file 
    
    #ifdef _MERGE_PROXYSTUB
    
    extern "C" 
    {
    BOOL WINAPI PrxDllMain(HINSTANCE hInstance, DWORD dwReason, 
        LPVOID lpReserved);
    STDAPI PrxDllCanUnloadNow(void);
    STDAPI PrxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
    STDAPI PrxDllRegisterServer(void);
    STDAPI PrxDllUnregisterServer(void);
    }
    
    #endif
    

    在这里,我不认为这些方法的实现是我项目的一部分,我想具体检查

    BOOL WINAPI PrxDllMain(HINSTANCE hInstance, DWORD dwReason, 
        LPVOID lpReserved);
    

    我在哪里可以找到相同的?提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Roman Ryltsov    7 年前

    您的xlldata。c定义 ENTRY_PREFIX :

    #define ENTRY_PREFIX    Prx
    

    然后包括dlldata。c、 由MIDL编译器生成:

    #include "dlldata.c"
    

    生成的dlldata。c文件包括SDK rpcproxy。h:

    #include <rpcproxy.h>
    

    rpcproxy。h依次查看 ENTRY\u前缀 ,实际上它的标题中甚至有一些简短的语法帮助。

    这是定义PrxDllMain的地方:

    /*DllMain saves the DLL module handle for later use by DllRegisterServer */ \
    BOOL WINAPI DLLMAIN_ENTRY( \
        HINSTANCE  hinstDLL, \
        DWORD  fdwReason, \
        LPVOID  lpvReserved) \
    { \
    

    DLLMAIN\u条目有:

    #define __rpc_macro_expand2(a, b) a##b
    #define __rpc_macro_expand(a, b) __rpc_macro_expand2(a,b)
    // ...
    #define DLLMAIN_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllMain)