Bagikan melalui


Metode IBindCtx::RegisterObjectParam (objidl.h)

Mengaitkan objek dengan kunci string dalam tabel penunjuk berkuntang string konteks yang diikat.

Sintaks

HRESULT RegisterObjectParam(
  [in] LPOLESTR pszKey,
  [in] IUnknown *punk
);

Parameter

[in] pszKey

Kunci string konteks ikatan tempat objek didaftarkan. Perbandingan string kunci peka huruf besar/kecil.

[in] punk

Penunjuk ke antarmuka IUnknown pada objek yang akan didaftarkan.

Metode memanggil AddRef pada penunjuk.

Nilai kembali

Metode ini dapat mengembalikan nilai pengembalian standar E_OUTOFMEMORY dan S_OK.

Keterangan

Konteks ikat mempertahankan tabel penunjuk antarmuka, masing-masing terkait dengan kunci string. Ini memungkinkan komunikasi antara implementasi moniker dan pemanggil yang memulai operasi pengikatan. Satu pihak dapat menyimpan pointer antarmuka di bawah string yang diketahui oleh kedua belah pihak sehingga pihak lain nantinya dapat mengambilnya dari konteks ikatan.

Operasi pengikatan berikutnya ke penggunaan metode ini dapat menggunakan IBindCtx::GetObjectParam untuk mengambil pointer yang disimpan.

Catatan untuk Penelepon

RegisterObjectParam berguna bagi mereka yang menerapkan kelas moniker baru (melalui implementasi IMoniker) dan kepada klien moniker (mereka yang menggunakan moniker untuk mengikat objek).

Dalam menerapkan kelas moniker baru, Anda memanggil metode ini ketika terjadi kesalahan selama pengikatan moniker untuk memberi tahu pemanggil tentang penyebab kesalahan. Kunci yang akan Anda peroleh dengan panggilan ke metode ini akan bergantung pada kondisi kesalahan. Berikut ini adalah daftar kesalahan pengikatan moniker umum, yang menjelaskan untuk setiap kunci yang sesuai:

  • MK_E_EXCEEDEDDEADLINE: Jika operasi pengikatan melebihi tenggat waktunya karena objek tertentu tidak berjalan, Anda harus mendaftarkan moniker objek menggunakan kunci pertama yang tidak digunakan dari daftar: "ExceededDeadline", "ExceededDeadline1", "ExceededDeadline2", dan sebagainya. Jika penelepon nanti menemukan moniker dalam tabel objek yang sedang berjalan, pemanggil dapat mencoba kembali operasi pengikatan.
  • MK_E_CONNECTMANUALLY: Kunci "ConnectManually" menunjukkan moniker yang pengikatannya memerlukan bantuan dari pengguna akhir. Untuk meminta agar pengguna akhir tersambung secara manual ke objek, pemanggil dapat mencoba kembali operasi pengikatan setelah menampilkan nama tampilan moniker. Alasan umum untuk kesalahan ini adalah bahwa kata sandi diperlukan atau bahwa floppy perlu dipasang.
  • E_CLASSNOTFOUND: Kunci "ClassNotFound" menunjukkan moniker yang kelasnya tidak dapat ditemukan. (Server untuk objek yang diidentifikasi oleh moniker ini tidak dapat ditemukan.) Jika kunci ini digunakan untuk objek dokumen majemuk OLE, pemanggil dapat menggunakan operasi IMoniker::BindToStorage untuk mengikat objek dan kemudian mencoba melakukan operasi Perlakukan Sebagai... atau Konversi Ke... untuk mengaitkan objek dengan server yang berbeda. Jika ini berhasil, pemanggil dapat mencoba kembali operasi pengikatan.
Klien moniker dengan pengetahuan terperinci tentang implementasi moniker juga dapat memanggil metode ini untuk meneruskan informasi privat ke implementasi tersebut.

Anda dapat menentukan string baru sebagai kunci untuk menyimpan pointer. Berdasarkan konvensi, Anda harus menggunakan nama kunci yang dimulai dengan bentuk string CLSID dari kelas moniker. (Lihat fungsi StringFromCLSID .)

Jika parameter pszKey cocok dengan nama kunci yang ada dalam tabel konteks ikatan, objek baru menggantikan objek yang ada dalam tabel.

Ketika Anda mendaftarkan objek menggunakan metode ini, objek tidak dirilis sampai salah satu hal berikut terjadi:

  • Ini diganti dalam tabel oleh objek lain dengan kunci yang sama.
  • Ini dihapus dari tabel dengan panggilan ke IBindCtx::RevokeObjectParam.
  • Konteks ikatan dirilis. Semua objek terdaftar dirilis saat konteks ikatan dirilis.

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

Lihat juga

IBindCtx