Partilhar via


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:

  1. Ao modificar as ExecutionContext definições para suprimir o fluxo por thread (veja os SuppressFlowmétodos , SuppressFlowe SuppressFlowWindowsIdentity ).

  2. 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:

    1. Para executáveis geridos, tem de definir o enabled atributo do <elemento legacyImpersonationPolicy> como true.

    2. Para interfaces de alojamento não geridas, defina o STARTUP_LEGACY_IMPERSONATION sinalizador no parâmetro ao flags chamar a CorBindToRuntimeEx 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

Ver também