共用方式為


IAddrBook::Advise

適用於:Outlook 2013 |Outlook 2016

註冊客戶端或服務提供者,以接收通訊簿中一或多個專案變更的相關通知。

HRESULT Advise(
  ULONG cbEntryID,
  LPENTRYID lpEntryID,
  ULONG ulEventMask,
  LPMAPIADVISESINK lpAdviseSink,
  ULONG_PTR lpulConnection
);

參數

cbEntryID

[in] lpEntryID 參數所指向之專案標識碼中的位元組計數。

lpEntryID

[in]通訊簿容器、傳訊使用者或通訊組清單的專案標識碼指標,當 ulEventMask 參數中所述的類型或類型發生變更時,將會產生通知。

ulEventMask

[in]呼叫端註冊要接收的一或多個通知事件。 每個事件都會與特定通知結構相關聯,其中包含所發生變更的相關信息。 下表列出 ulEventMask 的有效值及其對應的結構。

通知事件 對應的結構
fnevCriticalError
ERROR_NOTIFICATION
fnevObjectCreated
OBJECT_NOTIFICATION
fnevObjectDeleted
OBJECT_NOTIFICATION
fnevObjectModified
OBJECT_NOTIFICATION
fnevObjectCopied
OBJECT_NOTIFICATION
fnevObjectMoved
OBJECT_NOTIFICATION
fnevTableModified
TABLE_NOTIFICATION

lpAdviseSink

[in]當已要求通知的事件發生時,所要呼叫之建議接收物件的指標。

lpulConnection

[out]代表通知註冊之非零連接編號的指標。

傳回值

S_OK

通知註冊成功。

MAPI_E_INVALID_ENTRYID

負責 在 lpEntryID 中傳遞之專案標識碼的通訊簿提供者無法註冊對應專案的通知。

MAPI_E_NO_SUPPORT

通訊錄提供者不支援通知,而通訊簿提供者負責由 lpEntryID 參數中傳遞的專案識別碼所識別的物件。

MAPI_E_UNKNOWN_ENTRYID

在 lpEntryID 中傳遞的專案識別碼無法由配置檔中的任何通訊錄提供者處理。

註解

用戶端和服務提供者會呼叫 Advise 方法,以在通訊錄專案上註冊特定類型或類型的通知。 通知的類型會以以 ulEventMask 參數傳入的事件遮罩表示。

MAPI 會將這個 「建議 」呼叫轉寄給負責該專案的通訊錄提供者,如 lpEntryID 參數中的專案標識碼所指示。 通訊錄提供者會處理註冊本身,或呼叫支援方法 IMAPISupport::Subscribe,提示 MAPI 註冊呼叫端。 會傳回非零的連接編號來表示成功的註冊。

每當變更通知註冊所指示的類型專案時,通訊簿提供者就會針對 lpAdviseSink 參數中指定的建議接收物件呼叫 IMAPIAdviseSink::OnNotify 方法。 OnNotify 方法包含NOTIFICATION 結構作為輸入參數,其中包含用來描述事件的數據。

視通訊簿提供者而定,在變更已註冊的對象之後或稍後,可以立即呼叫 OnNotify 。 在支援多個執行線程的系統上, 對 OnNotify 的呼叫可能會發生在任何線程上。 用戶端可以呼叫 HrThisThreadAdviseSink 函式來建立 傳遞給 Advise 的建議接收物件,以要求這些通知發生在特定線程上。

由於通訊錄提供者可以在成功完成 建議呼叫之後 ,以及在 IAddrBook::Unadvise 呼叫取消通知之前,隨時釋放用戶端傳入的建議接收物件,因此客戶端應該在 建議 傳回時釋放其建議接收物件。

如需通知程式的詳細資訊,請參閱 MAPI 中的事件通知

另請參閱

HrThisThreadAdviseSink

IAddrBook::Unadvise

IMAPIAdviseSink::OnNotify

通知

IAddrBook:IMAPIProp