Bagikan melalui


Fungsi CoAddRefServerProcess (combaseapi.h)

Menaikkan jumlah referensi per proses global.

Sintaks

ULONG CoAddRefServerProcess();

Mengembalikan nilai

Jumlah referensi saat ini.

Keterangan

Server dapat memanggil CoAddRefServerProcess untuk menaikkan jumlah referensi per proses global. Fungsi ini sangat membantu server yang diimplementasikan dengan beberapa utas, baik multi-apartemen atau utas bebas. Server jenis ini harus mengoordinasikan keputusan untuk mematikan dengan permintaan aktivasi di beberapa utas. Memanggil CoAddRefServerProcess meningkatkan jumlah referensi per proses global, dan memanggil penurunan CoReleaseServerProcess yang dihitung.

Ketika jumlah tersebut mencapai nol, OLE secara otomatis memanggil CoSuspendClassObjects, yang mencegah permintaan aktivasi baru masuk. Ini memungkinkan server untuk membatalkan pendaftaran objek kelasnya dari berbagai utasnya tanpa khawatir bahwa permintaan aktivasi lain mungkin masuk. Permintaan aktivasi baru menghasilkan peluncuran instans baru dari proses server lokal.

Cara paling sederhana bagi aplikasi server lokal untuk menggunakan fungsi-fungsi ini adalah dengan memanggil CoAddRefServerProcess di konstruktor untuk setiap objek instansnya, dan di setiap metode IClassFactory::LockServer saat parameter fLockTRUE. Aplikasi server juga harus memanggil CoReleaseServerProcess dalam penghancuran setiap objek instansnya, dan di setiap metode LockServer-nya ketika parameter fLockadalah FALSE. Akhirnya, aplikasi server harus memperhatikan kode pengembalian dari CoReleaseServerProcess dan jika mengembalikan 0, aplikasi server harus memulai pembersihannya, yang, untuk server dengan beberapa utas, biasanya berarti bahwa ia harus menandakan berbagai utasnya untuk keluar dari perulangan pesan mereka dan memanggil CoRevokeClassObject dan CoUninitialize.

Jika fungsi-fungsi ini digunakan sama sekali, fungsi tersebut harus dipanggil dalam instans objek dan metode LockServer , jika tidak, aplikasi server dapat dimatikan sebelum waktunya. Server dalam proses biasanya tidak boleh memanggil CoAddRefServerProcess atau CoReleaseServerProcess.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header combaseapi.h (termasuk Objbase.h)
Pustaka Ole32.lib
DLL Ole32.dll

Lihat juga

CoReleaseServerProcess

IClassFactory::LockServer

Pembantu Implementasi Server Di Luar Proses