Fungsi CoGetInstanceFromIStorage (objbase.h)

Membuat objek baru dan menginisialisasinya dari objek penyimpanan melalui panggilan internal ke IPersistFile::Load.

Sintaks

HRESULT CoGetInstanceFromIStorage(
  [in, optional] COSERVERINFO *pServerInfo,
  [in, optional] CLSID        *pClsid,
  [in, optional] IUnknown     *punkOuter,
  [in]           DWORD        dwClsCtx,
  [in]           IStorage     *pstg,
  [in]           DWORD        dwCount,
  [in, out]      MULTI_QI     *pResults
);

Parameter

[in, optional] pServerInfo

Penunjuk ke struktur COSERVERINFO yang menentukan komputer untuk membuat instans objek dan pengaturan autentikasi yang akan digunakan. Parameter ini dapat berupa NULL, dalam hal ini objek diinstansiasi pada komputer saat ini, di komputer yang ditentukan di bawah nilai registri RemoteServerName untuk kelas , atau di komputer tempat objek penyimpanan pstg berada jika nilai ActivateAtStorage ditentukan untuk kelas atau tidak ada informasi registri lokal.

[in, optional] pClsid

Penunjuk ke pengidentifikasi kelas objek yang akan dibuat. Parameter ini bisa NULL, dalam hal ini ada panggilan ke IStorage::Stat untuk menemukan kelas objek.

[in, optional] punkOuter

Saat non-NULL, menunjukkan instans sedang dibuat sebagai bagian dari agregat, dan punkOuter akan digunakan sebagai penunjuk ke IUnknown pengendali instans baru. Agregasi tidak didukung lintas proses atau lintas komputer. Saat membuat instans objek di luar proses, CLASS_E_NOAGGREGATION akan dikembalikan jika punkOuter bukan NULL.

[in] dwClsCtx

Nilai dari enumerasi CLSCTX .

[in] pstg

Penunjuk ke objek penyimpanan yang digunakan untuk menginisialisasi objek dengan IPersistFile::Load. Parameter ini tidak boleh NULL.

[in] dwCount

Jumlah struktur dalam pResults. Parameter ini harus lebih besar dari 0.

[in, out] pResults

Array struktur MULTI_QI . Setiap struktur memiliki tiga anggota: pengidentifikasi untuk antarmuka yang diminta (pIID), lokasi untuk mengembalikan penunjuk antarmuka (pItf) dan nilai pengembalian panggilan ke QueryInterface (jam).

Nilai kembali

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

Menampilkan kode Deskripsi
S_OK
Fungsi berhasil mengambil semua antarmuka.
CO_S_NOTALLINTERFACES
Setidaknya satu, tetapi tidak semua antarmuka yang diminta dalam array pResults berhasil diambil. Anggota jam dari masing-masing struktur MULTI_QI menunjukkan dengan S_OK atau E_NOINTERFACE apakah antarmuka tertentu dikembalikan.
E_NOINTERFACE
Tidak ada antarmuka yang diminta dalam array pResults yang berhasil diambil.

Keterangan

CoGetInstanceFromIStorage membuat objek baru dan menginisialisasinya dari objek penyimpanan menggunakan IPersistFile::Load. Hasil dari fungsi ini mirip dengan membuat instans dengan panggilan ke CoCreateInstanceEx, diikuti dengan panggilan inisialisasi ke IPersistFile::Load, dengan perbedaan penting berikut:

  • Lebih sedikit perjalanan pulang pergi jaringan yang diperlukan oleh fungsi ini saat membuat instans objek di komputer jarak jauh.
  • Dalam kasus di mana dwClsCtx diatur ke CLSCTX_REMOTE_SERVER dan pServerInfo adalah NULL, jika kelas terdaftar dengan nilai ActivateAtStorage atau tidak memiliki informasi registri terkait, fungsi ini akan membuat instans objek di komputer tempat pstg berada, menyediakan lalu lintas jaringan sesedikit mungkin.

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 objbase.h
Pustaka Ole32.lib
DLL Ole32.dll

Lihat juga

CLSCTX

CoCreateInstanceEx

CoGetInstanceFromFile