Bagikan melalui


Metode IObjectContext::CreateInstance (comsvcs.h)

Membuat objek menggunakan konteks objek saat ini.

Sintaks

HRESULT CreateInstance(
  [in]  REFCLSID rclsid,
  [in]  REFIID   riid,
  [out] LPVOID   *ppv
);

Parameter

[in] rclsid

CLSID dari jenis objek yang akan diinstansiasi.

[in] riid

Antarmuka apa pun yang diimplementasikan oleh objek yang ingin Anda buat instansnya.

[out] ppv

Referensi ke antarmuka yang diminta pada objek baru. Jika instansiasi gagal, parameter ini diatur ke NULL.

Nilai kembali

Metode ini dapat mengembalikan nilai berikut.

Menampilkan kode Deskripsi
S_OK
Metode berhasil diselesaikan.
REGDB_E_CLASSNOTREG
Komponen yang ditentukan oleh clsid tidak terdaftar sebagai komponen COM.
E_OUTOFMEMORY
Tidak tersedia cukup memori untuk membuat instans objek.
E_INVALIDARG
Argumen yang diteruskan dalam parameter ppvObj tidak valid.
E_UNEXPECTED
Terjadi kesalahan tak terduga. Ini dapat terjadi jika satu objek meneruskan penunjuk IObjectContext ke objek lain dan objek lainnya memanggil CreateInstance menggunakan pointer ini. Penunjuk IObjectContext tidak valid di luar konteks objek yang awalnya mendapatkannya.

Keterangan

CreateInstance membuat objek COM. Namun, objek akan memiliki konteks hanya jika komponennya terdaftar dengan COM+.

Saat Anda membuat objek dengan menggunakan CreateInstance, konteks objek baru berasal dari IObjectContext objek saat ini dan properti deklaratif komponen objek baru. Objek baru selalu dijalankan dalam aktivitas yang sama dengan objek yang membuatnya. Jika objek saat ini memiliki transaksi, atribut transaksi komponen objek baru menentukan apakah objek baru dijalankan dalam cakupan transaksi tersebut.

Jika pengaturan atribut transaksi komponen memerlukan transaksi atau mendukung transaksi, objek baru mewarisi transaksi pembuatnya. Jika atribut transaksi komponen memerlukan transaksi baru, COM+ memulai transaksi baru untuk objek baru. Jika atribut transaksi komponen tidak mendukung transaksi, objek baru tidak dijalankan di bawah transaksi apa pun.

CreateInstance selalu mengembalikan antarmuka IUnknown pada objek yang baru dibuat. Anda harus segera mentransmisikan nilai yang dikembalikan ke antarmuka tempat Anda ingin berkomunikasi dengan objek baru. ID antarmuka yang Anda berikan dalam parameter riid tidak perlu menjadi antarmuka yang sama dengan yang Anda berikan nilai yang dikembalikan, tetapi harus menjadi antarmuka yang diimplementasikan oleh objek yang Anda buat.

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 comsvcs.h

Lihat juga

IObjectContext