CorBindToRuntime (Función)
Permite a los hosts no administrados cargar Common Language Runtime (CLR) en un proceso.
Esta función está en desuso en .NET Framework 4.
Sintaxis
HRESULT CorBindToRuntime (
[in] LPCWSTR pwszVersion,
[in] LPCWSTR pwszBuildFlavor,
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID FAR *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 consta 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 runtime 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 flags
, como se describe a continuación.
Si el autor de la llamada especifica null para pwszVersion
, se carga la versión más reciente del runtime. Pasar un valor null impide al host controlar la versión del runtime 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 compilación de CLR para servidor o para estación de trabajo. Los valores válidos son svr
y wks
. La compilación para servidor está optimizada para aprovechar las ventajas que aportan varios procesadores al realizar recolecciones de elementos no utilizados, mientras que la compilación para estación de trabajo está optimizada para aplicaciones cliente que se ejecutan en equipos con un solo procesador.
Si pwszBuildFlavor
se establece en null, se cargará la compilación para la estación de trabajo. Cuando la ejecución se lleva a cabo en una máquina con un solo procesador, se carga siempre la compilación para la estación de trabajo, incluso aunque pwszBuildFlavor
esté establecido en svr
. Pero si pwszBuildFlavor
se establece en svr
y se especifica la recolección de elementos no utilizados simultánea (vea la descripción del parámetro flags
), se cargará la compilación para el servidor.
rclsid
[in] El elemento CLSID
de la coclase que implementa la interfaz ICorRuntimeHost o ICLRRuntimeHost. 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 runtime que no existe, CorBindToRuntimeEx
devuelve un valor HRESULT de CLR_E_SHIM_RUNTIMELOAD.
Los elementos CorBindToRuntime y CorBindToRuntime
realizan la misma operación, pero la función CorBindToRuntimeEx
permite establecer marcas para especificar el comportamiento del CLR.
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:
Si se modifica la configuración de ExecutionContext para suprimir el flujo por subproceso (vea los métodos SuppressFlow, SuppressFlow y SuppressFlowWindowsIdentity).
Si se cambia el modo predeterminado del proceso al modo de compatibilidad de la versión 1, donde el objeto WindowsIdentity no fluye por ningún punto asincrónico, independientemente de los valores de ExecutionContext en el subproceso actual. La manera de cambiar el modo predeterminado depende de si se usa un archivo ejecutable administrado o una interfaz de hospedaje no administrada para cargar CLR:
Para los archivos ejecutables administrados, se debe establecer el atributo
enabled
del elemento <legacyImpersonationPolicy> entrue
.Para las interfaces de hospedaje no administradas, se establece la marca
STARTUP_LEGACY_IMPERSONATION
en el parámetroflags
al llamar a la funciónCorBindToRuntimeEx
.
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.
Encabezado: MSCorEE.h
Biblioteca: MSCorEE.dll
Versiones de .NET Framework: está disponible desde la versión 1.0