Compartilhar via


Função de CorBindToRuntime

Habilita a hosts não gerenciados para carregar o common language runtime (CLR) em um processo.

Essa função foi preterida na .NET Framework versão 4.

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

Parâmetros

  • pwszVersion
    [in] Uma seqüência de caracteres que descreve a versão do CLR que você deseja carregar.

    Um número de versão na.NET Framework consiste em quatro partes separadas por pontos: Major.Minor.Build.Revision. A seqüência passada como pwszVersion deve começar com o caractere "v" seguido as primeiras três partes do número da versão (por exemplo, "v1.0.1529").

    Algumas versões do CLR são instalados com uma declaração de diretiva especifica a compatibilidade com versões anteriores do CLR. Por padrão, a correção de inicialização avalia pwszVersion contra declarações de diretiva e carrega a versão mais recente do tempo de execução que é compatível com a versão que está sendo solicitada. Um host pode forçar a correção para ignorar a avaliação da diretiva e carregar a versão exata especificada em pwszVersion , passando um valor de STARTUP_LOADER_SAFEMODE para o flags parâmetro, conforme descrito abaixo.

    Se o chamador especificar null para pwszVersion, a versão mais recente do tempo de execução é carregada. Passar null não dá o host nenhum controle sobre a qual versão do runtime é carregada. Embora essa abordagem pode ser apropriada em alguns cenários, é altamente recomendável que o host de fornece uma versão específica para carregar.

  • pwszBuildFlavor
    [in] Uma seqüência de caracteres que especifica se deve carregar o servidor ou a compilação de estação de trabalho do CLR. Os valores válidos são svr e wks. A compilação do servidor está otimizada para aproveitar os vários processadores para coletas de lixo e a compilação de estação de trabalho é otimizada para aplicativos cliente executados em uma máquina de processador único.

    Se pwszBuildFlavoré definido como nulo, a compilação de estação de trabalho é carregada. Quando executado em uma máquina de processador único, a compilação de estação de trabalho é sempre carregada, mesmo se pwszBuildFlavoré definida como svr. No entanto, se pwszBuildFlavoré definida como svr e coleta de lixo simultâneos é especificada (consulte a descrição da flags parâmetro), a compilação do servidor é carregada.

  • rclsid
    [in] O CLSID do coclass que implementa um a ICorRuntimeHost ou ICLRRuntimeHost interface. Valores suportados são CLSID_CorRuntimeHost ou CLSID_CLRRuntimeHost.

  • riid
    [in] O IID da interface solicitada do rclsid. Valores suportados são IID_ICorRuntimeHost ou IID_ICLRRuntimeHost.

  • ppv
    [out] O ponteiro de interface retornado em riid.

Comentários

Se pwszVersion Especifica uma versão de tempo de execução que não existe, CorBindToRuntimeEx retorna um valor HRESULT do CLR_E_SHIM_RUNTIMELOAD.

Contexto de execução e o fluxo de identidade do Windows

Na versão 1 do CLR, o WindowsIdentity objeto não flui entre pontos assíncronos, como novos threads, pools de threads ou retornos de chamada de timer. Na versão 2.0 do CLR, um ExecutionContext objeto envolve algumas informações sobre o thread atualmente em execução e flui-lo em qualquer ponto assíncrono, mas não entre limites de domínio de aplicativo. Da mesma forma, o WindowsIdentity objeto também ultrapassar qualquer ponto assíncrono. Portanto, a representação atual no thread, se houver, flui muito.

Você pode alterar o fluxo de duas maneiras:

  1. Modificando o ExecutionContext as configurações para suprimir o fluxo em uma base por thread (consulte a SuppressFlow, SuppressFlow, e SuppressFlowWindowsIdentity métodos).

  2. Alterando o modo padrão do processo para o modo de compatibilidade de versão 1, onde o WindowsIdentity não fluxo do objeto em qualquer ponto assíncrono, independentemente do ExecutionContext configurações na thread atual. Como alterar o modo padrão depende de se usar um executável gerenciado ou uma interface de hospedagem não gerenciada para carregar o CLR:

    1. Executáveis gerenciados, você deve definir o enabled atributo o <legacyImpersonationPolicy> elemento para true.

    2. Para não gerenciado interfaces de hospedagem, defina a STARTUP_LEGACY_IMPERSONATION sinalizador na flags parâmetro ao chamar o CorBindToRuntimeEx função.

    O modo de compatibilidade da versão 1 se aplica a todo o processo e todos os domínios de aplicativo no processo.

Comentários

CorBindToRuntimeEx e CorBindToRuntime efetuar a mesma operação, mas o CorBindToRuntimeEx função permite que você definir sinalizadores para especificar o comportamento do CLR.

Requisitos

Plataformas: Consulte Requisitos de sistema do .NET Framework.

Cabeçalho: MSCorEE.h

Biblioteca: Mscoree

.NET Framework versões: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Consulte também

Referência

Função de CorBindToCurrentRuntime

Função de CorBindToRuntimeByCfg

Função de CorBindToRuntimeEx

Função de CorBindToRuntimeHost

Interface de ICorRuntimeHost

Outros recursos

.NET Framework 1.1 e 2.0, hospedagem Global de funções estáticas