TABLE_NOTIFICATION

适用于:Outlook 2013 | Outlook 2016

描述表中受某种类型事件(例如更改或错误)影响的行。 这会导致生成表通知。

属性
标头文件:
Mapidefs.h
typedef struct _TABLE_NOTIFICATION
{
  ULONG ulTableEvent;
  HRESULT hResult;
  SPropValue propIndex;
  SPropValue propPrior;
  SRow row;
} TABLE_NOTIFICATION;

Members

ulTableEvent

用于表示表事件类型的标志的位掩码。 可以设置以下标志:

TABLE_CHANGED

在高级别上指示有关表的内容已更改。 表的状态与事件之前的状态相同。 这意味着所有 (PidTagInstanceKey) 属性、书签、当前定位和用户界面选择的PR_INSTANCE_KEY仍然有效。 通过重新读取表来处理此事件。 不希望实现富表通知的服务提供商发送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事件。

另请参阅