TABLE_NOTIFICATION
適用於:Outlook 2013 |Outlook 2016
描述數據表中受到某種事件類型影響的數據列,例如變更或錯誤。 這會導致產生數據表通知。
屬性 | 值 |
---|---|
標頭檔: |
Mapidefs.h |
typedef struct _TABLE_NOTIFICATION
{
ULONG ulTableEvent;
HRESULT hResult;
SPropValue propIndex;
SPropValue propPrior;
SRow row;
} TABLE_NOTIFICATION;
成員
ulTableEvent
用來表示數據表事件類型的旗標位掩碼。 您可以設定下列旗標:
TABLE_CHANGED
概括指出數據表的相關內容已變更。 數據表的狀態與事件之前一樣。 這表示所有 PR_INSTANCE_KEY (PidTagInstanceKey) 屬性、書籤、目前位置和使用者介面選取專案仍然有效。 重新讀取數據表來處理此事件。 不想要實作豐富數據表通知的服務提供者會傳送TABLE_CHANGED事件,而不是更詳細的事件,以指出特定類型的變更。
TABLE_ERROR
通常在處理異步操作期間發生錯誤。 處理下列方法期間的錯誤可能會產生此事件:
收到TABLE_ERROR事件之後,客戶端無法依賴數據表內容的正確性。 此外,其他變更的暫止通知可能會遺失。 IMAPITable::GetLastError 方法可能不會提供關於錯誤的任何其他信息,因為它是在先前的某個時間點產生,不一定是從最後一個方法呼叫產生。
TABLE_RELOAD
應該重載數據表中的數據。 例如,當基礎數據儲存在資料庫中並取代資料庫時,服務提供者會傳送TABLE_RELOAD。 藉由假設數據表的相關信息仍然有效,並重新讀取數據表來處理此事件。 所有書籤、實例索引鍵、狀態和位置資訊都無效。
TABLE_RESTRICT_DONE
使用 IMAPITable::Restrict 方法呼叫起始的限制作業已完成。
TABLE_ROW_ADDED
新的數據列已新增至數據表,並已儲存對應的物件。 TABLE_ROW_ADDED事件會在呼叫 IMAPIProp::SaveChanges 方法之後產生。
TABLE_ROW_DELETED
數據列已從數據表中移除。 propPrior 成員設定為 NULL。
TABLE_ROW_MODIFIED
數據列已變更。 數據 列 成員包含數據列的受影響屬性。 多個TABLE_ROW_MODIFIED事件會以它們出現在數據表檢視中的順序傳送。
TABLE_ROW_MODIFIED事件會在對應對象的變更透過 IMAPIProp::SaveChanges 方法的呼叫認可之後傳送。 如果修改過的數據列現在是數據表中的第一個數據列, 則 propPrior 成員中的屬性標記值會 PR_NULL (PidTagNull) 。
TABLE_SETCOL_DONE
已完成使用 IMAPITable::SetColumns 方法呼叫所起始的數據行設定作業。
TABLE_SORT_DONE
使用 IMAPITable::SortTable 方法呼叫起始的數據表排序作業已完成。
hResult
如果 ulTableEvent 成員設定為 TABLE_ERROR,則為已發生錯誤的 HRESULT 值。
propIndex
受影響數據列PR_INSTANCE_KEY屬性的 SPropValue 結構。
propPrior
受影響數據列之前PR_INSTANCE_KEY屬性的 SPropValue 結構。 如果受影響的數據列是數據表中的第一個數據列, 則 propPrior 必須設定為 PR_NULL 而非零。 零不是有效的屬性標記。
行
描述受影響數據列的 SRow 結構。 所有數據表通知事件都會填入此結構。 對於未傳遞數據列數據的數據表通知事件,SRow 結構的 cValues 成員會設定為零,而 lpProps 成員會設定為 NULL。 因為這個 SRow 結構是唯讀的;如果用戶端想要進行修改,則必須製作其複本。 ScDupPropset 函式可用來複製。
註解
TABLE_NOTIFICATION結構是 NOTIFICATION 結構的信息成員中所包含之結構聯集的成員之一。 當 結構的ulEventType成員設定為 fnevTableModified 時,信息成員會包含TABLE_NOTIFICATION結構。
數據列成員中數據行的順序和類型,會反映產生通知時生效的順序和類型。 產生通知時的順序和類型不一定與傳遞通知時相同。
如需通知的詳細資訊,請參閱下表所述的主題。
主題 | 描述 |
---|---|
MAPI 中的事件通知 |
通知和通知事件的一般概觀。 |
處理通知 |
討論用戶端應如何處理通知。 |
支援事件通知 |
討論服務提供者如何使用 IMAPISupport 方法來產生通知。 |
因為數據表通知是異步的,所以用戶端可以在透過另一種方法瞭解新增數據列之後,收到已新增數據列的通知。 當 IMAPITable::Sort、IMAPITable::Restrict 或 IMAPITable::SetColumns 方法發生錯誤時,或基礎進程嘗試使用新的或修改過的數據列來更新數據表時,可能會收到TABLE_ERROR事件。