IChangeConflict
COM公式ドキュメント
2 つの項目間の競合を表します。
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
宛先プロバイダーから変更メタデータを取得します。
| ppConflictingChange | ISyncChange** | out | 宛先プロバイダーからの変更メタデータを返します。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ポインターが無効です。 | |
|
宛先プロバイダーからの変更が存在しません。 |
ソースプロバイダーから変更メタデータを取得します。
| ppConflictingChange | ISyncChange** | out | ソースプロバイダーからの変更メタデータを返します。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ポインターが無効です。 | |
|
ソースプロバイダーからの変更が存在しません。 |
宛先レプリカから変更項目の項目データを取得するために使用できるオブジェクトを取得します。
| ppConflictingData | IUnknown** | out | 宛先レプリカから変更項目の項目データを取得するために使用できるオブジェクトを返します。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ポインターが無効です。 | |
|
内部エラーが発生しました。 |
|
プロバイダーが変更のデータを読み込めません。 |
解説(Remarks)
ppConflictingData で返されるオブジェクトは、ISynchronousDataRetriever オブジェクト、またはプロバイダー固有のオブジェクトのいずれかです。
ソースレプリカから変更項目の項目データを取得するために使用できるオブジェクトを取得します。
| ppConflictingData | IUnknown** | out | ソースレプリカから変更項目の項目データを取得するために使用できるオブジェクトを返します。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ポインターが無効です。 | |
|
内部エラーが発生しました。 |
|
プロバイダーが変更のデータを読み込めません。 |
解説(Remarks)
ppConflictingData で返されるオブジェクトは、ISynchronousDataRetriever オブジェクト、またはプロバイダー固有のオブジェクトのいずれかです。
この競合に対する競合解決アクションを取得します。
| pResolveAction | SYNC_RESOLVE_ACTION* | inout | この競合に対する競合解決アクションを返します。 |
戻り値
この競合に対する競合解決アクションを設定します。
| resolveAction | SYNC_RESOLVE_ACTION | in | この競合に対する競合解決アクション。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ポインターが無効です。 | |
|
内部エラーが発生しました。 |
解説(Remarks)
ISyncCallback::OnConflict のイベントハンドラー内でこのアクションを設定することにより、イベントハンドラーは変更適用側 (change applier) が競合をどのように処理するかを指定します。
競合している変更単位 (change unit) の変更に対する競合解決アクションを取得します。
| pChangeUnit | ISyncChangeUnit* | in | 競合解決アクションを取得する対象の変更単位。 |
| pResolveAction | SYNC_RESOLVE_ACTION* | inout | pChangeUnit に指定されている競合解決アクション。 |
戻り値
競合している変更単位 (change unit) の変更に対する競合解決アクションを設定します。
| pChangeUnit | ISyncChangeUnit* | in | 競合解決アクションを設定する対象の変更単位。 |
| resolveAction | SYNC_RESOLVE_ACTION | in | pChangeUnit に設定する競合解決アクション。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ポインターが無効です。 | |
|
競合が更新と削除の競合である場合、または競合が存在しない場合。 |
解説(Remarks)
更新と削除の競合に対して変更単位単位で競合解決アクションを設定することはできない点に注意してください。この種類の競合は項目レベルで解決する必要があるためです。
ISyncCallback::OnConflict のイベントハンドラー内でこのアクションを設定することにより、イベントハンドラーは変更適用側 (change applier) が競合をどのように処理するかを指定します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IChangeConflict "{014EBF97-9F20-4F7A-BDD4-25979C77C002}" #usecom global IChangeConflict IID_IChangeConflict "{}" #comfunc global IChangeConflict_GetDestinationProviderConflictingChange 3 sptr #comfunc global IChangeConflict_GetSourceProviderConflictingChange 4 sptr #comfunc global IChangeConflict_GetDestinationProviderConflictingData 5 sptr #comfunc global IChangeConflict_GetSourceProviderConflictingData 6 sptr #comfunc global IChangeConflict_GetResolveActionForChange 7 var #comfunc global IChangeConflict_SetResolveActionForChange 8 int #comfunc global IChangeConflict_GetResolveActionForChangeUnit 9 sptr,var #comfunc global IChangeConflict_SetResolveActionForChangeUnit 10 sptr,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IChangeConflict "{014EBF97-9F20-4F7A-BDD4-25979C77C002}" #usecom global IChangeConflict IID_IChangeConflict "{}" #comfunc global IChangeConflict_GetDestinationProviderConflictingChange 3 sptr #comfunc global IChangeConflict_GetSourceProviderConflictingChange 4 sptr #comfunc global IChangeConflict_GetDestinationProviderConflictingData 5 sptr #comfunc global IChangeConflict_GetSourceProviderConflictingData 6 sptr #comfunc global IChangeConflict_GetResolveActionForChange 7 sptr #comfunc global IChangeConflict_SetResolveActionForChange 8 int #comfunc global IChangeConflict_GetResolveActionForChangeUnit 9 sptr,sptr #comfunc global IChangeConflict_SetResolveActionForChangeUnit 10 sptr,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。