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:
Modificando le ExecutionContext impostazioni per eliminare il flusso in base al thread (vedere i SuppressFlowmetodi , SuppressFlowe SuppressFlowWindowsIdentity ).
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:
Per gli eseguibili gestiti, è necessario impostare l'attributo dell'elemento
enabled
<legacyImpersonationPolicy> sutrue
.Per le interfacce di hosting non gestite, impostare il
STARTUP_LEGACY_IMPERSONATION
flag nelflags
parametro quando si chiama laCorBindToRuntimeEx
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