C# 检查运行时是否从COM模块加载WIN32/非托管DLL

C# 检查运行时是否从COM模块加载WIN32/非托管DLL,c#,c++,winapi,dll,com,C#,C++,Winapi,Dll,Com,我想检查是否已经从COM模块加载了本机dll?我的目的是检查是否加载了相应的DLL,以便调用相应的方法。我引用了“”链接,但没有帮助。调试期间,我的本机模块也不会显示在visual studio中的已加载模块列表窗口中,但在设置“启用本机代码调试”时会显示?有没有办法通过代码实现相同的功能?调用传递模块名称。如果在进程中加载了模块,则返回一个非空值。调用传递模块名称。如果在您的进程中加载了模块,则会返回一个非空值。我找到了解决问题的方法,如下所示: private bool IsNativDll

我想检查是否已经从COM模块加载了本机dll?我的目的是检查是否加载了相应的DLL,以便调用相应的方法。我引用了“”链接,但没有帮助。调试期间,我的本机模块也不会显示在visual studio中的已加载模块列表窗口中,但在设置“启用本机代码调试”时会显示?有没有办法通过代码实现相同的功能?

调用传递模块名称。如果在进程中加载了模块,则返回一个非空值。

调用传递模块名称。如果在您的进程中加载了模块,则会返回一个非空值。

我找到了解决问题的方法,如下所示:

private bool IsNativDllLoaded(string dllName) 
{ 
    IntPtr module = GetModuleHandle(dllName); 
    return module != IntPtr.Zero; 
}

我找到了一个解决问题的方法,如下所示:

private bool IsNativDllLoaded(string dllName) 
{ 
    IntPtr module = GetModuleHandle(dllName); 
    return module != IntPtr.Zero; 
}

非常感谢你。它帮助了我。:)这个API调用实际上是在为自己设置竞争条件,另一方面,能够执行相同的检查,但通过增加其ref计数将模块锁定到内存中。然后,返回的句柄可以安全地用于对的后续调用。@IInspectable:很好的一点,但考虑到COM的设计,它可能不是必需的。用于确定是否保留任何引用。获取参考资料应该是使模块保持活力所必需的。非常感谢。它帮助了我。:)这个API调用实际上是在为自己设置竞争条件,另一方面,能够执行相同的检查,但通过增加其ref计数将模块锁定到内存中。然后,返回的句柄可以安全地用于对的后续调用。@IInspectable:很好的一点,但考虑到COM的设计,它可能不是必需的。用于确定是否保留任何引用。获取引用应该是保持模块活动所必需的。