Bagikan melalui


IOleItemContainer::Metode GetObject (oleidl.h)

Mengambil penunjuk ke objek yang ditentukan.

Sintaks

HRESULT GetObject(
  [in]  LPOLESTR pszItem,
  [in]  DWORD    dwSpeedNeeded,
  [in]  IBindCtx *pbc,
  [in]  REFIID   riid,
  [out] void     **ppvObject
);

Parameter

[in] pszItem

Nama kontainer untuk objek yang diminta.

[in] dwSpeedNeeded

Menunjukkan kira-kira berapa lama penelepon akan menunggu untuk mendapatkan objek . Nilai yang mungkin diambil dari enumerasi BINDSPEED.

[in] pbc

Penunjuk ke antarmuka IBindCtx pada objek konteks ikatan yang akan 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 pengikatan harus mengambil informasi tentang lingkungannya.

[in] riid

Referensi ke pengidentifikasi penunjuk antarmuka yang diminta.

[out] ppvObject

Alamat variabel pointer yang menerima pointer antarmuka yang diminta dalam riid. Setelah berhasil dikembalikan, *ppvObject berisi penunjuk antarmuka yang diminta ke objek bernama oleh pszItem. Jika berhasil, implementasi harus memanggil AddRef pada *ppvObject; adalah tanggung jawab penelepon untuk memanggil Rilis. Jika terjadi kesalahan, implementasi menetapkan *ppvObject ke NULL.

Nilai kembali

Metode ini dapat mengembalikan nilai pengembalian standar E_OUTOFMEMORY, serta nilai berikut.

Menampilkan kode Deskripsi
S_OK
Metode berhasil diselesaikan.
MK_E_EXCEEDEDDEADLINE
Operasi pengikatan tidak dapat diselesaikan dalam batas waktu yang ditentukan oleh struktur BIND_OPTS konteks ikatan, atau dengan kecepatan yang ditunjukkan oleh parameter dwSpeedNeeded .
MK_E_NOOBJECT
Parameter pszItem tidak mengidentifikasi objek dalam kontainer ini.
E_NOINTERFACE
Antarmuka yang diminta tidak tersedia.

Keterangan

Implementasi moniker item IMoniker::BindToObject memanggil metode ini, meneruskan nama yang disimpan dalam item moniker sebagai parameter pszItem .

Catatan untuk Pelaksana

Implementasi IOleItemContainer::GetObject Anda harus terlebih dahulu menentukan apakah pszItem adalah nama yang valid untuk salah satu objek kontainer. Jika tidak, Anda harus mengembalikan MK_E_NOOBJECT.

Jika pszItem menamai objek yang disematkan atau ditautkan, implementasi Anda harus memeriksa nilai parameter dwSpeedNeeded . Jika nilainya BINDSPEED_IMMEDIATE dan objek belum dimuat, Anda harus mengembalikan MK_E_EXCEEDEDDEADLINE. Jika objek dimuat, implementasi Anda harus menentukan apakah objek berjalan (misalnya, dengan memanggil fungsi OleIsRunning ). Jika tidak berjalan dan nilai dwSpeedNeeded BINDSPEED_MODERATE, implementasi Anda harus mengembalikan MK_E_EXCEEDEDDEADLINE. Jika objek tidak berjalan dan dwSpeedNeeded BINDSPEED_INDEFINITE, implementasi Anda harus memanggil fungsi OleRun untuk menempatkan objek dalam status berjalan. Kemudian dapat mengkueri objek untuk antarmuka yang diminta. Perhatikan bahwa penting untuk menjalankan objek sebelum Anda mengkueri antarmuka.

Jika pszItem menamai objek pseudo, implementasi Anda dapat mengabaikan parameter dwSpeedNeeded karena objek pseudo berjalan setiap kali kontainernya berjalan. Dalam hal ini, implementasi Anda hanya dapat mengkueri antarmuka yang diminta.

Jika Anda memerlukan informasi yang lebih spesifik tentang batas waktu daripada yang diberikan oleh dwSpeedNeeded, Anda dapat memanggil IBindCtx::GetBindOptions pada parameter pbc untuk mendapatkan parameter tenggat waktu yang sebenarnya.

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

Lihat juga

IOleItemContainer