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 を 0 ではなく PR_NULL に設定する必要があります。 0 は有効なプロパティ タグではありません。
row
影響を受ける行を記述する SRow 構造体。 この構造体は、すべてのテーブル通知イベントに対して入力されます。 行データを渡さないテーブル通知イベントの場合、SRow 構造体の cValues メンバーは 0 に設定され、lpProps メンバーは NULL に設定されます。 この SRow 構造体は読み取り専用であるためです。変更する場合は、クライアントがコピーを作成する必要があります。 ScDupPropset 関数を使用してコピーを作成できます。
注釈
TABLE_NOTIFICATION構造体は、NOTIFICATION 構造体の情報メンバーに含まれる構造体の和集合のメンバーの 1 つです。 情報メンバーには、構造体の ulEventType メンバーが fnevTableModified に設定されている場合、TABLE_NOTIFICATION構造体が含まれます。
行メンバーの列の順序と種類は、通知が生成された時点で有効だった順序と型を反映します。 通知が生成された時点の順序と種類は、通知が配信されたときと必ずしも同じとは限りません。
通知の詳細については、次の表で説明するトピックを参照してください。
トピック | 説明 |
---|---|
MAPI でのイベント通知 |
通知イベントと通知イベントの一般的な概要。 |
通知の処理 |
クライアントが通知を処理する方法について説明します。 |
イベント通知のサポート |
サービス プロバイダーが IMAPISupport メソッドを使用して通知を生成する方法について説明します。 |
テーブル通知は非同期であるため、クライアントは別の方法で追加された行について学習した後、追加された行の通知を受け取ることができます。 IMAPITable::Sort、IMAPITable::Restrict、または IMAPITable::SetColumns メソッドでエラーが発生した場合、または基になるプロセスが新しい行や変更された行でテーブルを更新しようとすると、TABLE_ERROR イベントを受け取る可能性があります。