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 中的事件通知。