调用程序集

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

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

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