ISyncMgrConflictStore
COM公式ドキュメント
ハンドラーが競合フォルダーに表示される競合を提供できるようにするメソッドを公開します。
解説(Remarks)
競合は、同期選択セットを完了するために選択を強制されるのではなく、必要に応じてユーザーが IShellItem のバージョンを選択できるようにするために提供されます。現在それらを競合フォルダーに表示しているという事実は、あくまで副次的なものです。
競合ストアは、その内容が変更されたときに同期センターに通知する必要があります。競合に影響を与えるメソッドが呼び出されたとき、競合に対して何かが起こると想定されることはありません。これは、競合が解決されるときも含まれます。
同期センターは、ISyncMgrHandler::GetCapabilities から返されるマスクに SYNCMGR_HCM_CONFLICT_STORE が含まれている場合、SYNCMGR_OBJECTID_ConflictStore を指定して ISyncMgrHandler::GetObject を呼び出すことで、ハンドラーに競合ストアを要求します。ハンドラーは、ISyncMgrSyncItem::GetCapabilities から返されるマスクに SYNCMGR_ICM_CONFLICT_STORE フラグを設定することで、項目でフィルター処理されたイベントストアを提供することもできます。
競合ストアに競合が追加された場合、競合フォルダーと競合数の両方を更新できるように、ハンドラー(または関連するコンポーネント)は ISyncMgrControl::UpdateConflicts を呼び出す必要があります。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定された同期ハンドラーおよび同期項目にスコープが限定された競合を列挙します。
| pszHandlerID | LPWSTR | in | 同期ハンドラー ID への Unicode 文字列としてのポインター。 |
| pszItemID | LPWSTR | in | 同期項目 ID への Unicode 文字列としてのポインター。 |
| ppEnum | IEnumSyncMgrConflict** | out | IEnumSyncMgrConflict インターフェイスポインターのアドレス。 |
戻り値
型: HRESULT
このメソッドが成功した場合、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
解説(Remarks)
同期ハンドラー、同期項目、またはパートナー名が NULL の場合、競合ストアはそのパラメーターを無視します。
IID で指定された特定の競合にバインドします。
| pConflictIdInfo | SYNCMGR_CONFLICT_ID_INFO* | in | SYNCMGR_CONFLICT_ID_INFO 構造体へのポインター。 |
| riid | GUID* | in | 目的の競合 IID への参照。 |
| ppv | void** | out | このメソッドが返るとき、riid で要求されたインターフェイスポインターが格納されます。 |
戻り値
型: HRESULT
このメソッドが成功した場合、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、競合フォルダーが、その項目識別子リスト (PIDL) へのポインターまたは解析名を指定して競合にバインドするときに使用されます。ID は、以前にストアから抽出された競合から取得されます。ISyncMgrConflict を参照してください。
競合 ID で指定された競合のセットをストアから削除します。
| rgConflictIdInfo | SYNCMGR_CONFLICT_ID_INFO* | in | SYNCMGR_CONFLICT_ID_INFO 構造体へのポインター。 |
| cConflicts | DWORD | in | 競合セット。 |
戻り値
型: HRESULT
このメソッドが成功した場合、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
解説(Remarks)
競合は、ユーザーが競合フォルダー内の競合を選択して削除することを選んだときに削除されます。
ストア内の競合の数を取得します。
| pszHandlerID | LPWSTR | in | 同期ハンドラー ID への Unicode 文字列としてのポインター。 |
| pszItemID | LPWSTR | in | 同期項目 ID への Unicode 文字列としてのポインター。 |
| pnConflicts | DWORD* | out | このメソッドが返るとき、競合数が格納されます。 |
戻り値
型: HRESULT
このメソッドが成功した場合、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISyncMgrConflictStore "{CF8FC579-C396-4774-85F1-D908A831156E}" #usecom global ISyncMgrConflictStore IID_ISyncMgrConflictStore "{}" #comfunc global ISyncMgrConflictStore_EnumConflicts 3 wstr,wstr,sptr #comfunc global ISyncMgrConflictStore_BindToConflict 4 var,var,sptr #comfunc global ISyncMgrConflictStore_RemoveConflicts 5 var,int #comfunc global ISyncMgrConflictStore_GetCount 6 wstr,wstr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ISyncMgrConflictStore "{CF8FC579-C396-4774-85F1-D908A831156E}" #usecom global ISyncMgrConflictStore IID_ISyncMgrConflictStore "{}" #comfunc global ISyncMgrConflictStore_EnumConflicts 3 wstr,wstr,sptr #comfunc global ISyncMgrConflictStore_BindToConflict 4 sptr,sptr,sptr #comfunc global ISyncMgrConflictStore_RemoveConflicts 5 sptr,int #comfunc global ISyncMgrConflictStore_GetCount 6 wstr,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。