Metode IMoniker::GetTimeOfLastChange (objidl.h)
Mengambil waktu di mana objek yang diidentifikasi oleh moniker ini terakhir diubah.
Sintaks
HRESULT GetTimeOfLastChange(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[out] FILETIME *pFileTime
);
Parameter
[in] pbc
Penunjuk ke 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. Untuk informasi selengkapnya, lihat IBindCtx.
[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 melewati NULL.
[out] pFileTime
Penunjuk ke struktur FILETIME yang menerima waktu perubahan terakhir. Nilai {0xFFFFFFFF,0x7FFFFFFF} menunjukkan kesalahan (misalnya, melebihi batas waktu, informasi tidak tersedia).
Nilai kembali
Metode ini dapat mengembalikan nilai pengembalian standar E_OUTOFMEMORY, serta nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Metode berhasil diselesaikan. |
|
Operasi pengikatan tidak dapat diselesaikan dalam batas waktu yang ditentukan oleh struktur BIND_OPTS konteks ikat. |
|
Operasi tidak dapat tersambung ke penyimpanan untuk obyek ini, mungkin karena perangkat jaringan tidak dapat disambungkan. Untuk informasi selengkapnya, lihat IMoniker::BindToObject. |
|
Waktu perubahan tidak tersedia dan tidak akan tersedia terlepas dari tenggat waktu yang digunakan. |
Keterangan
Tepatnya, waktu yang dikembalikan adalah waktu paling awal yang dapat diidentifikasi COM setelah itu tidak ada perubahan yang terjadi, sehingga waktu ini mungkin lebih lambat dari waktu perubahan terakhir pada objek.
Catatan untuk Penelepon
Jika Anda menyimpan cache informasi yang dikembalikan oleh objek yang diidentifikasi oleh moniker, Anda mungkin ingin memastikan bahwa informasi Anda sudah diperbarui. Untuk melakukannya, Anda akan memanggil GetTimeOfLastChange dan membandingkan waktu yang dikembalikan dengan waktu terakhir Kali Anda mengambil informasi dari objek.Untuk moniker yang disimpan dalam objek tertaut, GetTimeOfLastChange terutama dipanggil oleh implementasi handler default dari IOleObject::IsUpToDate. Aplikasi kontainer memanggil IOleObject::IsUpToDate untuk menentukan apakah objek tertaut (atau objek tersemat yang berisi objek tertaut) sudah diperbarui tanpa benar-benar mengikat objek. Ini memungkinkan aplikasi untuk menentukan dengan cepat objek tertaut mana yang perlu diperbarui saat pengguna akhir membuka dokumen. Aplikasi kemudian hanya dapat mengikat objek tertaut yang perlu diperbarui (setelah meminta pengguna akhir untuk menentukan apakah mereka harus diperbarui) alih-alih mengikat setiap objek yang ditautkan dalam dokumen.
Catatan untuk Pelaksana
Penting untuk melakukan operasi ini dengan cepat karena, untuk objek tertaut, metode ini dipanggil ketika pengguna pertama kali membuka dokumen campuran. Akibatnya, implementasi GetTimeOfLastChange Anda tidak boleh mengikat objek apa pun. Selain itu, implementasi Anda harus memeriksa parameter tenggat waktu dalam konteks ikatan dan mengembalikan MK_E_EXCEEDEDDEADLINE jika operasi tidak dapat diselesaikan pada waktu yang ditentukan.Berikut adalah beberapa strategi yang dapat Anda gunakan dalam implementasi Anda:
- Untuk banyak jenis moniker, parameter pmkToLeft mengidentifikasi kontainer objek yang diidentifikasi oleh moniker ini. Jika ini benar dari kelas moniker Anda, Anda cukup memanggil GetTimeOfLastChange pada parameter pmkToLeft , karena objek tidak dapat berubah pada tanggal yang lebih lambat dari kontainernya.
- Anda bisa mendapatkan penunjuk ke tabel objek yang sedang berjalan (ROT) dengan memanggil IBindCtx::GetRunningObjectTable pada parameter pbc lalu memanggil IRunningObjectTable::GetTimeOfLastChange, karena ROT umumnya merekam waktu perubahan terakhir.
- Anda bisa mendapatkan penyimpanan yang terkait dengan moniker ini (atau moniker pmkToLeft ) dan mengembalikan waktu modifikasi terakhir penyimpanan dengan panggilan ke IStorage::Stat.
Catatan khusus implementasi
Implementasi | Catatan |
---|---|
Anti-moniker | Metode ini mengembalikan E_NOTIMPL. |
Moniker kelas | Metode ini mengembalikan MK_E_UNAVAILABLE. |
Moniker file | Jika moniker ini berada dalam ROT, metode ini mengembalikan waktu perubahan terakhir yang terdaftar di sana; jika tidak, ia mengembalikan waktu tulis terakhir untuk file. Jika file tidak dapat ditemukan, metode ini mengembalikan MK_E_NOOBJECT. |
Moniker komposit generik | Metode ini membuat komposit pmkToLeft (jika non-NULL) dan moniker ini dan menggunakan ROT untuk mengambil waktu perubahan terakhir. Jika objek tidak berada dalam ROT, metode secara rekursif memanggil GetTimeOfLastChange pada komponen paling kanan komposit, meneruskan sisa komposit sebagai parameter pmkToLeft untuk panggilan tersebut. |
Moniker item | Jika pmkToLeftadalah NULL, metode ini mengembalikan MK_E_NOTBINDABLE. Jika tidak, metode ini membuat komposit pmkToLeft dan moniker ini dan menggunakan ROT untuk mengakses waktu perubahan terakhir. Jika objek tidak ada di ROT, metode memanggil GetTimeOfLastChange pada parameter pmkToLeft . |
Moniker OBJREF | Metode ini mengembalikan E_NOTIMPL. |
Penunjuk moniker | Metode ini mengembalikan E_NOTIMPL. |
Moniker URL | Metode ini mengembalikan waktu perubahan terakhir objek yang terdaftar dalam ROT. |
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 |