// Token: 0x0600089A RID: 2202 RVA: 0x0001D590 File Offset: 0x0001B790 internal void RegisterWithHost() { if (AppDomainManager.HasHost()) { IntPtr intPtr = IntPtr.Zero; RuntimeHelpers.PrepareConstrainedRegions(); try { intPtr = Marshal.GetIUnknownForObject(this); AppDomainManager.RegisterWithHost(intPtr); } finally { if (!intPtr.IsNull()) { Marshal.Release(intPtr); } } } }
internal void RegisterWithHost() { if (!AppDomainManager.HasHost()) { return; } IntPtr num = IntPtr.Zero; RuntimeHelpers.PrepareConstrainedRegions(); try { num = Marshal.GetIUnknownForObject((object)this); AppDomainManager.RegisterWithHost(num); } finally { if (!num.IsNull()) { Marshal.Release(num); } } }
private void CreateAppDomainManager() { Contract.Assert(_domainManager == null, "_domainManager == null"); AppDomainSetup adSetup = FusionStore; #if FEATURE_VERSIONING String trustedPlatformAssemblies = (String)(GetData("TRUSTED_PLATFORM_ASSEMBLIES")); if (trustedPlatformAssemblies != null) { String platformResourceRoots = (String)(GetData("PLATFORM_RESOURCE_ROOTS")); if (platformResourceRoots == null) { platformResourceRoots = String.Empty; } String appPaths = (String)(GetData("APP_PATHS")); if (appPaths == null) { appPaths = String.Empty; } String appNiPaths = (String)(GetData("APP_NI_PATHS")); if (appNiPaths == null) { appNiPaths = String.Empty; } String appLocalWinMD = (String)(GetData("APP_LOCAL_WINMETADATA")); if (appLocalWinMD == null) { appLocalWinMD = String.Empty; } SetupBindingPaths(trustedPlatformAssemblies, platformResourceRoots, appPaths, appNiPaths, appLocalWinMD); } #endif // FEATURE_VERSIONING string domainManagerAssembly; string domainManagerType; GetAppDomainManagerType(out domainManagerAssembly, out domainManagerType); if (domainManagerAssembly != null && domainManagerType != null) { try { new PermissionSet(PermissionState.Unrestricted).Assert(); _domainManager = CreateInstanceAndUnwrap(domainManagerAssembly, domainManagerType) as AppDomainManager; CodeAccessPermission.RevertAssert(); } catch (FileNotFoundException e) { throw new TypeLoadException(Environment.GetResourceString("Argument_NoDomainManager"), e); } catch (SecurityException e) { throw new TypeLoadException(Environment.GetResourceString("Argument_NoDomainManager"), e); } catch (TypeLoadException e) { throw new TypeLoadException(Environment.GetResourceString("Argument_NoDomainManager"), e); } if (_domainManager == null) { throw new TypeLoadException(Environment.GetResourceString("Argument_NoDomainManager")); } // If this domain was not created by a managed call to CreateDomain, then the AppDomainSetup // will not have the correct values for the AppDomainManager set. FusionStore.AppDomainManagerAssembly = domainManagerAssembly; FusionStore.AppDomainManagerType = domainManagerType; bool notifyFusion = _domainManager.GetType() != typeof(System.AppDomainManager) && !DisableFusionUpdatesFromADManager(); AppDomainSetup FusionStoreOld = null; if (notifyFusion) FusionStoreOld = new AppDomainSetup(FusionStore, true); // Initialize the AppDomainMAnager and register the instance with the native host if requested _domainManager.InitializeNewDomain(FusionStore); if (notifyFusion) SetupFusionStore(_FusionStore, FusionStoreOld); // Notify Fusion about the changes the user implementation of InitializeNewDomain may have made to the FusionStore object. #if FEATURE_APPDOMAINMANAGER_INITOPTIONS AppDomainManagerInitializationOptions flags = _domainManager.InitializationFlags; if ((flags & AppDomainManagerInitializationOptions.RegisterWithHost) == AppDomainManagerInitializationOptions.RegisterWithHost) { _domainManager.RegisterWithHost(); } #endif // FEATURE_APPDOMAINMANAGER_INITOPTIONS } InitializeCompatibilityFlags(); }
private void CreateAppDomainManager() { Contract.Assert(_domainManager == null, "_domainManager == null"); AppDomainSetup adSetup = FusionStore; #if FEATURE_VERSIONING if (String.IsNullOrEmpty(adSetup.GetUnsecureManifestFilePath())) { String trustedPlatformAssemblies = (String)(GetData("TRUSTED_PLATFORM_ASSEMBLIES")); if (trustedPlatformAssemblies != null) { String platformResourceRoots = (String)(GetData("PLATFORM_RESOURCE_ROOTS")); if (platformResourceRoots == null) { platformResourceRoots = String.Empty; } String appPaths = (String)(GetData("APP_PATHS")); if (appPaths == null) { appPaths = String.Empty; } String appNiPaths = (String)(GetData("APP_NI_PATHS")); if (appNiPaths == null) { appNiPaths = String.Empty; } SetupBindingPaths(trustedPlatformAssemblies, platformResourceRoots, appPaths, appNiPaths); } } else { // Chicken-Egg problem: At this point, security is not yet fully up. // We need this information to power up the manifest to enable security. String manifestFilePath = adSetup.GetUnsecureManifestFilePath(); bool fIsAssemblyPath = false; String applicationBase = adSetup.GetUnsecureApplicationBase(); String applicationName = adSetup.ApplicationName; if ((manifestFilePath == null) && (applicationBase != null) && (applicationName != null)) { manifestFilePath = Path.Combine(applicationBase, applicationName); fIsAssemblyPath = true; } SetupManifest(manifestFilePath, fIsAssemblyPath); } #endif // FEATURE_VERSIONING string domainManagerAssembly; string domainManagerType; GetAppDomainManagerType(out domainManagerAssembly, out domainManagerType); if (domainManagerAssembly != null && domainManagerType != null) { try { new PermissionSet(PermissionState.Unrestricted).Assert(); _domainManager = CreateInstanceAndUnwrap(domainManagerAssembly, domainManagerType) as AppDomainManager; CodeAccessPermission.RevertAssert(); } catch (FileNotFoundException e) { throw new TypeLoadException(Environment.GetResourceString("Argument_NoDomainManager"), e); } catch (SecurityException e) { throw new TypeLoadException(Environment.GetResourceString("Argument_NoDomainManager"), e); } catch (TypeLoadException e) { throw new TypeLoadException(Environment.GetResourceString("Argument_NoDomainManager"), e); } if (_domainManager == null) { throw new TypeLoadException(Environment.GetResourceString("Argument_NoDomainManager")); } // If this domain was not created by a managed call to CreateDomain, then the AppDomainSetup // will not have the correct values for the AppDomainManager set. FusionStore.AppDomainManagerAssembly = domainManagerAssembly; FusionStore.AppDomainManagerType = domainManagerType; bool notifyFusion = _domainManager.GetType() != typeof(System.AppDomainManager) && !DisableFusionUpdatesFromADManager(); AppDomainSetup FusionStoreOld = null; if (notifyFusion) FusionStoreOld = new AppDomainSetup(FusionStore, true); // Initialize the AppDomainMAnager and register the instance with the native host if requested _domainManager.InitializeNewDomain(FusionStore); if (notifyFusion) SetupFusionStore(_FusionStore, FusionStoreOld); // Notify Fusion about the changes the user implementation of InitializeNewDomain may have made to the FusionStore object. #if FEATURE_APPDOMAINMANAGER_INITOPTIONS AppDomainManagerInitializationOptions flags = _domainManager.InitializationFlags; if ((flags & AppDomainManagerInitializationOptions.RegisterWithHost) == AppDomainManagerInitializationOptions.RegisterWithHost) { _domainManager.RegisterWithHost(); } #endif // FEATURE_APPDOMAINMANAGER_INITOPTIONS } InitializeCompatibilityFlags(); }