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.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk