IMAPITable::Advise
Gilt für: Outlook 2013 | Outlook 2016
Registriert ein Empfehlungssenkenobjekt, um Benachrichtigungen über angegebene Ereignisse zu erhalten, die sich auf die Tabelle auswirken.
HRESULT Advise(
ULONG ulEventMask,
LPMAPIADVISESINK lpAdviseSink,
ULONG_PTR FAR * lpulConnection
);
Parameter
ulEventMask
[in] Wert, der den Typ des Ereignisses angibt, das die Benachrichtigung generiert. Nur der folgende Wert ist gültig:
fnevTableModified
lpAdviseSink
[in] Zeiger auf ein Senkeobjekt, das die nachfolgenden Benachrichtigungen empfangen soll. Dieses Empfehlungssenkenobjekt muss bereits zugeordnet worden sein.
lpulConnection
[out] Zeiger auf einen Wert ungleich null, der die erfolgreiche Benachrichtigungsregistrierung darstellt.
Rückgabewert
S_OK
Die Benachrichtigungsregistrierung wurde erfolgreich abgeschlossen.
MAPI_E_NO_SUPPORT
Die Tabellenimplementierung unterstützt entweder keine Änderungen an ihren Zeilen und Spalten oder keine Benachrichtigungen.
Hinweise
Verwenden Sie die IMAPITable::Advise-Methode , um ein tabellenobjekt zu registrieren, das im Anbieter für Benachrichtigungsrückrufe implementiert ist. Wenn eine Änderung am Tabellenobjekt erfolgt, überprüft der Anbieter, welches Ereignismaskenbit im ulEventMask-Parameter festgelegt wurde und somit welche Art von Änderung aufgetreten ist. Wenn ein Bit festgelegt ist, ruft der Anbieter die IMAPIAdviseSink::OnNotify-Methode für das vom lpAdviseSink-Parameter angegebene Empfehlungssenkenobjekt auf, um das Ereignis zu melden. Daten, die in der Benachrichtigungsstruktur an die OnNotify-Routine übergeben werden, beschreiben das Ereignis.
Der Aufruf von OnNotify kann während des Aufrufs, der das Objekt ändert, oder zu einem beliebigen zeitpunkt erfolgen. Auf Systemen, die mehrere Ausführungsthreads unterstützen, kann der Aufruf von OnNotify für jeden Thread erfolgen. Um einen Aufruf von OnNotify , der möglicherweise zu einem ungünstigen Zeitpunkt erfolgt, in einen Aufruf umzuwandeln, der sicherer zu behandeln ist, sollte ein Anbieter die Funktion HrThisThreadAdviseSink verwenden.
Um Benachrichtigungen bereitzustellen, muss der Anbieter, der Advise implementiert, eine Kopie des Zeigers auf das lpAdviseSink-Beratungssenkenobjekt aufbewahren. Dazu ruft sie die IUnknown::AddRef-Methode für die Empfehlungssenke auf, ihren Objektzeiger beizubehalten, bis die Benachrichtigungsregistrierung mit einem Aufruf der IMAPITable::Unadvise-Methode abgebrochen wird. Die Advise-Implementierung sollte der Benachrichtigungsregistrierung eine Verbindungsnummer zuweisen und AddRef für diese Verbindungsnummer aufrufen, bevor sie im lpulConnection-Parameter zurückgegeben wird. Dienstanbieter können das Objekt der Empfehlungssenke freigeben, bevor die Registrierung abgebrochen wird, aber sie dürfen die Verbindungsnummer erst freigeben, wenn Unadvise aufgerufen wurde.
Nachdem ein Aufruf von Advise erfolgreich war und unadvise aufgerufen wurde, müssen Clients darauf vorbereitet werden, dass das Beratungssenkenobjekt freigegeben wird. Ein Client sollte daher sein Beratungssenkenobjekt nach der Rückgabe von Advise freigeben, es sei denn, er verfügt über eine bestimmte langfristige Verwendung.
Aufgrund des asynchronen Benachrichtigungsverhaltens können Implementierungen, die Tabellenspalteneinstellungen ändern, Benachrichtigungen mit Informationen empfangen, die in einer vorherigen Spaltenreihenfolge organisiert sind. Für instance kann eine Tabellenzeile für eine Nachricht zurückgegeben werden, die gerade aus dem Container gelöscht wurde. Eine solche Benachrichtigung wird gesendet, wenn die Spalteneinstellung geändert und Informationen dazu gesendet wurden, aber die Benachrichtigungstabellenansicht noch nicht mit diesen Informationen aktualisiert wurde.
Weitere Informationen zum Benachrichtigungsprozess finden Sie unter Ereignisbenachrichtigung in MAPI. Spezifische Informationen zu Tabellenbenachrichtigungen finden Sie unter Informationen zu Tabellenbenachrichtigungen. Informationen zur Verwendung der IMAPISupport-Methoden zur Unterstützung von Benachrichtigungen finden Sie unter Unterstützen von Ereignisbenachrichtigungen.
MFCMAPI-Referenz
Einen MFCMAP-Beispielcode finden Sie in der folgenden Tabelle.
Datei | Funktion | Kommentar |
---|---|---|
ContentsTableListCtrl.cpp |
CContestTableListCtrl::NotificationOn |
MFCMAPI verwendet die IMAPITable::Advise-Methode , um sich für Benachrichtigungen zu registrieren, damit die Tabellenansicht auf dem neuesten Stand bleibt. |
Siehe auch
HrThisThreadAdviseSink
IMAPIAdviseSink::OnNotify
IMAPITable::Unadvise
TABLE_NOTIFICATION
IMAPITable : IUnknownMFCMAPI als Codebeispiel