Bagikan melalui


Antarmuka IGlobalOptions (objidl.h)

Mengatur dan mengkueri properti global runtime Model Objek Komponen (COM).

Warisan

Antarmuka IGlobalOptions mewarisi dari antarmuka IUnknown . IGlobalOptions juga memiliki jenis anggota ini:

Metode

Antarmuka IGlobalOptions memiliki metode ini.

 
IGlobalOptions::Query

Metode IGlobalOptions::Query (objidl.h) mengkueri properti global runtime COM yang ditentukan.
IGlobalOptions::Set

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.

    IGlobalOptions *pGlobalOptions;
    hr =  CoCreateInstance(CLSID_GlobalOptions, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pGlobalOptions));
    if (SUCCEEDED(hr))
    {
        hr = pGlobalOptions->Set(COMGLB_EXCEPTION_HANDLING, COMGLB_EXCEPTION_DONOT_HANDLE);
        pGlobalOptions->Release();
    }

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header objidl.h (termasuk ObjIdl.h)

Lihat juga

IMarshalingStream