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
S_OK
Die Methode wurde erfolgreich abgeschlossen.
MK_E_EXCEEDEDDEADLINE
Der Bindungsvorgang konnte nicht innerhalb des durch die BIND_OPTS-Struktur des Bindungskontexts angegebenen Frist abgeschlossen werden.
MK_E_CONNECTMANUALLY
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.
MK_E_UNAVAILABLE
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

Weitere Informationen

Imoniker

IRunningObjectTable::GetTimeOfLastChange