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:
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 nelstartupFlags
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