Win32 API 日本語リファレンス
ホームSystem.AddressBook › ITableData

ITableData

COM
継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

テーブルを操作するためのユーティリティメソッドを提供します。MAPI は、サービスプロバイダーがテーブルの保守を行うのを支援するため、ITableData を実装したオブジェクトを提供します。

解説(Remarks)

適用対象: Outlook 2013 | Outlook 2016

テーブルを操作するためのユーティリティメソッドを提供します。MAPI は、サービスプロバイダーがテーブルの保守を行うのを支援するため、テーブルデータオブジェクト、すなわち ITableData を実装したオブジェクトを提供します。テーブルデータオブジェクトを取得するには、サービスプロバイダーは CreateTable 関数を呼び出します。

プロパティ
ヘッダーファイル:
Mapiutil.h
公開元:
テーブルデータオブジェクト
実装元:
MAPI
呼び出し元:
サービスプロバイダー
インターフェイス識別子:
IID_IMAPITableData
ポインター型:
LPTABLEDATA

ITableData の MAPI 実装は、すべてのデータおよび関連する制約をメモリ内に保持することでテーブルを操作するため、非常に大きなテーブルの使用には適していません。大きな制約や、カテゴリ分けのような複雑な操作はサポートされません。

テーブルデータオブジェクトは、インデックス列、すなわち各行に一意な値を持つことが保証されているプロパティを使用して行を識別します。ほとんどのサービスプロバイダーは、インデックス列として PR_INSTANCE_KEY (PidTagInstanceKey) プロパティを使用します。複数の値を持つプロパティはインデックス列として使用できません。

テーブルデータオブジェクトは、変更や削除の影響を受ける行の数に関係なく、単一の通知を生成します。操作の対象となる行が存在しない場合は、行が追加されます。

メソッド 9

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT HrGetView(SSortOrderSet* lpSSortOrderSet, CALLERRELEASE* lpfCallerRelease, DWORD ulCallerData, IMAPITable** lppMAPITable)
lpSSortOrderSetSSortOrderSet*inoutビューに適用するソート順を示す SSortOrderSet へのポインタである。
lpfCallerReleaseCALLERRELEASE*inoutビュー解放時に呼び出されるコールバック関数 CALLERRELEASE へのポインタである。
ulCallerDataDWORDinコールバックに渡される呼び出し側定義のデータを指定する。
lppMAPITableIMAPITable**out作成されたテーブルビュー IMAPITable を受け取るポインタである。
vtbl 4 HRESULT HrModifyRow(SRow* param0)
param0SRow*inout追加または更新する行データ SRow へのポインタである。
vtbl 5 HRESULT HrDeleteRow(SPropValue* lpSPropValue)
lpSPropValueSPropValue*inout削除する行を識別するキープロパティ値 SPropValue へのポインタである。
vtbl 6 HRESULT HrQueryRow(SPropValue* lpsPropValue, SRow** lppSRow, DWORD* lpuliRow)
lpsPropValueSPropValue*inout取得する行を識別するキープロパティ値 SPropValue へのポインタである。
lppSRowSRow**inout見つかった行データ SRow を受け取るポインタである。
lpuliRowDWORD*inout見つかった行のインデックスを受け取る変数へのポインタである。
vtbl 7 HRESULT HrEnumRow(DWORD ulRowNumber, SRow** lppSRow)
ulRowNumberDWORDin取得する行の 0 から始まるインデックスを指定する。
lppSRowSRow**inout指定インデックスの行データ SRow を受け取るポインタである。
vtbl 8 HRESULT HrNotify(DWORD ulFlags, DWORD cValues, SPropValue* lpSPropValue)
ulFlagsDWORDin通知動作を制御するフラグを指定する。
cValuesDWORDinlpSPropValue 配列に含まれるプロパティ値の個数を指定する。
lpSPropValueSPropValue*inout通知に含めるプロパティ値の配列 SPropValue へのポインタである。
vtbl 9 HRESULT HrInsertRow(DWORD uliRow, SRow* lpSRow)
uliRowDWORDin行を挿入する位置の 0 から始まるインデックスを指定する。
lpSRowSRow*inout挿入する行データ SRow へのポインタである。
vtbl 10 HRESULT HrModifyRows(DWORD ulFlags, SRowSet* lpSRowSet)
ulFlagsDWORDin行の追加・更新動作を制御するフラグを指定する。
lpSRowSetSRowSet*inout追加または更新する複数行のデータ SRowSet へのポインタである。
vtbl 11 HRESULT HrDeleteRows(DWORD ulFlags, SRowSet* lprowsetToDelete, DWORD* cRowsDeleted)
ulFlagsDWORDin行削除動作を制御するフラグを指定する。
lprowsetToDeleteSRowSet*inout削除する複数行を識別する行集合 SRowSet へのポインタである。
cRowsDeletedDWORD*inout実際に削除された行数を受け取る変数へのポインタである。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ITableData "{}"
#usecom global ITableData IID_ITableData "{}"
#comfunc global ITableData_HrGetView     3 var,sptr,int,sptr
#comfunc global ITableData_HrModifyRow   4 var
#comfunc global ITableData_HrDeleteRow   5 var
#comfunc global ITableData_HrQueryRow    6 var,var,var
#comfunc global ITableData_HrEnumRow     7 int,var
#comfunc global ITableData_HrNotify      8 int,int,var
#comfunc global ITableData_HrInsertRow   9 int,var
#comfunc global ITableData_HrModifyRows  10 int,var
#comfunc global ITableData_HrDeleteRows  11 int,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。