IMoniker::GetTimeOfLastChange 方法 (objidl.h)
擷取上次變更這個Moniker所識別物件的時間。
語法
HRESULT GetTimeOfLastChange(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[out] FILETIME *pFileTime
);
參數
[in] pbc
要用於這個系結作業之系結內容的指標。 系結內容會在系結程式期間快取系結的物件、包含使用系結內容套用至所有作業的參數,並提供Moniker實作應該擷取其環境相關信息的方法。 如需詳細資訊,請參閱 IBindCtx。
[in] pmkToLeft
如果Moniker是複合Moniker的一部分,則指向這個Moniker左邊的Moniker指標。 這個參數主要是由Moniker實作者用來啟用複合Moniker的各種元件之間的合作。 Moniker 用戶端應該傳遞 NULL。
[out] pFileTime
接收上次變更時間之 FILETIME 結構的指標。 {0xFFFFFFFF,0x7FFFFFFF} 的值表示錯誤 (例如超過時間限制、無法使用的資訊) 。
傳回值
這個方法可以傳回標準傳回值E_OUTOFMEMORY,以及下列值。
傳回碼 | 描述 |
---|---|
|
已成功完成命令。 |
|
系結作業無法在系結內容 BIND_OPTS 結構所指定的時間限制內完成。 |
|
作業無法連線到此物件的記憶體,可能是因為網路裝置無法連線。 如需詳細資訊,請參閱 IMoniker::BindToObject。 |
|
變更的時間無法使用,無論使用的期限為何,都無法使用。 |
備註
精確來說,傳回的時間是 COM 最早可以識別之後未發生任何變更的時間,因此這次可能晚於上次變更對象的時間。
來電者附註
如果您要快取 Moniker 所識別的物件所傳回的資訊,您可能會想要確保資訊是最新的。 若要這樣做,您會呼叫 GetTimeOfLastChange ,並將傳回的時間與您上次從 物件擷取的信息時間進行比較。針對儲存在連結物件內的 Moniker,GetTimeOfLastChange 主要是由默認處理程式的 IOleObject::IsUpToDate 實作所呼叫。 容器應用程式會呼叫 IOleObject::IsUpToDate 來判斷連結的物件 (或包含連結物件的內嵌物件,) 為最新狀態,而不會實際系結至物件。 這可讓應用程式快速判斷當使用者開啟檔時需要更新的連結物件。 然後,應用程式只能在提示用戶判斷是否應該更新) 而不是系結檔中每個鏈接物件之後,才需要更新 (這些鏈接物件。
實作者的注意事項
請務必快速執行這項作業,因為對於連結的物件,當使用者第一次開啟複合檔時會呼叫這個方法。 因此, GetTimeOfLastChange 實作 不應該系結至任何物件。 此外,您的實作應該檢查系結內容中的期限參數,並在指定的時間無法完成作業時傳回MK_E_EXCEEDEDDEADLINE。以下是一些您可以在實作中使用的策略:
- 對於許多類型的Moniker,pmkToLeft 參數會識別這個Moniker所識別物件的容器。 如果此為Moniker類別的 true,您可以直接在pmkToLeft 參數上呼叫 GetTimeOfLastChange,因為物件不能在其容器之後的日期變更。
- 您可以在 ( ROT) 上呼叫 IBindCtx::GetRunningObjectTable,然後呼叫 IRunningObjectTable::GetTimeOfLastChange 來取得執行中對象數據表的指標,因為 ROT 通常會記錄上次變更的時間。
- 您可以取得與此 Moniker 相關聯的記憶體 (或 pmkToLeft moniker) ,並使用 呼叫 IStorage::Stat 傳回記憶體的上次修改時間。
實作特定附注
實作 | 備註 |
---|---|
反Moniker | 這個方法會傳回E_NOTIMPL。 |
類別Moniker | 這個方法會傳回MK_E_UNAVAILABLE。 |
檔案Moniker | 如果這個Moniker位於 ROT 中,這個方法會傳回該處註冊的最後一個變更時間;否則,它會傳回檔案的上次寫入時間。 如果找不到檔案,這個方法會傳回MK_E_NOOBJECT。 |
泛型複合Moniker | 如果非 NULL) 和這個 Moniker,並使用 ROT 擷取上次變更的時間,這個方法會建立 pmkToLeft (的複合。 如果物件不在 ROT 中,方法會以遞歸方式在複合最右邊的元件上呼叫 GetTimeOfLastChange ,並傳遞複合的其餘部分做為該呼叫的 pmkToLeft 參數。 |
專案Moniker | 如果 pmkToLeft 為 NULL,此方法會傳回MK_E_NOTBINDABLE。 否則,方法會建立 pmkToLeft 和這個 Moniker 的複合,並使用 ROT 來存取上次變更的時間。 如果物件不在 ROT 中,此方法會在 pmkToLeft 參數上呼叫 GetTimeOfLastChange。 |
OBJREF Moniker | 這個方法會傳回E_NOTIMPL。 |
指標 Moniker | 這個方法會傳回E_NOTIMPL。 |
URL Moniker | 這個方法會傳回在 ROT 中註冊之物件上次變更的時間。 |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | objidl.h |