调用程序集

在调用程序集的入口点时,建议使用搜索程序集时处于活动状态的激活上下文。 至少确保加载程序集的组件不会意外获取应用程序正在使用的激活上下文。 跨 DLL 边界泄露激活上下文可能会导致意外依赖项。 如果应用程序编译ISOLATION_AWARE_ENABLED,则这不是问题,因为在这种情况下,默认情况下没有激活上下文处于活动状态。 如果未使用定义的ISOLATION_AWARE_ENABLED进行编译,则应激活 NULL 激活上下文或用于加载程序集的相同激活上下文。

以下示例确保托管 DLL 在可识别的上下文中运行:

ULONG_PTR ulpCookie;
ActivateActCtx(hTheActCtxForMyDll, &ulpCookie);
__try 
{
        MyDllIsolatedFunction();
    myDllIsolatedComInterface->Funct();
}
__finally 
{
    DeactivateActCtx(0, ulpCookie);
}