Bagikan melalui


Fungsi CorBindToRuntime

Memungkinkan host yang tidak dikelola untuk memuat runtime bahasa umum (CLR) ke dalam proses.

Fungsi ini tidak digunakan lagi di .NET Framework 4.

Sintaks

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

Parameter

pwszVersion
[in] String yang menjelaskan versi CLR yang ingin Anda muat.

Nomor versi dalam .NET Framework terdiri dari empat bagian yang dipisahkan oleh titik: major.minor.build.revision. String yang diteruskan sebagai pwszVersion harus diawali dengan karakter "v" diikuti oleh tiga bagian pertama dari nomor versi (misalnya, "v1.0.1529").

Beberapa versi CLR diinstal dengan pernyataan kebijakan yang menentukan kompatibilitas dengan versi CLR sebelumnya. Secara default, shim startup mengevaluasi pwszVersion terhadap pernyataan kebijakan dan memuat versi terbaru runtime yang kompatibel dengan versi yang diminta. Host dapat memaksa shim untuk melewati evaluasi kebijakan dan memuat versi yang tepat yang ditentukan pwszVersion dengan meneruskan nilai STARTUP_LOADER_SAFEMODE untuk parameter flags, seperti yang dijelaskan di bawah ini.

Jika pemanggil menentukan null untuk pwszVersion, versi terbaru runtime dimuat. Meneruskan null tidak memberi host kontrol atas versi runtime mana yang dimuat. Meskipun pendekatan ini mungkin sesuai dalam beberapa skenario, sangat disarankan agar host menyediakan versi tertentu untuk dimuat.

pwszBuildFlavor
[in] String yang menentukan apakah akan memuat build server atau stasiun kerja CLR. Nilai yang berlaku adalah svr atau wks. Build server dioptimalkan untuk memanfaatkan beberapa prosesor untuk pengumpulan sampah, dan build stasiun kerja dioptimalkan untuk aplikasi klien yang berjalan di komputer prosesor tunggal.

Jika pwszBuildFlavor diatur ke null, build stasiun kerja dimuat. Saat berjalan di komputer prosesor tunggal, build stasiun kerja selalu dimuat, meskipun pwszBuildFlavor diatur ke svr. Namun, jika pwszBuildFlavor diatur ke svr dan pengumpulan sampah serentak ditentukan (lihat deskripsi parameter flags), build server dimuat.

rclsid
[in] CLSID dari coclass yang mengimplementasikan antarmuka ICorRuntimeHost atau ICLRRuntimeHost. Nilai yang didukung adalah CLSID_CorRuntimeHost atau CLSID_CLRRuntimeHost.

riid
[in] IID antarmuka yang diminta dari rclsid. Nilai yang didukung adalah IID_ICorRuntimeHost atau IID_ICLRRuntimeHost.

ppv
[out] Penunjuk antarmuka yang ditampilkan ke riid.

Keterangan

Jika pwszVersion menentukan versi runtime yang tidak ada, CorBindToRuntimeEx mengembalikan nilai HRESULT CLR_E_SHIM_RUNTIMELOAD.

CorBindToRuntimeEx dan CorBindToRuntime melakukan operasi yang sama, tetapi fungsi CorBindToRuntimeEx ini memungkinkan Anda mengatur bendera untuk menentukan perilaku CLR.

Konteks Eksekusi dan Aliran Identitas Windows

Di versi 1 CLR, objek WindowsIdentity tidak mengalir di seluruh titik asinkron seperti rangkaian baru, kumpulan rangkaian, atau panggilan balik timer. Dalam CLR versi 2.0, objek ExecutionContext membungkus beberapa informasi tentang rangkaian yang saat ini dijalankan dan mengalirkannya di seluruh titik asinkron, tetapi tidak di seluruh batas domain aplikasi. Demikian pula, objek WindowsIdentity juga mengalir di setiap titik asinkron. Oleh karena itu, peniruan saat ini pada rangkaian, jika ada, mengalir juga.

Anda dapat mengubah aliran dengan dua cara:

  1. Dengan mengubah pengaturan ExecutionContext untuk menyembunyikan alur berdasarkan per rangkaian (lihat metode SuppressFlow, SuppressFlow, dan SuppressFlowWindowsIdentity).

  2. Dengan mengubah mode default proses ke mode kompatibilitas versi 1, di mana objek WindowsIdentity tidak mengalir di titik asinkron apa pun, terlepas dari pengaturan ExecutionContext pada rangkaian saat ini. Bagaimana Anda mengubah mode default tergantung pada apakah Anda menggunakan antarmuka hosting yang dapat dieksekusi atau tidak terkelola untuk memuat CLR:

    1. Untuk executable terkelola, Anda harus mengatur atribut enabled elemen <legacyImpersonationPolicy> ke true.

    2. Untuk antarmuka hosting tidak terkelola, atur bendera STARTUP_LEGACY_IMPERSONATION dalam parameter flags saat memanggil fungsi CorBindToRuntimeEx.

    Mode kompatibilitas versi 1 berlaku untuk seluruh proses dan semua domain aplikasi dalam prosesnya.

Persyaratan

Platform: Lihat Persyaratan Sistem.

Header: MSCorEE.h

Pustaka: MSCorEE.dll

Versi .NET Framework: Tersedia mulai dari 1.0

Lihat juga