IMoniker::Kurangi metode (objidl.h)
Mengurangi moniker ke bentuk yang paling sederhana.
Sintaks
HRESULT Reduce(
[in] IBindCtx *pbc,
[in] DWORD dwReduceHowFar,
[in, out] IMoniker **ppmkToLeft,
[out] IMoniker **ppmkReduced
);
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 cara di mana implementasi moniker harus mengambil informasi tentang lingkungannya.
[in] dwReduceHowFar
Menentukan seberapa jauh moniker ini harus dikurangi. Parameter ini harus menjadi salah satu nilai dari enumerasi MKRREDUCE .
[in, out] ppmkToLeft
Pada entri, penunjuk ke variabel penunjuk IMoniker yang berisi penunjuk antarmuka ke moniker di sebelah kiri moniker ini. Parameter ini digunakan terutama oleh pelaksana moniker untuk memungkinkan kerja sama antara berbagai komponen moniker komposit; klien moniker biasanya dapat melewati NULL.
Saat kembali, *ppmkToLeft biasanya diatur ke NULL, menunjukkan tidak ada perubahan pada moniker asli di sebelah kiri. Dalam situasi yang jarang terjadi, *ppmkToLeft menunjukkan moniker, menunjukkan bahwa moniker sebelumnya di sebelah kiri harus diabaikan dan moniker yang dikembalikan melalui *ppmkToLeft adalah penggantinya. Dalam situasi seperti itu, implementasi harus memanggil Rilis pada moniker lama di sebelah kiri moniker ini dan harus memanggil AddRef pada moniker yang baru dikembalikan; penelepon harus merilisnya nanti. Jika terjadi kesalahan, implementasi dapat membiarkan pointer antarmuka tidak berubah atau mengaturnya ke NULL.
[out] ppmkReduced
Penunjuk ke variabel pointer IMoniker yang menerima penunjuk antarmuka ke bentuk pengurangan moniker ini, yang dapat berupa NULL jika terjadi kesalahan atau jika moniker ini dikurangi menjadi apa-apa. Jika moniker ini tidak dapat dikurangi, *ppmkReduced hanya diatur ke moniker ini dan nilai yang dikembalikan MK_S_REDUCED_TO_SELF. Jika *ppmkReducednon-NULL, implementasi harus memanggil AddRef pada moniker baru; adalah tanggung jawab pemanggil untuk memanggil Rilis. (Ini benar meskipun *ppmkReduced diatur ke moniker ini.)
Nilai kembali
Metode ini dapat mengembalikan nilai pengembalian standar E_OUTOFMEMORY dan E_UNEXPECTED, serta nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Metode berhasil diselesaikan. |
|
Moniker ini tidak dapat dikurangi lebih lanjut, sehingga ppmkReduced menunjukkan moniker ini. |
|
Operasi tidak dapat diselesaikan dalam batas waktu yang ditentukan oleh struktur BIND_OPTS konteks ikat. |
Keterangan
Metode ini ditujukan untuk penggunaan berikut:
- Aktifkan konstruksi makro atau alias yang ditentukan pengguna sebagai jenis kelas moniker baru. Ketika dikurangi, moniker yang dievaluasi makro dikembalikan.
- Aktifkan konstruksi semacam moniker yang melacak data saat bergerak. Ketika dikurangi, moniker data di lokasinya saat ini dikembalikan.
- Pada sistem file yang mendukung metode berbasis pengidentifikasi untuk mengakses file yang independen dari nama file; moniker file dapat dikurangi menjadi moniker yang berisi salah satu pengidentifikasi ini.
Catatan untuk Penelepon
Skenario yang dijelaskan di atas saat ini tidak diterapkan oleh kelas moniker yang disediakan sistem.Anda harus memanggil Kurangi sebelum membandingkan dua moniker menggunakan metode IMoniker::IsEqual karena moniker yang berkurang dalam bentuk yang paling spesifik. IsEqual dapat mengembalikan S_FALSE pada dua moniker sebelum dikurangi dan mengembalikan S_OK setelah dikurangi.
Catatan untuk Pelaksana
Jika moniker saat ini dapat dikurangi, implementasi Anda tidak boleh mengurangi moniker di tempat. Sebaliknya, ia harus mengembalikan moniker baru yang mewakili status berkurang dari yang saat ini. Dengan cara ini, penelepon masih memiliki opsi untuk menggunakan moniker yang tidak tereduksi (misalnya, menghitung komponennya). Implementasi Anda harus mengurangi moniker setidaknya sejauh yang diminta.Catatan khusus implementasi
Implementasi | Catatan |
---|---|
Anti-moniker | Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama. |
Moniker kelas | Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama. |
Moniker file | Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama. |
Moniker komposit generik | Metode ini secara rekursif memanggil Reduce untuk setiap moniker komponennya. Jika salah satu komponen mengurangi dirinya sendiri, metode mengembalikan S_OK dan meneruskan kembali komposit komponen yang dikurangi. Jika tidak ada pengurangan yang terjadi, metode meneruskan kembali moniker yang sama dan mengembalikan MK_S_REDUCED_TO_SELF. |
Moniker item | Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama. |
Moniker OBJREF | Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama. |
Penunjuk moniker | Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama. |
Moniker URL | Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama. |
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 |