ISyncMgrConflict
COM公式ドキュメント
競合ストアから取得した競合に関する情報を提供し、その競合を解決できるようにするメソッドを公開します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
プロパティキーを指定して、競合のプロパティを取得します。
| propkey | PROPERTYKEY* | in | 取得するプロパティのプロパティキーへの参照です。ここには任意のプロパティキーを指定でき、以下の値を含みますが、これらに限定されません。 PKEY_ItemNameDisplay競合の名前。 PKEY_Sync_ConflictDescription競合の概要。 PKEY_Sync_HandlerID競合を作成した同期ハンドラー。 PKEY_Sync_ItemID競合を作成した同期アイテム。 PKEY_DateModified競合が検出された時刻。 |
| ppropvar | PROPVARIANT* | out | このメソッドが返るとき、要求されたプロパティを格納する PROPVARIANT 構造体が格納されます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
返されるプロパティは競合自体のプロパティであり、競合している IShellItems のプロパティではありません。
propkey で参照される PROPERTYKEY がプロパティストアに存在しない場合、このメソッドは S_OK を返し、ppropvar が指す構造体の vt メンバーは VT_EMPTY に設定されます。
競合ストア内の競合を識別する情報を取得します。
| pConflictIdInfo | SYNCMGR_CONFLICT_ID_INFO* | out | 競合 ID 情報構造体へのポインターです。SYNCMGR_CONFLICT_ID_INFO を参照してください。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ID ブロブのサイズは短く保つ必要があります。これは、ID が競合のアイテム識別子リストへのポインター (PIDL) または解析名の内部に埋め込まれる場合があるためです。
競合アイテムの配列を取得します。
| ppArray | ISyncMgrConflictItems** | out | ISyncMgrConflictItems 配列へのポインターのアドレスです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
独自の同期ハンドラーを使用して競合を解決し、UI を制御します。
| pResolveInfo | ISyncMgrConflictResolveInfo* | in | ISyncMgrConflictResolveInfo へのポインターです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
競合が解決された後、ストアは UpdateConflicts を呼び出して、競合が削除されたことを同期センターに通知する必要があることに注意してください。ストアが変更を同期センターに通知するまで、競合は依然として存在すると見なされます。ユーザーが選択できる解決方法の選択肢は、ISyncMgrConflictResolveInfo を通じて利用できます。
競合の解決ハンドラーを取得します。
| riid | GUID* | in | 解決ハンドラーの ID への参照です。 |
| ppvResolutionHandler | void** | out | このメソッドが返るとき、riid で要求されたインターフェイスポインターが格納されます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISyncMgrConflict "{9C204249-C443-4BA4-85ED-C972681DB137}" #usecom global ISyncMgrConflict IID_ISyncMgrConflict "{}" #comfunc global ISyncMgrConflict_GetProperty 3 var,var #comfunc global ISyncMgrConflict_GetConflictIdInfo 4 var #comfunc global ISyncMgrConflict_GetItemsArray 5 sptr #comfunc global ISyncMgrConflict_Resolve 6 sptr #comfunc global ISyncMgrConflict_GetResolutionHandler 7 var,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ISyncMgrConflict "{9C204249-C443-4BA4-85ED-C972681DB137}" #usecom global ISyncMgrConflict IID_ISyncMgrConflict "{}" #comfunc global ISyncMgrConflict_GetProperty 3 sptr,sptr #comfunc global ISyncMgrConflict_GetConflictIdInfo 4 sptr #comfunc global ISyncMgrConflict_GetItemsArray 5 sptr #comfunc global ISyncMgrConflict_Resolve 6 sptr #comfunc global ISyncMgrConflict_GetResolutionHandler 7 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。