Metode IGlobalOptions::Set (objidl.h) menetapkan properti global runtime COM yang ditentukan.
Keterangan
Properti global runtime COM berikut dapat diatur dan dikueri dengan antarmuka ini.
Properti
Nilai
COMGLB_APPID
AppID untuk proses tersebut.
Ini adalah satu-satunya properti yang didukung pada Windows XP.
COMGLB_EXCEPTION_HANDLING
Nilai yang mungkin untuk properti COMGLB_EXCEPTION_HANDLING adalah:
COMGLB_EXCEPTION_HANDLE: Ini adalah perilaku default. Pengaturan ini menyebabkan runtime COM menangani pengecualian fatal.
COMGLB_EXCEPTION_DONOT_HANDLE: Ini menyebabkan runtime COM tidak menangani pengecualian fatal.
COMGLB_EXCEPTION_DONOT_HANDLE_FATAL: Alias untuk COMGLB_EXCEPTION_DONOT_HANDLE. Didukung di Windows 7 dan yang lebih baru.
COMGLB_EXCEPTION_DONOT_HANDLE_ANY: Ketika diatur dan pengecualian fatal terjadi dalam metode COM, ini menyebabkan runtime COM tidak menangani pengecualian.
Ketika diatur dan pengecualian non-fatal terjadi dalam metode COM, ini menyebabkan runtime COM membuat cadangan Pelaporan Galat Windows (WER) dan mengakhiri proses.
Didukung di Windows 7 dan yang lebih baru.
Secara default, runtime COM menangani pengecualian fatal yang diangkat selama pemanggilan metode dengan mengembalikan kode kesalahan RPC_E_SERVERFAULT ke klien. Aplikasi menonaktifkan perilaku ini untuk memungkinkan pengecualian disebarluaskan ke WER, yang membuat cadangan proses aplikasi dan mengakhiri aplikasi. Ini mencegah kemungkinan kerusakan data dan memungkinkan vendor aplikasi untuk men-debug cadangan.
Catatan Bahkan jika penanganan pengecualian runtime COM dinonaktifkan, pengecualian mungkin tidak disebarluaskan ke WER jika ada handler pengecualian tingkat aplikasi lain dalam proses yang menangani pengecualian.
Untuk aplikasi baru, disarankan agar properti COMGLB_EXCEPTION_HANDLING diatur ke COMGLB_EXCEPTION_DONOT_HANDLE_ANY.
COMGLB_RPC_THREADPOOL_SETTING
Nilai yang mungkin untuk properti COMGLB_RPC_THREADPOOL_SETTING dalam metode Set adalah:
COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL: Menginstruksikan RPC untuk menggunakan kumpulan utas privat khusus.
Nilai yang mungkin untuk properti COMGLB_RPC_THREADPOOL_SETTING dalam metode Kueri adalah:
COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL: RPC menggunakan kumpulan utas privat khusus.
COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL: RPC menggunakan kumpulan utas default sistem.
RPC menggunakan kumpulan utas sistem secara default di Windows 7. Karena kumpulan utas sistem dibagikan oleh beberapa komponen dalam proses, operasi COM dan RPC mungkin berperilaku salah jika status kumpulan utas rusak oleh komponen.
Properti COMGLB_RPC_THREADPOOL_SETTING dapat digunakan untuk mengubah perilaku kumpulan alur RPC. Mengubah perilaku default akan dikenakan penalti performa karena ini menyebabkan RPC menggunakan utas tambahan. Oleh karena itu, perawatan harus dilakukan saat mengubah pengaturan ini. Disarankan agar pengaturan ini diubah hanya karena alasan kompatibilitas aplikasi.
Catatan Properti ini harus diatur segera setelah COM diinisialisasi dalam proses. Jika properti ini diatur setelah melakukan operasi apa pun yang menyebabkan COM menginisialisasi saluran RPC (misalnya, marshaling atau membatalkan nama referensi objek), metode Set akan gagal.
Catatan Properti ini hanya didukung di Windows 7 dan versi Windows yang lebih baru.
COMGLB_RO_SETTINGS
Nilai yang mungkin untuk properti COMGLB_RO_SETTINGS adalah:
COMGLB_FAST_RUNDOWN: Menunjukkan bahwa stub dalam proses saat ini mengalami perilaku rundown stub yang cepat, yang berarti bahwa stub dijalankan pada penghentian proses klien, alih-alih menunggu batas waktu pembersihan normal kedaluwarsa.
COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES: Hapus pesan sentuh dari antrean pesan di perulangan modal STA.
COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES: Pesan input dihapus dalam perulangan modal STA saat antrean pesan utas dilampirkan.
COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES: Pesan input tidak dihapus dalam perulangan modal STA saat antrean pesan utas dilampirkan.
COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES: Pesan input penunjuk tidak dihapus dalam perulangan modal STA saat antrean pesan utas dilampirkan tetapi ditutupi sementara untuk menghindari kebuntuan yang timbul dari antrean yang terpasang.
COMGLB_RESERVED1: Dicadangkan untuk digunakan di masa mendatang.
COMGLB_RESERVED2: Dicadangkan untuk digunakan di masa mendatang.
COMGLB_RESERVED3: Dicadangkan untuk digunakan di masa mendatang.
Catatan Properti ini hanya didukung di versi Windows Windows 8 dan yang lebih baru.
COMGLB_UNMARSHALING_POLICY
Nilai yang mungkin untuk properti COMGLB_UNMARSHALING_POLICY adalah:
COMGLB_UNMARSHALING_POLICY_NORMAL: Perilaku membatalkan nama sama dengan versi sebelumnya daripada Windows 8.
EOAC_NO_CUSTOM_MARSHAL pembatasan berlaku jika bendera ini diatur dalam CoInitializeSecurity. Jika tidak, tidak ada batasan. Ini adalah default untuk proses yang tidak ada dalam kontainer aplikasi.
COMGLB_UNMARSHALING_POLICY_STRONG: Unmarshaling hanya memungkinkan daftar unmarshaler dan unmarshaler yang dipercaya sistem yang diizinkan per proses oleh fungsi CoAllowUnmarshalerCLSID . Ini adalah default untuk proses dalam kontainer aplikasi.
COMGLB_UNMARSHALING_POLICY_HYBRID: Membatalkan nama data yang sumbernya adalah kontainer aplikasi hanya memungkinkan daftar unmarshaler dan unmarshaler yang dipercaya sistem yang diizinkan per proses oleh fungsi CoAllowUnmarshalerCLSID . Perilaku membatalkan nama untuk data dengan sumber yang bukan kontainer aplikasi tidak berubah dari versi sebelumnya.
Catatan Properti ini hanya didukung di versi Windows Windows 8 dan yang lebih baru.
Penting untuk aplikasi yang mendeteksi crash dan pengecualian lain yang mungkin dihasilkan saat menjalankan panggilan COM masuk, misalnya panggilan di server lokal atau saat menjalankan metode IDropTarget::D rop , untuk mengatur COMGLB_EXCEPTION_HANDLING ke COMGLB_EXCEPTION_DONOT_HANDLE untuk menonaktifkan perilaku COM menangkap pengecualian. Kegagalan untuk melakukan ini dapat menyebabkan status proses yang rusak, misalnya kunci yang ditahan ketika pengecualian ini dibuang ditinggalkan, dan prosesnya dapat memasuki status yang tidak konsisten.
Semua aplikasi tersebut harus menjalankan kode ini saat startup.