IMoniker::GetTimeOfLastChange-Methode (objidl.h)
Ruft den Zeitpunkt ab, zu dem das durch diesen Moniker identifizierte Objekt zuletzt geändert wurde.
Syntax
HRESULT GetTimeOfLastChange(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[out] FILETIME *pFileTime
);
Parameter
[in] pbc
Ein Zeiger auf den Bindungskontext, der in diesem Bindungsvorgang verwendet werden soll. Der Bindungskontext speichert Objekte, die während des Bindungsprozesses gebunden sind, enthält Parameter, die für alle Vorgänge mit dem Bindungskontext gelten, und stellt die Mittel bereit, mit denen die Monikerimplementierung Informationen zu ihrer Umgebung abrufen soll. Weitere Informationen finden Sie unter IBindCtx.
[in] pmkToLeft
Wenn der Moniker Teil eines zusammengesetzten Monikers ist, zeiger auf den Moniker links neben diesem Moniker. Dieser Parameter wird hauptsächlich von Monikerimplementierern verwendet, um die Zusammenarbeit zwischen den verschiedenen Komponenten eines zusammengesetzten Monikers zu ermöglichen. Moniker-Clients sollten NULL übergeben.
[out] pFileTime
Ein Zeiger auf die FILETIME-Struktur , die den Zeitpunkt der letzten Änderung empfängt. Der Wert {0xFFFFFFFF,0x7FFFFFFF} weist auf einen Fehler hin (z. B. überschrittenes Zeitlimit, Informationen nicht verfügbar).
Rückgabewert
Diese Methode kann die Standardrückgabewerte E_OUTOFMEMORY sowie die folgenden Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Methode wurde erfolgreich abgeschlossen. |
|
Der Bindungsvorgang konnte nicht innerhalb des durch die BIND_OPTS-Struktur des Bindungskontexts angegebenen Frist abgeschlossen werden. |
|
Der Vorgang konnte keine Verbindung mit dem Speicher für dieses Objekt herstellen, möglicherweise weil ein Netzwerkgerät nicht mit verbunden werden konnte. Weitere Informationen finden Sie unter IMoniker::BindToObject. |
|
Der Zeitpunkt der Änderung ist nicht verfügbar und steht unabhängig vom verwendeten Stichtag nicht zur Verfügung. |
Hinweise
Genauer gesagt ist die zurückgegebene Zeit der früheste Zeitpunkt, zu dem COM erkennen kann, nach dem keine Änderung erfolgt ist, sodass dieser Zeitpunkt später als der Zeitpunkt der letzten Änderung am Objekt liegt.
Hinweise für Anrufer
Wenn Sie von dem durch den Moniker identifizierten Objekt zurückgegebene Informationen zwischenspeichern, sollten Sie sicherstellen, dass Ihre Informationen auf dem neuesten Stand sind. Dazu rufen Sie GetTimeOfLastChange auf und vergleichen die zurückgegebene Zeit mit dem Zeitpunkt, zu dem Sie zuletzt Informationen aus dem Objekt abgerufen haben.Für die in verknüpften Objekten gespeicherten Moniker wird GetTimeOfLastChange in erster Linie von der Standardhandlerimplementierung von IOleObject::IsUpToDate aufgerufen. Containeranwendungen rufen IOleObject::IsUpToDate auf, um zu bestimmen, ob ein verknüpftes Objekt (oder ein eingebettetes Objekt, das verknüpfte Objekte enthält) aktuell ist, ohne tatsächlich an das Objekt gebunden zu sein. Dadurch kann eine Anwendung schnell ermitteln, welche verknüpften Objekte aktualisiert werden müssen, wenn der Endbenutzer ein Dokument öffnet. Die Anwendung kann dann nur die verknüpften Objekte binden, die aktualisiert werden müssen (nachdem der Endbenutzer aufgefordert wurde, zu bestimmen, ob sie aktualisiert werden sollen), anstatt jedes verknüpfte Objekt im Dokument zu binden.
Hinweise für Implementierer
Es ist wichtig, diesen Vorgang schnell auszuführen, da diese Methode für verknüpfte Objekte aufgerufen wird, wenn ein Benutzer zum ersten Mal ein zusammengesetztes Dokument öffnet. Daher sollte Ihre GetTimeOfLastChange-Implementierung nicht an Objekte gebunden werden. Darüber hinaus sollte Ihre Implementierung den deadline-Parameter im Bindungskontext überprüfen und MK_E_EXCEEDEDDEADLINE zurückgeben, wenn der Vorgang nicht zum angegebenen Zeitpunkt abgeschlossen werden kann.Im Folgenden finden Sie einige Strategien, die Sie in Ihren Implementierungen verwenden können:
- Bei vielen Monikertypen identifiziert der Parameter pmkToLeft den Container des Objekts, das durch diesen Moniker identifiziert wird. Wenn dies für Ihre Monikerklasse zutrifft, können Sie einfach GetTimeOfLastChange für den parameter pmkToLeft aufrufen, da ein Objekt zu einem Späteren Zeitpunkt als seinem Container nicht geändert werden kann.
- Sie können einen Zeiger auf die ausgeführte Objekttabelle (ROT) abrufen, indem Sie IBindCtx::GetRunningObjectTable für den pbc-Parameter und dann IRunningObjectTable::GetTimeOfLastChange aufrufen, da rot im Allgemeinen den Zeitpunkt der letzten Änderung aufzeichnet.
- Sie können den diesem Moniker zugeordneten Speicher (oder den pmkToLeft-Moniker ) abrufen und den Zeitpunkt der letzten Änderung des Speichers mit einem Aufruf von IStorage::Stat zurückgeben.
Implementierungsspezifische Hinweise
Implementierung | Hinweise |
---|---|
Anti-Moniker | Diese Methode gibt E_NOTIMPL zurück. |
Moniker der Klasse | Diese Methode gibt MK_E_UNAVAILABLE zurück. |
Dateimoniker | Wenn sich dieser Moniker im ROT befindet, gibt diese Methode den Zeitpunkt der letzten Änderung zurück, der dort registriert wurde. Andernfalls wird die letzte Schreibzeit für die Datei zurückgegeben. Wenn die Datei nicht gefunden werden kann, gibt diese Methode MK_E_NOOBJECT zurück. |
Generischer zusammengesetzter Moniker | Diese Methode erstellt eine Zusammengesetzte aus pmkToLeft (wenn nicht NULL) und diesem Moniker und verwendet rot, um den Zeitpunkt der letzten Änderung abzurufen. Wenn sich das Objekt nicht im ROT befindet, ruft die Methode getTimeOfLastChange rekursiv auf der äußersten rechten Komponente des Zusammengesetzten auf und übergibt den Rest der zusammengesetzten Komponente als pmkToLeft-Parameter für diesen Aufruf. |
Elementmoniker | Wenn pmkToLeftNULL ist, gibt diese Methode MK_E_NOTBINDABLE zurück. Andernfalls erstellt die Methode eine Kombination aus pmkToLeft und diesem Moniker und verwendet rot, um auf den Zeitpunkt der letzten Änderung zuzugreifen. Wenn sich das Objekt nicht im ROT befindet, ruft die Methode GetTimeOfLastChange für den parameter pmkToLeft auf. |
OBJREF-Moniker | Diese Methode gibt E_NOTIMPL zurück. |
Zeigermoniker | Diese Methode gibt E_NOTIMPL zurück. |
URL-Moniker | Diese Methode gibt den Zeitpunkt der letzten Änderung eines Objekts zurück, das in rot registriert ist. |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | objidl.h |