Fungsi CorBindToRuntimeEx
Memungkinkan host yang tidak terkelola untuk memuat runtime bahasa umum (CLR) ke dalam suatu proses. Fungsi CorBindToRuntime dan CorBindToRuntimeEx
melakukan operasi yang sama, tetapi fungsi CorBindToRuntimeEx
memungkinkan Anda mengatur bendera untuk menetapkan perilaku CLR.
Fungsi ini sudah tidak digunakan lagi di .NET Framework 4.
Fungsi ini membutuhkan satu set parameter yang memungkinkan host untuk melakukan hal berikut:
Menentukan versi runtime yang akan dimuat.
Menunjukkan apakah build server atau stasiun kerja harus dimuat.
Kontrol apakah pengumpulan sampah serentak atau pengumpulan sampah yang tidak serentak dilakukan.
Catatan
Pengumpulan sampah serentak tidak didukung dalam aplikasi yang menjalankan emulator WOW64 x86 pada sistem 64-bit yang menerapkan arsitektur Intel Itanium (sebelumnya disebut IA-64). Untuk informasi selengkapnya tentang menggunakan WOW64 pada sistem Windows 64-bit, lihat Menjalankan Aplikasi 32-bit.
Kontrol apakah rakitan dimuat sebagai netral domain.
Dapatkan penunjuk antarmuka ke ICorRuntimeHost yang dapat digunakan untuk mengatur opsi tambahan untuk mengonfigurasi instans CLR sebelum dimulai.
Sintaks
HRESULT CorBindToRuntimeEx (
[in] LPCWSTR pwszVersion,
[in] LPCWSTR pwszBuildFlavor,
[in] DWORD startupFlags,
[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 dalam pwszVersion
dengan meneruskan nilai STARTUP_LOADER_SAFEMODE
untuk parameter startupFlags
, seperti yang dijelaskan di bawah ini.
Jika pemanggil menentukan null untuk pwszVersion
, CorBindToRuntimeEx
mengidentifikasi kumpulan runtime yang diinstal yang nomor versinya lebih rendah dari runtime .NET Framework 4, dan memuat versi terbaru runtime dari kumpulan tersebut. Ini tidak akan memuat .NET Framework 4 atau yang lebih baru, dan gagal jika tidak ada versi sebelumnya yang diinstal. Harap diingat bahwa melewati 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 yang akan 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 startupFlags
), build server dimuat.
startupFlags
[in] Kombinasi nilai enumerasi STARTUP_FLAGS. Bendera ini mengontrol pengumpulan sampah serentak, kode netral domain, dan perilaku parameter pwszVersion
. Defaultnya adalah domain tunggal jika tidak ada bendera yang diatur. Nilai berikut valid:
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
Untuk deskripsi bendera ini, lihat enumerasi STARTUP_FLAGS.
rclsid
[in] CLSID
dari coclass yang menerapkan 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
menampilkan nilai HRESULT CLR_E_SHIM_RUNTIMELOAD.
Konteks Eksekusi dan Alur 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 parameterstartupFlags
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