Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Permet aux hôtes non managés de charger le Common Language Runtime (CLR) dans un processus.
CorBindToRuntime et CorBindToRuntimeEx les fonctions effectuent la même opération, mais la CorBindToRuntimeEx fonction vous permet de définir des indicateurs pour spécifier le comportement du CLR.
Cette fonction a été déconseillée dans .NET Framework 4.
Cette fonction prend un ensemble de paramètres qui permettent à un hôte d’effectuer les opérations suivantes :
Spécifiez la version du runtime qui sera chargée.
Indiquez si la build du serveur ou de la station de travail doit être chargée.
Déterminez si le garbage collection simultané ou le garbage collection non simultané est effectué.
Note
Le garbage collection simultané n’est pas pris en charge dans les applications exécutant l’émulateur WOW64 x86 sur des systèmes 64 bits qui implémentent l’architecture Intel Itanium (anciennement IA-64). Pour plus d’informations sur l’utilisation de WOW64 sur les systèmes Windows 64 bits, consultez Exécution d’applications 32 bits.
Contrôlez si les assemblys sont chargés en tant qu’assemblys neutres du domaine.
Obtenez un pointeur d’interface vers un ICorRuntimeHost qui peut être utilisé pour définir des options supplémentaires pour configurer une instance du CLR avant son démarrage.
Syntaxe
HRESULT CorBindToRuntimeEx (
[in] LPCWSTR pwszVersion,
[in] LPCWSTR pwszBuildFlavor,
[in] DWORD startupFlags,
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID FAR *ppv
);
Paramètres
pwszVersion [in] Chaîne décrivant la version du CLR que vous souhaitez charger.
Un numéro de version dans .NET Framework se compose de quatre parties séparées par des périodes : major.minor.build.revision. La chaîne passée comme pwszVersion doit commencer par le caractère « v » suivi des trois premières parties du numéro de version (par exemple, « v1.0.1529 »).
Certaines versions du CLR sont installées avec une instruction de stratégie qui spécifie la compatibilité avec les versions précédentes du CLR. Par défaut, le shim de démarrage est pwszVersion évalué par rapport aux instructions de stratégie et charge la dernière version du runtime compatible avec la version demandée. Un hôte peut forcer le shim à ignorer l’évaluation de la stratégie et à charger la version exacte spécifiée en pwszVersion passant une valeur du STARTUP_LOADER_SAFEMODEstartupFlags paramètre, comme décrit ci-dessous.
Si l’appelant spécifie null pour pwszVersion, CorBindToRuntimeEx identifie l’ensemble des runtimes installés dont les numéros de version sont inférieurs au runtime .NET Framework 4 et charge la dernière version du runtime à partir de ce jeu. Il ne charge pas .NET Framework 4 ou version ultérieure et échoue si aucune version antérieure n’est installée. Notez que le passage de la valeur Null ne donne aucun contrôle à l’hôte sur la version du runtime chargée. Bien que cette approche puisse être appropriée dans certains scénarios, il est fortement recommandé que l’hôte fournisse une version spécifique à charger.
pwszBuildFlavor [in] Chaîne qui spécifie s’il faut charger le serveur ou la build de station de travail du CLR. Les valeurs valides sont svr et wks. La build du serveur est optimisée pour tirer parti de plusieurs processeurs pour les garbage collections, et la build de station de travail est optimisée pour les applications clientes s’exécutant sur un ordinateur à processeur unique.
Si pwszBuildFlavor la valeur est null, la build de station de travail est chargée. Lors de l’exécution sur un ordinateur à processeur unique, la build de la station de travail est toujours chargée, même si elle pwszBuildFlavor est définie sur svr. Toutefois, s’il pwszBuildFlavor est défini svr sur et que le garbage collection simultané est spécifié (voir la description du startupFlags paramètre), la build du serveur est chargée.
startupFlags [in] Combinaison de valeurs de l’énumération STARTUP_FLAGS . Ces indicateurs contrôlent le garbage collection simultané, le code neutre du domaine et le comportement du pwszVersion paramètre. La valeur par défaut est un domaine unique si aucun indicateur n’est défini. Les valeurs suivantes sont valides :
STARTUP_CONCURRENT_GCSTARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAINSTARTUP_LOADER_OPTIMIZATION_MULTI_DOMAINSTARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOSTSTARTUP_LOADER_SAFEMODESTARTUP_LOADER_SETPREFERENCESTARTUP_SERVER_GCSTARTUP_HOARD_GC_VMSTARTUP_SINGLE_VERSION_HOSTING_INTERFACESTARTUP_LEGACY_IMPERSONATIONSTARTUP_DISABLE_COMMITTHREADSTACKSTARTUP_ALWAYSFLOW_IMPERSONATION
Pour obtenir des descriptions de ces indicateurs, consultez l’énumération STARTUP_FLAGS .
rclsid [in] De CLSID la coclasse qui implémente l’interface ICorRuntimeHost ou ICLRRuntimeHost . Les valeurs prises en charge sont CLSID_CorRuntimeHost ou CLSID_CLRRuntimeHost.
riid [in] De IID l’interface demandée à partir de rclsid. Les valeurs prises en charge sont IID_ICorRuntimeHost ou IID_ICLRRuntimeHost.
ppv [out] Pointeur d’interface retourné vers riid.
Remarques
Si pwszVersion elle spécifie une version d’exécution qui n’existe pas, CorBindToRuntimeEx retourne une valeur HRESULT de CLR_E_SHIM_RUNTIMELOAD.
Contexte d’exécution et flux d’identité Windows
Dans la version 1 du CLR, l’objet WindowsIdentity ne circule pas entre des points asynchrones tels que de nouveaux threads, pools de threads ou rappels de minuteur. Dans la version 2.0 du CLR, un ExecutionContext objet encapsule certaines informations sur le thread en cours d’exécution et le circule sur n’importe quel point asynchrone, mais pas sur les limites du domaine d’application. De même, l’objet WindowsIdentity circule également sur n’importe quel point asynchrone. Par conséquent, l’emprunt d’identité actuel sur le thread, le cas échéant, circule également.
Vous pouvez modifier le flux de deux façons :
En modifiant les ExecutionContext paramètres pour supprimer le flux sur une base par thread (voir les SuppressFlowméthodes, SuppressFlowetc SuppressFlowWindowsIdentity .).
En modifiant le mode par défaut du processus en mode de compatibilité version 1, où l’objet WindowsIdentity ne circule sur aucun point asynchrone, quels que soient les ExecutionContext paramètres du thread actuel. La façon dont vous modifiez le mode par défaut dépend de l’utilisation d’un exécutable managé ou d’une interface d’hébergement non managée pour charger le CLR :
Pour les exécutables managés, vous devez définir l’attribut
enabledde l’élémenttrue<legacyImpersonationPolicy> sur .Pour les interfaces d’hébergement non managées, définissez l’indicateur
STARTUP_LEGACY_IMPERSONATIONdans le paramètre lors de l’appelstartupFlagsde laCorBindToRuntimeExfonction.
Le mode de compatibilité version 1 s’applique à l’ensemble du processus et à tous les domaines d’application du processus.
Exigences
Plateformes : Consultez Configuration requise.
En-tête: MSCorEE.h
Bibliothèque : MSCorEE.dll
Versions de .NET Framework : Disponible à partir de la version 1.0