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:
Dengan mengubah pengaturan ExecutionContext untuk menyembunyikan alur berdasarkan per rangkaian (lihat metode SuppressFlow, SuppressFlow, dan SuppressFlowWindowsIdentity).
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:
Untuk executable terkelola, Anda harus mengatur atribut
enabled
elemen <legacyImpersonationPolicy> ketrue
.Untuk antarmuka hosting tidak terkelola, atur bendera
STARTUP_LEGACY_IMPERSONATION
dalam parameterflags
saat memanggil fungsiCorBindToRuntimeEx
.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk