Compartilhar via


Função de CorBindToRuntimeEx

Habilita a hosts não gerenciados para carregar o common language runtime (CLR) em um processo. O CorBindToRuntime e CorBindToRuntimeEx funções efetuam a mesma operação, mas o CorBindToRuntimeEx função permite que você definir sinalizadores para especificar o comportamento do CLR.

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

Consulte Visão geral de hospedagem. para obter uma descrição completa dos cenários em que CorBindToRuntimeEx é usado.

Essa função usa um conjunto de parâmetros que permitem que um host fazer o seguinte:

  • Especifica a versão do runtime que será carregado.

  • Indique se a compilação do servidor ou estação de trabalho deve ser carregada.

  • Controle se a coleta de lixo simultâneos ou coleta de lixo de simultâneas não é feita.

Observação

Não há suporte para a coleta de lixo simultâneas em aplicativos em execução no WOW64 x 86 emulador em sistemas de 64 bits que implementam a arquitetura Intel Itanium (anteriormente chamado de IA-64).Para obter mais informações sobre como usar o WOW64 em sistemas de 64 bits do Windows, consulte aplicativos executando 32 bits.

  • Controle se os assemblies são carregados como domínio neutro.

  • Obter um ponteiro de interface para um ICorRuntimeHost que pode ser usado para definir opções adicionais para configurar uma instância do CLR, antes que ela seja iniciada.

HRESULT CorBindToRuntimeEx (
    [in]  LPWSTR    pwszVersion, 
    [in]  LPWSTR    pwszBuildFlavor, 
    [in]  DWORD     startupFlags, 
    [in]  REFCLSID  rclsid, 
    [in]  REFIID    riid, 
    [out] LPVOID*   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 startupFlags 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 startupFlags parâmetro), a compilação do servidor é carregada.

  • startupFlags
    [in] Uma combinação de valores a STARTUP_FLAGS enumeração. Esses sinalizadores de simultâneas coleta de lixo, o código de domínio neutro e o comportamento do controlam de pwszVersion parâmetro. O padrão é o único domínio se nenhum sinalizador estiver definido. Os seguintes valores são válidos:

    • 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 obter descrições sobre esses sinalizadores, consulte o STARTUP_FLAGS enumeração.

  • 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 startupFlags 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.

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 CorBindToRuntime

Função de CorBindToRuntimeByCfg

Função de CorBindToRuntimeHost

Interface de ICorRuntimeHost

Outros recursos

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