Função CorBindToRuntime
Permite que os anfitriões não geridos carreguem o runtime de idioma comum (CLR) para um processo.
Esta função foi preterida no .NET Framework 4.
Sintaxe
HRESULT CorBindToRuntime (
[in] LPCWSTR pwszVersion,
[in] LPCWSTR pwszBuildFlavor,
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID FAR *ppv
);
Parâmetros
pwszVersion
[in] Uma cadeia que descreve a versão do CLR que pretende carregar.
Um número de versão no .NET Framework consiste em quatro partes separadas por períodos: major.minor.build.revision. A cadeia transmitida como pwszVersion
tem de começar com o caráter "v" seguido das três primeiras partes do número da versão (por exemplo, "v1.0.1529").
Algumas versões do CLR são instaladas com uma instrução de política que especifica compatibilidade com versões anteriores do CLR. Por predefinição, o shim de arranque avalia pwszVersion
as instruções de política e carrega a versão mais recente do runtime que é compatível com a versão que está a ser pedida. Um anfitrião pode forçar o shim a ignorar a avaliação da política e carregar a versão exata especificada pwszVersion
ao transmitir um valor de STARTUP_LOADER_SAFEMODE
para o flags
parâmetro, conforme descrito abaixo.
Se o autor da chamada especificar nulo para pwszVersion
, a versão mais recente do runtime é carregada. A passagem nula não dá ao anfitrião qualquer controlo sobre a versão do runtime que é carregada. Embora esta abordagem possa ser adequada em alguns cenários, recomenda-se vivamente que o anfitrião forneça uma versão específica para carregar.
pwszBuildFlavor
[in] Uma cadeia que especifica se deve carregar o servidor ou a compilação da estação de trabalho do CLR. Os valores válidos são svr
e wks
. A compilação do servidor está otimizada para tirar partido de vários processadores para recolhas de lixo e a compilação da estação de trabalho está otimizada para aplicações cliente em execução numa máquina de processador único.
Se pwszBuildFlavor
estiver definida como nula, a compilação da estação de trabalho é carregada. Ao executar num computador de processador único, a compilação da estação de trabalho é sempre carregada, mesmo que pwszBuildFlavor
esteja definida como svr
. No entanto, se pwszBuildFlavor
estiver definida como svr
e for especificada uma recolha de lixo simultânea (veja a descrição do flags
parâmetro), a compilação do servidor é carregada.
rclsid
[in] A CLSID
da classe coclasse que implementa o ICorRuntimeHost ou a interface ICLRRuntimeHost . Os valores suportados são CLSID_CorRuntimeHost ou CLSID_CLRRuntimeHost.
riid
[in] A IID
interface pedida de rclsid
. Os valores suportados são IID_ICorRuntimeHost ou IID_ICLRRuntimeHost.
ppv
[fora] O ponteiro da interface devolvido para riid
.
Observações
Se pwszVersion
especificar uma versão de runtime que não existe, CorBindToRuntimeEx
devolve um valor HRESULT de CLR_E_SHIM_RUNTIMELOAD.
CorBindToRuntimeEx e executar CorBindToRuntime
a mesma operação, mas a CorBindToRuntimeEx
função permite-lhe definir sinalizadores para especificar o comportamento do CLR.
Contexto de Execução e Fluxo da Identidade do Windows
Na versão 1 do CLR, o WindowsIdentity objeto não flui através de pontos assíncronos, como novos threads, conjuntos de threads ou chamadas de retorno de temporizador. Na versão 2.0 do CLR, um ExecutionContext objeto molda algumas informações sobre o thread atualmente em execução e flui-o através de qualquer ponto assíncrono, mas não através dos limites do domínio da aplicação. Da mesma forma, o WindowsIdentity objeto também flui através de qualquer ponto assíncrono. Portanto, a representação atual no thread, se existir, também flui.
Pode alterar o fluxo de duas formas:
Ao modificar as ExecutionContext definições para suprimir o fluxo por thread (veja os SuppressFlowmétodos , SuppressFlowe SuppressFlowWindowsIdentity ).
Ao alterar o modo predefinido do processo para o modo de compatibilidade da versão 1, em que o WindowsIdentity objeto não flui através de nenhum ponto assíncrono, independentemente das ExecutionContext definições no thread atual. A forma como altera o modo predefinido depende se utiliza um executável gerido ou uma interface de alojamento não gerida para carregar o CLR:
Para executáveis geridos, tem de definir o
enabled
atributo do <elemento legacyImpersonationPolicy> comotrue
.Para interfaces de alojamento não geridas, defina o
STARTUP_LEGACY_IMPERSONATION
sinalizador no parâmetro aoflags
chamar aCorBindToRuntimeEx
função.
O modo de compatibilidade da versão 1 aplica-se a todo o processo e a todos os domínios da aplicação no processo.
Requisitos
Plataformas: Veja Requisitos do Sistema.
Cabeçalho: MSCorEE.h
Biblioteca: MSCorEE.dll
.NET Framework Versões: Disponível desde 1.0