Funzione CorBindToRuntime

Consente agli host non gestiti di caricare Common Language Runtime (CLR) in un processo.

Questa funzione è stata deprecata in .NET Framework 4.

Sintassi

HRESULT CorBindToRuntime (  
    [in]  LPCWSTR     pwszVersion,
    [in]  LPCWSTR     pwszBuildFlavor,
    [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 flags parametro , come descritto di seguito.

Se il chiamante specifica null per pwszVersion, viene caricata la versione più recente del runtime. 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 flags server.

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.

CorBindToRuntimeEx ed CorBindToRuntime eseguire la stessa operazione, ma la CorBindToRuntimeEx funzione consente di impostare i flag per specificare il comportamento di CLR.

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 flags 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