Fungsi CoRegisterClassObject (combaseapi.h)

Mendaftarkan objek kelas EXE dengan OLE sehingga aplikasi lain dapat terhubung ke objek tersebut.

Sintaks

HRESULT CoRegisterClassObject(
  [in]  REFCLSID  rclsid,
  [in]  LPUNKNOWN pUnk,
  [in]  DWORD     dwClsContext,
  [in]  DWORD     flags,
  [out] LPDWORD   lpdwRegister
);

Parameter

[in] rclsid

CLSID yang akan didaftarkan.

[in] pUnk

Pointer ke antarmuka IUnknown pada objek kelas yang ketersediaannya sedang diterbitkan.

[in] dwClsContext

Konteks di mana kode yang dapat dieksekusi akan dijalankan. Untuk informasi tentang nilai konteks ini, lihat enumerasi CLSCTX .

[in] flags

Menunjukkan bagaimana koneksi dibuat ke objek kelas. Untuk informasi tentang bendera ini, lihat enumerasi REGCLS .

[out] lpdwRegister

Penunjuk ke nilai yang mengidentifikasi objek kelas yang terdaftar; kemudian digunakan oleh fungsi CoRevokeClassObject untuk mencabut pendaftaran.

Nilai kembali

Fungsi ini dapat mengembalikan nilai pengembalian standar E_INVALIDARG, E_OUTOFMEMORY, dan E_UNEXPECTED, serta nilai berikut.

Menampilkan kode Deskripsi
S_OK
Objek kelas berhasil didaftarkan.

Keterangan

Aplikasi objek EXE harus memanggil CoRegisterClassObject saat startup. Ini juga dapat digunakan untuk mendaftarkan objek internal untuk digunakan oleh EXE yang sama atau kode lain (seperti DLL) yang digunakan EXE. Hanya aplikasi objek EXE yang memanggil CoRegisterClassObject. Penangan objek atau aplikasi objek DLL tidak memanggil fungsi ini — sebagai gantinya, mereka harus mengimplementasikan dan mengekspor fungsi DllGetClassObject .

Saat startup, aplikasi objek EXE multi-penggunaan harus membuat objek kelas (dengan antarmuka IClassFactory di dalamnya), dan memanggil CoRegisterClassObject untuk mendaftarkan objek kelas. Aplikasi objek yang mendukung beberapa kelas yang berbeda (seperti beberapa jenis objek yang dapat disematkan) harus mengalokasikan dan mendaftarkan objek kelas yang berbeda untuk masing-masing kelas.

Beberapa pendaftaran objek kelas yang sama bersifat independen dan tidak menghasilkan kesalahan. Setiap pendaftaran berikutnya menghasilkan kunci unik di lpdwRegister.

Beberapa aplikasi antarmuka dokumen (MDI) harus mendaftarkan objek kelas mereka. Aplikasi antarmuka dokumen tunggal (SDI) harus mendaftarkan objek kelas mereka hanya jika dapat dimulai dengan sakelar /Embedding .

Server untuk objek kelas harus memanggil CoRevokeClassObject untuk mencabut objek kelas (menghapus pendaftarannya) ketika semua hal berikut ini benar:

  • Tidak ada instans definisi objek yang ada.
  • Tidak ada kunci pada objek kelas.
  • Aplikasi yang menyediakan layanan ke objek kelas tidak berada di bawah kontrol pengguna (tidak terlihat oleh pengguna pada tampilan).
Setelah objek kelas dicabut, ketika jumlah referensinya mencapai nol, objek kelas dapat dirilis, memungkinkan aplikasi untuk keluar. Perhatikan bahwa CoRegisterClassObject memanggil IUnknown::AddRef dan CoRevokeClassObject memanggil IUnknown::Release, sehingga kedua fungsi membentuk pasanganRilisAddRef/.

Pada Windows Server 2003, jika aplikasi objek COM terdaftar sebagai layanan, COM memverifikasi pendaftaran. COM memastikan ID proses layanan, di manajer kontrol layanan (SCM), cocok dengan ID proses proses pendaftaran. Jika tidak, COM gagal dalam pendaftaran. Jika aplikasi objek COM berjalan di akun sistem tanpa kunci registri, COM memperlakukan identitas aplikasi objek sebagai Pengguna Peluncuran.

Persyaratan

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

Lihat juga

CLSCTX

CoGetClassObject

CoRevokeClassObject

DllGetClassObject

REGCLS