Metode IMoniker::BindToStorage (objidl.h)
Mengikat ke penyimpanan untuk objek yang ditentukan. Tidak seperti metode IMoniker::BindToObject , metode ini tidak mengaktifkan objek yang diidentifikasi oleh moniker.
Sintaks
HRESULT BindToStorage(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[in] REFIID riid,
[out] void **ppvObj
);
Parameter
[in] pbc
Penunjuk ke antarmuka IBindCtx pada objek konteks ikatan, yang digunakan dalam operasi pengikatan ini. Konteks ikatan menyimpan objek yang terikat selama proses pengikatan, berisi parameter yang berlaku untuk semua operasi menggunakan konteks ikatan, dan menyediakan sarana di mana implementasi moniker harus mengambil informasi tentang lingkungannya.
[in] pmkToLeft
Jika moniker adalah bagian dari moniker komposit, arahkan ke moniker di sebelah kiri moniker ini. Parameter ini terutama digunakan oleh pelaksana moniker untuk memungkinkan kerja sama antara berbagai komponen moniker komposit. Klien Moniker harus menggunakan NULL.
[in] riid
Referensi ke pengidentifikasi antarmuka penyimpanan yang diminta, yang penunjuknya akan dikembalikan dalam ppvObj. Antarmuka penyimpanan yang umum diminta termasuk IStorage, IStream, dan ILockBytes.
[out] ppvObj
Alamat variabel pointer yang menerima pointer antarmuka yang diminta dalam riid. Setelah berhasil dikembalikan, *ppvObj berisi penunjuk antarmuka yang diminta ke penyimpanan objek yang diidentifikasi moniker. Jika berhasil, implementasi harus memanggil AddRef pada penyimpanan. Pemanggil bertanggung jawab untuk memanggil Rilis. Jika terjadi kesalahan, *ppvObj harus NULL.
Nilai kembali
Metode ini dapat mengembalikan nilai pengembalian standar E_UNEXPECTED, serta nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Operasi pengikatan berhasil. |
|
Objek yang diidentifikasi oleh moniker ini tidak memiliki penyimpanannya sendiri. |
|
Operasi pengikatan tidak dapat diselesaikan dalam batas waktu yang ditentukan oleh struktur BIND_OPTS konteks ikat. |
|
Operasi tidak dapat tersambung ke penyimpanan, mungkin karena perangkat jaringan tidak dapat disambungkan. Untuk informasi selengkapnya, lihat IMoniker::BindToObject. |
|
Objek perantara ditemukan tetapi tidak mendukung antarmuka yang diperlukan untuk menyelesaikan operasi pengikatan. Misalnya, moniker item mengembalikan nilai ini jika kontainernya tidak mendukung antarmuka IOleItemContainer . |
|
Tidak dapat mengakses objek penyimpanan. |
Metode ini juga dapat mengembalikan kesalahan yang terkait dengan metode IOleItemContainer::GetObject .
Keterangan
Ada perbedaan penting antara metode BindToObject dan BindToStorage . Jika, misalnya, Anda memiliki moniker yang mengidentifikasi objek spreadsheet, memanggil BindToObject menyediakan akses ke objek spreadsheet itu sendiri, sambil memanggil BindToStorage menyediakan akses ke objek penyimpanan tempat spreadsheet berada.
Catatan untuk Penelepon
Meskipun tidak ada kelas moniker COM yang memanggil metode ini dalam operasi pengikatan mereka, mungkin tepat untuk menyebutnya dalam implementasi kelas moniker baru. Anda dapat memanggil metode ini dalam implementasi BindToObject yang memerlukan informasi dari objek yang diidentifikasi oleh parameter pmkToLeft dan bisa mendapatkannya dari penyimpanan persisten objek tanpa aktivasi. Misalnya, jika moniker Anda digunakan untuk mengidentifikasi objek yang dapat diaktifkan tanpa mengaktifkan kontainernya, Anda mungkin merasa metode ini berguna.Klien yang dapat membaca penyimpanan objek yang diidentifikasi monikernya juga dapat memanggil metode ini.
Catatan untuk Pelaksana
Implementasi Anda harus menemukan penyimpanan persisten untuk objek yang diidentifikasi oleh moniker saat ini dan mengembalikan penunjuk antarmuka yang diinginkan. Beberapa jenis moniker mewakili objek pseudo, yang merupakan objek yang tidak memiliki penyimpanan persisten mereka sendiri. Objek tersebut terdiri dari beberapa bagian dari status internal kontainernya, misalnya, rentang sel dalam spreadsheet. Jika kelas moniker Anda mengidentifikasi jenis objek ini, implementasi BindToStorage Anda harus mengembalikan kesalahan MK_E_NOSTORAGE.Jika struktur BIND_OPTS konteks ikat menentukan bendera BINDFLAGS_JUSTTESTEXISTENCE, implementasi Anda memiliki opsi untuk mengembalikan NULL di ppvObj (meskipun Anda juga dapat mengabaikan bendera dan melakukan operasi pengikatan lengkap).
Catatan khusus implementasi
Implementasi | Catatan |
---|---|
Anti-moniker | Metode ini mengembalikan E_NOTIMPL. |
Moniker kelas | Metode ini diteruskan ke BindToObject kelas moniker. |
Moniker file | Metode ini membuka file yang ditentukan oleh jalur yang diwakili oleh moniker dan mengembalikan penunjuk IStorage ke file tersebut. Metode ini hanya mendukung pengikatan ke antarmuka IStorage ; jika IStream atau ILockBytes diminta dalam riid, metode mengembalikan E_UNSPEC, dan jika antarmuka lain diminta, metode ini mengembalikan E_NOINTERFACE. Kecuali pmkToLeft adalah moniker kelas, pmkToLeft harus NULL, seperti dalam implementasi IMoniker::BindToObject. |
Moniker komposit generik | Metode ini secara rekursif memanggil BindToStorage pada komponen paling kanan komposit, meneruskan sisa komposit sebagai parameter pmkToLeft untuk panggilan tersebut. |
Moniker item | Jika pmkToLeftADALAH NULL, metode ini mengembalikan E_INVALIDARG. Jika tidak, metode memanggil IMoniker::BindToObject pada parameter pmkToLeft , meminta penunjuk antarmuka IOleItemContainer . Metode ini kemudian memanggil IOleItemContainer::GetObjectStorage untuk antarmuka yang diminta. |
Moniker OBJREF | Metode ini mendapatkan pointer marshaled ke antarmuka yang diminta pada penyimpanan yang berisi objek yang sedang berjalan. Karena moniker OBJREF mewakili objek yang sedang berjalan, tidak ada aktivasi yang terjadi. Jika objek yang diwakili tidak lagi berjalan, BindToStorage gagal dengan E_UNEXPECTED. |
Penunjuk moniker | Metode ini mengkueri penunjuk yang dibungkus untuk antarmuka yang diminta. |
Moniker URL |
Implementasi sistem moniker URL mendukung BindToStorage untuk objek stream pada semua URL dan untuk objek penyimpanan dalam kasus di mana sumber daya yang ditunjuk adalah file majemuk.
Karena moniker URL mendukung pengikatan asinkron, nilai pengembalian aktual dari BindToStorage-nya dapat bervariasi tergantung pada parameter objek yang ditetapkan dalam konteks ikatan. Namun, semantik operasi ikatan identik terlepas dari penggunaan sinkron atau asinkron, sebagai berikut:
|
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 | objidl.h |