Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
4/8/2010

The TABLE_NOTIFICATION structure describes a row in a table that has been affected by some type of event, such as a change or an error, causing a table notification to be generated.

Syntax

struct {
  ULONG 
ulTableEvent;
  
HRESULT 
hResult;
  
SPropValue 
propIndex;
  
SPropValue 
propPrior;
  
SRow 
row;
} TABLE_NOTIFICATION;

Members

ulTableEvent

Bitmask of flags used to represent the table event type. The following flags can be set:

TABLE_CHANGED

Indicates at a high level that something about the table has changed. The table state is as it was before the event. Handle this event by re-reading the entire table. Service providers that do not want to implement "rich" table notifications simply send TABLE_CHANGEDevents rather than more detailed events to indicate a particular type of change.

TABLE_ERROR

An error has occurred, usually during the processing of an asynchronous operation. Errors during the processing of the following methods can generate the following:

After receiving a TABLE_ERRORevent, a client cannot rely on the accuracy of the table contents. Also, pending notifications about other changes might be lost.

TABLE_RELOAD

The data in the table should be reloaded. For example, service providers send TABLE_RELOADwhen the underlying data is stored in a database and the database is replaced.

Handle this event by assuming that nothing about the table is still valid and by re-reading the entire table. All bookmarks, instance keys, status, and positioning information are not valid.

TABLE_RESTRICT_DONE

A restriction operation initiated with an IMAPITable::Restrictmethod call has completed.

TABLE_ROW_ADDED

A new row has been added to the table.

TABLE_ROW_DELETED

A row has been removed from the table; propPrioris set to NULL.

TABLE_ROW_MODIFIED

A row has been changed; rowcontains the affected properties for the row. Multiple TABLE_ROW_MODIFIEDevents are sent in the order that they appear in the table view.

If the modified row is now the first row in the table, the value of the property tag in propPrioris PR_NULL.

TABLE_SETCOL_DONE

A column setting operation initiated with an IMAPITable::SetColumnsmethod call has completed.

TABLE_SORT_DONE

A table sorting operation initiated with an IMAPITable::SortTablemethod call has completed.

hResult

HRESULTvalue for the error that has occurred, if ulTableEventis set to TABLE_ERROR.

propIndex

SPropValuestructure for the property of the affected row.

propPrior

SPropValuestructure for the property of the row preceding the affected one. If the affected row is the first row in the table, propPriormust be set to PR_NULLand not zero. Zero is not a valid property tag.

row

SRowstructure describing the affected row. This structure is filled for all table notification events. For table notification events that do not pass row data, the cValues member of the SRowstructure is set to zero and lpProps is set to NULL.

Because this SRowstructure is read-only, clients must make a copy of it if they want to make modifications.

Remarks

This type is supported, but the notification that uses it ( fnevTableNotification) is never sent by MAPI.

The TABLE_NOTIFICATIONstructure is one of the members of the union of structures included in the infomember of the NOTIFICATIONstructure. The infomember includes a TABLE_NOTIFICATIONstructure when the ulEventTypemember of the structure is set to fnevTableModified.

The order and type of columns in the row member reflect the order and type that was in effect at the time that the notification was generated, which is not necessarily the same as when the notification was delivered.

Because table notifications are asynchronous, it is possible to receive notification of an added row after learning about the addition through another means. It is possible to receive a TABLE_ERRORevent when there is an error in an IMAPITable::SortTable, IMAPITable::Restrict, or IMAPITable::SetColumnsmethod or when an underlying process attempts to update a table with, for example, new or modified rows.

Requirements

Header mapidefs.h
Windows Embedded CE Windows CE 3.0 and later
Windows Mobile Pocket PC 2002 and later, Smartphone 2002 and later

See Also