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

IChangeConflict

COM
IID014ebf97-9f20-4f7a-bdd4-25979c77c002継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

2 つの項目間の競合を表します。

メソッド 8

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

vtbl 3 HRESULT GetDestinationProviderConflictingChange(ISyncChange** ppConflictingChange)

宛先プロバイダーから変更メタデータを取得します。

ppConflictingChangeISyncChange**out宛先プロバイダーからの変更メタデータを返します。

戻り値

戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_INTERNAL_ERROR
宛先プロバイダーからの変更が存在しません。
vtbl 4 HRESULT GetSourceProviderConflictingChange(ISyncChange** ppConflictingChange)

ソースプロバイダーから変更メタデータを取得します。

ppConflictingChangeISyncChange**outソースプロバイダーからの変更メタデータを返します。

戻り値

戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_INTERNAL_ERROR
ソースプロバイダーからの変更が存在しません。
vtbl 5 HRESULT GetDestinationProviderConflictingData(IUnknown** ppConflictingData)

宛先レプリカから変更項目の項目データを取得するために使用できるオブジェクトを取得します。

ppConflictingDataIUnknown**out宛先レプリカから変更項目の項目データを取得するために使用できるオブジェクトを返します。

戻り値

戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_INTERNAL_ERROR
内部エラーが発生しました。
プロバイダー固有のエラーコード。
プロバイダーが変更のデータを読み込めません。

解説(Remarks)

ppConflictingData で返されるオブジェクトは、ISynchronousDataRetriever オブジェクト、またはプロバイダー固有のオブジェクトのいずれかです。

vtbl 6 HRESULT GetSourceProviderConflictingData(IUnknown** ppConflictingData)

ソースレプリカから変更項目の項目データを取得するために使用できるオブジェクトを取得します。

ppConflictingDataIUnknown**outソースレプリカから変更項目の項目データを取得するために使用できるオブジェクトを返します。

戻り値

戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_INTERNAL_ERROR
内部エラーが発生しました。
プロバイダー固有のエラーコード。
プロバイダーが変更のデータを読み込めません。

解説(Remarks)

ppConflictingData で返されるオブジェクトは、ISynchronousDataRetriever オブジェクト、またはプロバイダー固有のオブジェクトのいずれかです。

vtbl 7 HRESULT GetResolveActionForChange(SYNC_RESOLVE_ACTION* pResolveAction)

この競合に対する競合解決アクションを取得します。

pResolveActionSYNC_RESOLVE_ACTION*inoutこの競合に対する競合解決アクションを返します。

戻り値

戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
vtbl 8 HRESULT SetResolveActionForChange(SYNC_RESOLVE_ACTION resolveAction)

この競合に対する競合解決アクションを設定します。

resolveActionSYNC_RESOLVE_ACTIONinこの競合に対する競合解決アクション。

戻り値

戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_INTERNAL_ERROR
内部エラーが発生しました。

解説(Remarks)

ISyncCallback::OnConflict のイベントハンドラー内でこのアクションを設定することにより、イベントハンドラーは変更適用側 (change applier) が競合をどのように処理するかを指定します。

vtbl 9 HRESULT GetResolveActionForChangeUnit(ISyncChangeUnit* pChangeUnit, SYNC_RESOLVE_ACTION* pResolveAction)

競合している変更単位 (change unit) の変更に対する競合解決アクションを取得します。

pChangeUnitISyncChangeUnit*in競合解決アクションを取得する対象の変更単位。
pResolveActionSYNC_RESOLVE_ACTION*inoutpChangeUnit に指定されている競合解決アクション。

戻り値

戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
vtbl 10 HRESULT SetResolveActionForChangeUnit(ISyncChangeUnit* pChangeUnit, SYNC_RESOLVE_ACTION resolveAction)

競合している変更単位 (change unit) の変更に対する競合解決アクションを設定します。

pChangeUnitISyncChangeUnit*in競合解決アクションを設定する対象の変更単位。
resolveActionSYNC_RESOLVE_ACTIONinpChangeUnit に設定する競合解決アクション。

戻り値

戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_INTERNAL_ERROR
競合が更新と削除の競合である場合、または競合が存在しない場合。

解説(Remarks)

更新と削除の競合に対して変更単位単位で競合解決アクションを設定することはできない点に注意してください。この種類の競合は項目レベルで解決する必要があるためです。

ISyncCallback::OnConflict のイベントハンドラー内でこのアクションを設定することにより、イベントハンドラーは変更適用側 (change applier) が競合をどのように処理するかを指定します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。