Fungsi CorBindToRuntimeEx

Memungkinkan host yang tidak dikelola untuk memuat runtime bahasa umum (CLR) ke dalam proses. CorBindToRuntime dan CorBindToRuntimeEx fungsi melakukan operasi yang sama, tetapi fungsi ini CorBindToRuntimeEx memungkinkan Anda mengatur bendera untuk menentukan perilaku CLR.

Fungsi ini tidak digunakan lagi di .NET Framework 4.

Fungsi ini mengambil serangkaian parameter yang memungkinkan host untuk melakukan hal berikut:

  • Tentukan versi runtime yang akan dimuat.

  • Tunjukkan apakah server atau build stasiun kerja harus dimuat.

  • Kontrol apakah pengumpulan sampah bersamaan atau pengumpulan sampah non-bersamaan dilakukan.

Nota

Pengumpulan sampah bersamaan tidak didukung dalam aplikasi yang menjalankan emulator WOW64 x86 pada sistem 64-bit yang mengimplementasikan arsitektur Intel Itanium (sebelumnya disebut IA-64). Untuk informasi selengkapnya tentang menggunakan WOW64 pada sistem Windows 64-bit, lihat Menjalankan Aplikasi 32-bit.

  • Mengontrol apakah rakitan dimuat sebagai netral domain.

  • Dapatkan penunjuk antarmuka ke ICorRuntimeHost yang dapat digunakan untuk mengatur opsi tambahan untuk mengonfigurasi instans CLR sebelum dimulai.

Sintaksis

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

Parameter-parameternya

pwszVersion [di] 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 dimulai 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 dengan meneruskan pwszVersion nilai STARTUP_LOADER_SAFEMODE untuk startupFlags parameter, 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 set tersebut. Ini tidak akan memuat .NET Framework 4 atau yang lebih baru, dan gagal jika tidak ada versi sebelumnya yang diinstal. Perhatikan bahwa 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 [di] String yang menentukan apakah akan memuat server atau build 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 pada mesin prosesor tunggal.

Jika pwszBuildFlavor diatur ke null, build stasiun kerja dimuat. Saat berjalan pada mesin prosesor tunggal, build stasiun kerja selalu dimuat, bahkan jika pwszBuildFlavor diatur ke svr. Namun, jika pwszBuildFlavor diatur ke svr dan pengumpulan sampah bersamaan ditentukan (lihat deskripsi startupFlags parameter), build server dimuat.

startupFlags [di] Kombinasi nilai enumerasi STARTUP_FLAGS . Bendera ini mengontrol pengumpulan sampah bersamaan, kode netral domain, dan perilaku pwszVersion parameter. Defaultnya adalah domain tunggal jika tidak ada bendera yang diatur. Nilai berikut ini 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 [di] Dari CLSID coclass yang mengimplementasikan ICorRuntimeHost atau antarmuka ICLRRuntimeHost . Nilai yang didukung CLSID_CorRuntimeHost atau CLSID_CLRRuntimeHost.

riid [di] Antarmuka IID yang diminta dari rclsid. Nilai yang didukung IID_ICorRuntimeHost atau IID_ICLRRuntimeHost.

ppv [out] Penunjuk antarmuka yang dikembalikan ke riid.

Komentar

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

Konteks Eksekusi dan Alur Identitas Windows

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

Anda dapat mengubah alur dengan dua cara:

  1. Dengan memodifikasi ExecutionContext pengaturan untuk menekan alur berdasarkan per utas (lihat SuppressFlowmetode , SuppressFlow, dan SuppressFlowWindowsIdentity ).

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

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

    2. Untuk antarmuka hosting yang tidak dikelola, atur STARTUP_LEGACY_IMPERSONATION bendera dalam startupFlags parameter saat memanggil CorBindToRuntimeEx fungsi.

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

Persyaratan

Platform: Lihat Persyaratan Sistem.

Header: MSCorEE.h

Pustaka: MSCorEE.dll

Versi .NET Framework: Tersedia sejak 1.0

Baca juga