IMoniker::Metode IsRunning (objidl.h)
Menentukan apakah objek yang diidentifikasi oleh moniker ini saat ini dimuat dan dijalankan.
Sintaks
HRESULT IsRunning(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[in] IMoniker *pmkNewlyRunning
);
Parameter
[in] pbc
Penunjuk ke antarmuka IBindCtx pada 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 moniker harus mengambil informasi tentang lingkungannya.
[in] pmkToLeft
Penunjuk ke antarmuka IMoniker di moniker di sebelah kiri moniker ini jika moniker ini adalah bagian dari komposit. Parameter ini digunakan terutama oleh pelaksana moniker untuk memungkinkan kerja sama antara berbagai komponen moniker komposit; klien moniker biasanya dapat melewati NULL.
[in] pmkNewlyRunning
Penunjuk ke antarmuka IMoniker pada moniker yang terakhir ditambahkan ke tabel objek yang sedang berjalan (ROT). Ini bisa NULL. Jika non-NULL, implementasi dapat mengembalikan hasil panggilan IMoniker::IsEqual pada parameter pmkNewlyRunning , melewati moniker saat ini. Parameter ini dimaksudkan untuk mengaktifkan implementasi IsRunning yang lebih efisien daripada hanya mencari ROT, tetapi implementasinya dapat memilih untuk mengabaikan pmkNewlyRunning tanpa menyebabkan bahaya apa pun.
Nilai kembali
Metode ini dapat mengembalikan nilai pengembalian standar E_UNEXPECTED, serta nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Moniker sedang berjalan. |
|
Moniker tidak berjalan. |
Keterangan
Catatan untuk Penelepon
Jika kecepatan penting ketika Anda meminta layanan dari objek yang diidentifikasi oleh moniker, Anda mungkin menginginkan layanan tersebut hanya jika objek sudah berjalan (karena memuat objek ke dalam status berjalan mungkin memakan waktu). Dalam situasi seperti itu, Anda harus memanggil IsRunning untuk menentukan apakah objek berjalan.Untuk moniker yang disimpan dalam objek tertaut, IsRunning terutama dipanggil oleh implementasi handler default IOleLink::BindIfRunning.
Catatan untuk Pelaksana
Untuk mendapatkan pointer ke ROT, implementasi Anda harus memanggil IBindCtx::GetRunningObjectTable pada parameter pbc . Implementasi Anda kemudian dapat memanggil IRunningObjectTable::IsRunning untuk menentukan apakah objek yang diidentifikasi oleh moniker sedang berjalan. Objek yang diidentifikasi oleh moniker harus mendaftarkan dirinya dengan ROT ketika pertama kali mulai berjalan.Catatan khusus implementasi
Implementasi | Catatan |
---|---|
Anti-moniker | Metode ini memeriksa ROT untuk melihat apakah objek sedang berjalan. |
Moniker kelas | Metode ini mengembalikan E_NOTIMPL. |
Moniker file | Jika pmkNewlyRunning bukan NULL, metode ini mengembalikan TRUE jika moniker tersebut sama dengan moniker ini. Jika tidak, metode bertanya kepada ROT apakah moniker ini berjalan. Metode mengabaikan pmkToLeft. |
Moniker komposit generik |
Jika pmkToLeftnon-NULL, metode ini menyusun pmkToLeft dengan moniker ini dan memanggil IsRunning pada hasilnya.
Jika pmkToLeftadalah NULL, metode ini mengembalikan TRUE jika pmkNewlyRunning non-NULL dan sama dengan moniker ini. Jika pmkToLeft dan pmkNewlyRunning keduanya NULL, metode ini memeriksa ROT untuk melihat apakah moniker berjalan. Jika demikian, metode mengembalikan S_OK; jika tidak, ia secara rekursif memanggil IsRunning pada komponen paling kanan komposit, melewati sisa komposit sebagai parameter pmkToLeft untuk panggilan tersebut. Ini menangani kasus di mana moniker mengidentifikasi objek pseudo yang tidak terdaftar sebagai berjalan; lihat implementasi moniker item untuk detail selengkapnya. |
Moniker item |
Jika pmkToLeft adalah NULL, metode ini mengembalikan TRUE jika pmkNewlyRunningnon-NULL dan sama dengan moniker ini. Jika tidak, metode memeriksa ROT untuk melihat apakah moniker ini berjalan.
Jika pmkToLeft non-NULL, metode memanggil IMoniker::BindToObject pada parameter pmkToLeft , meminta penunjuk antarmuka IOleItemContainer . Metode kemudian memanggil IOleItemContainer::IsRunning, meneruskan string yang terkandung dalam moniker ini. |
Moniker OBJREF | Karena moniker OBJREF mewakili instans objek yang sedang berjalan, metode ini mengembalikan TRUE kecuali objek diketahui tidak lagi berjalan karena panggilan baru-baru ini gagal. Metode mengabaikan pmkToLeft. |
Penunjuk moniker | Metode ini selalu mengembalikan S_OK, karena objek yang diidentifikasi oleh moniker pointer harus selalu berjalan. |
Moniker URL | Mengembalikan S_OK jika moniker ini sedang berjalan. Jika tidak, ia menampilkan S_FALSE. Moniker URL menentukan apakah url berjalan dengan terlebih dahulu memeriksa apakah itu sama dengan moniker yang baru berjalan, dengan melakukan panggilan berikut: pmkNewlyRunning-IsEqual>. Biasanya, panggilan ini adalah operasi yang murah. Jika ini tidak berhasil, moniker berikutnya memeriksa untuk melihat apakah itu terdaftar dengan ROT dari konteks ikatan yang diteruskan. |
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 |