Condividi tramite


Funzione CorBindToRuntimeEx

Consente agli host non gestiti di caricare Common Language Runtime (CLR) in un processo. Le funzioni CorBindToRuntime eseguono CorBindToRuntimeEx la stessa operazione, ma la CorBindToRuntimeEx funzione consente di impostare i flag per specificare il comportamento di CLR.

Questa funzione è stata deprecata in .NET Framework 4.

Questa funzione accetta un set di parametri che consentono a un host di eseguire le operazioni seguenti:

  • Specificare la versione del runtime che verrà caricata.

  • Indicare se deve essere caricata la compilazione del server o della workstation.

  • Controllare se viene eseguita un'operazione di Garbage Collection simultanea o non simultanea.

Nota

Garbage Collection simultaneo non è supportato nelle applicazioni che eseguono l'emulatore WOW64 x86 in sistemi a 64 bit che implementano l'architettura Intel Itanium (precedentemente denominata IA-64). Per altre informazioni sull'uso di WOW64 nei sistemi Windows a 64 bit, vedere Esecuzione di applicazioni a 32 bit.

  • Controllare se gli assembly vengono caricati come indipendenti dal dominio.

  • Ottenere un puntatore di interfaccia a un ICorRuntimeHost che può essere usato per impostare opzioni aggiuntive per configurare un'istanza di CLR prima dell'avvio.

Sintassi

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

Parametri

pwszVersion
[in] Stringa che descrive la versione di CLR che si desidera caricare.

Un numero di versione in .NET Framework è costituito da quattro parti separate da punti: major.minor.build.revision. La stringa passata come pwszVersion deve iniziare con il carattere "v" seguito dalle prime tre parti del numero di versione ,ad esempio "v1.0.1529".

Alcune versioni di CLR vengono installate con un'istruzione dei criteri che specifica la compatibilità con le versioni precedenti di CLR. Per impostazione predefinita, lo shim di avvio valuta le pwszVersion istruzioni dei criteri e carica la versione più recente del runtime compatibile con la versione richiesta. Un host può forzare lo shim a ignorare la valutazione dei criteri e caricare la versione esatta specificata in pwszVersion passando un valore di STARTUP_LOADER_SAFEMODE per il startupFlags parametro , come descritto di seguito.

Se il chiamante specifica null per pwszVersion, CorBindToRuntimeEx identifica il set di runtime installati i cui numeri di versione sono inferiori al runtime di .NET Framework 4 e carica la versione più recente del runtime da tale set. Non caricherà .NET Framework 4 o versione successiva e avrà esito negativo se non è installata alcuna versione precedente. Si noti che il passaggio di null fornisce all'host alcun controllo sulla versione del runtime caricata. Anche se questo approccio può essere appropriato in alcuni scenari, è consigliabile che l'host fornisca una versione specifica da caricare.

pwszBuildFlavor
[in] Stringa che specifica se caricare il server o la build workstation di CLR. I valori validi sono svr e wks. La compilazione del server è ottimizzata per sfruttare più processori per Garbage Collection e la compilazione della workstation è ottimizzata per le applicazioni client in esecuzione in un computer a processore singolo.

Se pwszBuildFlavor è impostato su Null, la compilazione della workstation viene caricata. Quando si esegue in un computer a processore singolo, la compilazione della workstation viene sempre caricata, anche se pwszBuildFlavor è impostata su svr. Tuttavia, se pwszBuildFlavor è impostato su svr e viene specificata la procedura di Garbage Collection simultanea (vedere la descrizione del parametro), viene caricata la compilazione del startupFlags server.

startupFlags
[in] Combinazione di valori dell'enumerazione STARTUP_FLAGS . Questi flag controllano la Garbage Collection simultanea, il codice indipendente dal dominio e il comportamento del pwszVersion parametro . Il valore predefinito è un dominio singolo se non è impostato alcun flag. I valori seguenti sono validi:

  • STARTUP_CONCURRENT_GC

  • STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN

  • STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN

  • STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOST

  • STARTUP_LOADER_SAFEMODE

  • STARTUP_LOADER_SETPREFERENCE

  • STARTUP_SERVER_GC

  • STARTUP_HOARD_GC_VM

  • STARTUP_SINGLE_VERSION_HOSTING_INTERFACE

  • STARTUP_LEGACY_IMPERSONATION

  • STARTUP_DISABLE_COMMITTHREADSTACK

  • STARTUP_ALWAYSFLOW_IMPERSONATION

Per le descrizioni di questi flag, vedere l'enumerazione STARTUP_FLAGS .

rclsid
[in] Classe CLSID della coclasse che implementa l'interfaccia ICorRuntimeHost o ICLRRuntimeHost . I valori supportati sono CLSID_CorRuntimeHost o CLSID_CLRRuntimeHost.

riid
[in] Oggetto IID dell'interfaccia richiesta da rclsid. I valori supportati sono IID_ICorRuntimeHost o IID_ICLRRuntimeHost.

ppv
[out] Puntatore all'interfaccia restituito a riid.

Commenti

Se pwszVersion specifica una versione di runtime che non esiste, CorBindToRuntimeEx restituisce un valore HRESULT di CLR_E_SHIM_RUNTIMELOAD.

Contesto di esecuzione e flusso dell'identità di Windows

Nella versione 1 di CLR, l'oggetto WindowsIdentity non scorre tra punti asincroni, ad esempio nuovi thread, pool di thread o callback timer. Nella versione 2.0 di CLR, un ExecutionContext oggetto esegue il wrapping di alcune informazioni sul thread attualmente in esecuzione e lo scorre attraverso qualsiasi punto asincrono, ma non attraverso i limiti del dominio dell'applicazione. Analogamente, l'oggetto WindowsIdentity scorre anche attraverso qualsiasi punto asincrono. Pertanto, anche la rappresentazione corrente nel thread, se presente, scorre.

È possibile modificare il flusso in due modi:

  1. Modificando le ExecutionContext impostazioni per eliminare il flusso in base al thread (vedere i SuppressFlowmetodi , SuppressFlowe SuppressFlowWindowsIdentity ).

  2. Modificando la modalità predefinita del processo alla modalità di compatibilità versione 1, in cui l'oggetto WindowsIdentity non scorre attraverso alcun punto asincrono, indipendentemente dalle ExecutionContext impostazioni nel thread corrente. La modalità predefinita varia a seconda che si usi un eseguibile gestito o un'interfaccia di hosting non gestita per caricare CLR:

    1. Per gli eseguibili gestiti, è necessario impostare l'attributo dell'elemento enabled<legacyImpersonationPolicy> su true.

    2. Per le interfacce di hosting non gestite, impostare il STARTUP_LEGACY_IMPERSONATION flag nel startupFlags parametro quando si chiama la CorBindToRuntimeEx funzione.

    La modalità di compatibilità versione 1 si applica all'intero processo e a tutti i domini applicazione nel processo.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: MSCorEE.h

Libreria: MSCorEE.dll

Versioni di .NET Framework: Disponibile dalla versione 1.0

Vedi anche