CorBindToRuntimeEx (Función)

Actualización: noviembre 2007

Permite a los hosts no administrados cargar Common Language Runtime (CLR) en un proceso. Las funciones CorBindToRuntime y CorBindToRuntimeEx realizan la misma operación, pero la función CorBindToRuntimeEx permite establecer marcadores para especificar el comportamiento de CLR.

Vea Alojar Common Language Runtime para obtener una descripción completa de los escenarios en los que se utiliza CorBindToRuntimeEx.

Esta función adopta una serie de parámetros que permiten a un host hacer lo siguiente:

  • Especificar la versión del motor en tiempo de ejecución que se cargará.

  • Indicar si se debe cargar la versión para el servidor o la de estaciones de trabajo.

  • Controlar si se realiza recolección simultánea o no simultánea de los elementos no utilizados.

Nota

No se admite la recolección simultánea de elementos no utilizados en aplicaciones en las que se ejecuta el emulador WOW64 x86 en sistemas de 64 bits y que implementan la arquitectura Intel Itanium (denominada anteriormente IA-64). Para obtener más información sobre el uso de WOW64 en sistemas Windows de 64 bits, vea Running 32-bit Applications.

  • Determinar si se cargan los ensamblados como neutrales con respecto al dominio.

  • Obtener un puntero de interfaz a ICorRuntimeHost que se puede utilizar para establecer opciones adicionales en la configuración de una instancia de CLR antes de que se inicie.

HRESULT CorBindToRuntimeEx (
        [in]  LPWSTR    pwszVersion, 
        [in]  LPWSTR    pwszBuildFlavor, 
        [in]  DWORD     startupFlags, 
        [in]  REFCLSID  rclsid, 
        [in]  REFIID    riid, 
        [out] LPVOID*   ppv
);

Parámetros

  • pwszVersion
    [in] Cadena que describe la versión de CLR que se desea cargar.

    En .NET Framework, un número de versión está compuesto de cuatro partes separadas por puntos: major.minor.build.revision. La cadena que se pasó como pwszVersion debe comenzar con el carácter "v" seguido de las primeras tres partes del número de versión (por ejemplo, "v1.0.1529").

    Algunas versiones de CLR se instalan con una instrucción de directiva que especifica la compatibilidad con versiones anteriores de CLR. De forma predeterminada, el proceso intermedio ("shim") de inicio evalúa pwszVersion con las instrucciones de directiva y carga la versión más reciente del motor en tiempo de ejecución compatible con la versión solicitada. Un host puede hacer que el proceso intermedio ("shim") omita la evaluación de directivas y cargue exactamente la versión especificada en pwszVersion, pasando el valor STARTUP_LOADER_SAFEMODE para el parámetro startupFlags, como se describe a continuación.

    Si el llamador especifica null como valor de pwszVersion, se cargará la versión más reciente del motor en tiempo de ejecución. Pasar este valor hace que el host no tenga ningún control sobre la versión del motor en tiempo de ejecución que se carga. Aunque este planteamiento puede ser apropiado en algunos escenarios, se recomienda encarecidamente que el host proponga cargar una versión específica.

  • pwszBuildFlavor
    [in] Cadena que especifica si se debe cargar la versión de CLR para servidor o para estación de trabajo. Los valores válidos son svr y wks. La versión para servidor está optimizada para aprovechar las ventajas que aportan varios procesadores al realizar recolecciones de elementos no utilizados, mientras que la versión para estación de trabajo está optimizada para aplicaciones cliente que se ejecutan en equipos con un solo procesador.

    Si se establece pwszBuildFlavoren null, se cargará la versión para estaciones de trabajo. Cuando la ejecución se lleva a cabo en un equipo con un solo procesador, se carga siempre la versión para estación de trabajo, incluso aunque pwszBuildFlavoresté establecido en svr. Sin embargo, si pwszBuildFlavorse establece en svr y se especifica la recolección simultánea de elementos no utilizados (vea la descripción del parámetro startupFlags), se cargará la versión para servidor.

  • startupFlags
    [in] Combinación de valores de la enumeración STARTUP_FLAGS. Estos marcadores controlan la recolección simultánea de elementos no utilizados, el código neutral respecto al dominio y el comportamiento del parámetro pwszVersion. Si no se establece ningún marcador, el valor predeterminado es un dominio único. Valores válidos son:

    • STARTUP_CONCURRENT_GC

    • STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN

    • STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN

    • STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOST

    • STARTUP_LOADER_SAFEMODE

    • STARTUP_LEGACY_IMPERSONATION

    • STARTUP_LOADER_SETPREFERENCE

    • STARTUP_SERVER_GC

    • STARTUP_HOARD_GC_VM

    • STARTUP_SINGLE_VERSION_HOSTING_INTERFACE

    • STARTUP_LEGACY_IMPERSONATION

    • STARTUP_DISABLE_COMMITTHREADSTACK

    • STARTUP_ALWAYSFLOW_IMPERSONATION

    Para obtener una descripción de estos marcadores, vea la enumeración STARTUP_FLAGS.

  • rclsid
    [in] CLSID de la coclase que implementa la interfaz ICorRuntimeHost. Los valores admitidos son CLSID_CorRuntimeHost o CLSID_CLRRuntimeHost.

  • riid
    [in] IID de la interfaz solicitada de rclsid. Los valores admitidos son IID_ICorRuntimeHost o IID_ICLRRuntimeHost.

  • ppv
    [out] Puntero de interfaz devuelto a riid.

