Partager via


TABLE_NOTIFICATION

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_CHANGED events 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_ERROR event, 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_RELOAD when 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::Restrict method 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; propPrior is set to NULL.
    • TABLE_ROW_MODIFIED
      A row has been changed; row contains the affected properties for the row. Multiple TABLE_ROW_MODIFIED events 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 propPrior is PR_NULL.

    • TABLE_SETCOL_DONE
      A column setting operation initiated with an IMAPITable::SetColumns method call has completed.
    • TABLE_SORT_DONE
      A table sorting operation initiated with an IMAPITable::SortTable method call has completed.
  • hResult
    HRESULT value for the error that has occurred, if ulTableEvent is set to TABLE_ERROR.
  • propIndex
    SPropValue structure for the property of the affected row.
  • propPrior
    SPropValue structure for the property of the row preceding the affected one. If the affected row is the first row in the table, propPrior must be set to PR_NULL and not zero. Zero is not a valid property tag.
  • row
    SRow structure 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 SRow structure is set to zero and lpProps is set to NULL.

    Because this SRow structure 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_NOTIFICATION structure is one of the members of the union of structures included in the info member of the NOTIFICATION structure. The info member includes a TABLE_NOTIFICATION structure when the ulEventType member 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_ERROR event when there is an error in an IMAPITable::SortTable, IMAPITable::Restrict, or IMAPITable::SetColumns method 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

Reference

IMAPITable::Restrict
IMAPITable::SetColumns
MAPI Structures
NOTIFICATION
SPropValue
SRow

Other Resources

Messaging