Partager via


CorBindToRuntime, fonction

Permet à des hôtes non managés de charger le Common Language Runtime (CLR) dans un processus.

Cette fonction est déconseillée dans le .NET Framework version 4.

HRESULT CorBindToRuntime (
    [in]  LPCWSTR     pwszVersion, 
    [in]  LPCWSTR     pwszBuildFlavor, 
    [in]  REFCLSID    rclsid, 
    [in]  REFIID      riid, 
    [out] LPVOID FAR  *ppv
);

Paramètres

  • pwszVersion
    [in] Chaîne décrivant la version du CLR à charger.

    Dans le .NET Framework, un numéro de version est constitué de quatre parties séparées par des points : major.minor.build.revision. La chaîne passée en tant que 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 évalue pwszVersion en fonction des instructions de stratégie et charge la dernière version du runtime compatible avec la version demandée. Un hôte peut obliger le shim à ignorer l'évaluation de stratégie et à charger la version exacte spécifiée dans pwszVersion en passant une valeur de STARTUP_LOADER_SAFEMODE pour le paramètre flags, comme décrit ci-dessous.

    Si l'appelant spécifie null pour pwszVersion, la dernière version du runtime est chargée. Lorsque la valeur null est passée, l'hôte n'a aucun contrôle sur la version du runtime qui est chargée. Bien que cette approche puisse convenir 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 convient de charger la build du serveur ou de la station de travail du CLR. Les valeurs valides sont svr et wks. La build du serveur est optimisée de manière à utiliser plusieurs processeurs pour les garbage collection, tandis que la build de la station de travail est optimisée pour les applications clientes s'exécutant sur un ordinateur à un seul processeur.

    Si la valeur de pwszBuildFlavor est null, la build de la station de travail est chargée. Lors de l'exécution sur un ordinateur à un seul processeur, la build de la station de travail est toujours chargée, même si pwszBuildFlavora pour valeur svr. Toutefois, si pwszBuildFlavora pour valeur svr et qu'un garbage collection simultané est spécifié (consultez la description du paramètre flags ci-dessous), la build du serveur est chargée.

  • rclsid
    [in] CLSID de la coclasse qui implémente l'interface ICorRuntimeHost ou ICLRRuntimeHost. Les valeurs prises en charge sont CLSID_CorRuntimeHost ou CLSID_CLRRuntimeHost.

  • riid
    [in] IID de l'interface demandée par rclsid. Les valeurs prises en charge sont IID_ICorRuntimeHost ou ID_ICLRRuntimeHost.

  • ppv
    [out] Pointeur d'interface retourné à riid.

Notes

Si pwszVersion spécifie une version du runtime qui n'existe pas, CorBindToRuntimeEx retourne alors une valeur HRESULT de CLR_E_SHIM_RUNTIMELOAD.

Contexte d'exécution et flux de l'identité Windows

Dans la version 1 du CLR, l'objet WindowsIdentity n'est pas transmis entre des points asynchrones (nouveaux threads, pools de threads ou rappels de la minuterie). Dans la version 2.0 du CLR, un objet ExecutionContext encapsule des informations sur le thread en cours d'exécution et les transmet d'un point asynchrone à un autre, mais pas au-delà des limites de domaine d'application. De la même façon, l'objet WindowsIdentity est transmis d'un point asynchrone à un autre. Par conséquent, l'emprunt d'identité actuel sur le thread, le cas échéant, est également transmis.

Vous pouvez changer le flux de deux façons :

  1. En modifiant les paramètres ExecutionContext pour supprimer la transmission thread par thread (consultez les méthodes SuppressFlow, SuppressFlow et SuppressFlowWindowsIdentity).

  2. En remplaçant le mode par défaut du processus par le mode de compatibilité de la version 1, dans lequel l'objet WindowsIdentity n'est pas transmis d'un point asynchrone à un autre, indépendamment des paramètres ExecutionContext sur le thread actuel. La manière dont vous modifiez le mode par défaut dépend de l'utilisation d'un fichier exécutable managé ou d'une interface d'hébergement non managée pour charger le CLR :

    1. Pour les fichiers exécutables managés, vous devez affecter true à l'attribut enabled de l'élément <legacyImpersonationPolicy>.

    2. Pour les interfaces d'hébergement non managées, définissez les indicateurs STARTUP_LEGACY_IMPERSONATION dans le paramètre flags lors de l'appel de la fonction CorBindToRuntimeEx.

    Le mode de compatibilité version 1 s'applique au processus entier et à tous les domaines d'application dans le processus.

Notes

CorBindToRuntimeEx et CorBindToRuntime exécutent la même opération, mais la fonction CorBindToRuntimeEx vous permet de définir des indicateurs pour spécifier le comportement du CLR.

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

En-tête : MSCorEE.h

Bibliothèque : MSCorEE.dll

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Voir aussi

Référence

CorBindToCurrentRuntime, fonction

CorBindToRuntimeByCfg, fonction

CorBindToRuntimeEx, fonction

CorBindToRuntimeHost, fonction

ICorRuntimeHost, interface

Autres ressources

Fonctions statiques globales de l'hébergement .NET Framework 1.1 et 2.0