Comentarios

Si pwszVersion especifica una versión del motor en tiempo de ejecución que no existe, CorBindToRuntimeEx devuelve un valor HRESULT de CLR_E_SHIM_RUNTIMELOAD.

Flujo y contexto de ejecución de la identidad de Windows

En la versión 1 de CLR, el objeto WindowsIdentity no fluye por puntos asincrónicos, como nuevos subprocesos, grupos de subprocesos o devoluciones de llamada de temporizador. En la versión 2.0 de CLR, el objeto ExecutionContext ajusta cierta información sobre el subproceso en ejecución y hace que fluya por cualquier punto asincrónico, pero no por los límites del dominio de aplicación. De igual forma, el objeto WindowsIdentity también fluye por cualquier punto asincrónico. Por consiguiente, también fluye la suplantación actual en el subproceso, si la hubiera.

El flujo puede modificarse de dos maneras:

  1. Si se modifica la configuración de ExecutionContext para suprimir el flujo por subproceso (vea los métodos SuppressFlow, SuppressFlow y SuppressFlowWindowsIdentity).

  2. Si se cambia el modo predeterminado del proceso al modo de compatibilidad de la versión 1, donde el objeto WindowsIdentity no fluye por cualquier punto asincrónico, independientemente de los valores de ExecutionContext en el subproceso actual. La manera de cambiar el modo predeterminado depende de si se utiliza un archivo ejecutable administrado o una interfaz de hospedaje no administrada para cargar CLR:

    1. Para los archivos ejecutables administrados, se debe establecer el atributo enabled del elemento <legacyImpersonationPolicy> en true.

    2. Para las interfaces de hospedaje no administradas, se establece el marcador STARTUP_LEGACY_IMPERSONATION en el parámetro startupFlags al llamar a la función CorBindToRuntimeEx.

    El modo de compatibilidad de la versión 1 se aplica a todo el proceso y a todos los dominios de aplicación del proceso.

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: MSCorEE.idl

Biblioteca: MSCorEE.dll

Versiones de .NET Framework: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Vea también

Referencia

CorBindToCurrentRuntime (Función)

CorBindToRuntime (Función)

CorBindToRuntimeByCfg (Función)

CorBindToRuntimeHost (Función)

ICorRuntimeHost

Otros recursos

Funciones estáticas globales para hospedaje