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

ISyncProviderRegistration

COM
IIDcb45953b-7624-47bc-a472-eb8cac6b222e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

同期プロバイダーの登録を表します。

メソッド 16

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

vtbl 3 HRESULT CreateSyncProviderConfigUIRegistrationInstance(SyncProviderConfigUIConfiguration* pConfigUIConfig, ISyncProviderConfigUIInfo** ppConfigUIInfo)

同期プロバイダー構成 UI のインメモリインスタンスを作成します。

pConfigUIConfigSyncProviderConfigUIConfiguration*in構成 UI の登録情報を格納する SyncProviderConfigUIConfiguration 構造体です。
ppConfigUIInfoISyncProviderConfigUIInfo**out構成 UI の UX 要素と、必要な永続化構成情報を格納するために使用する ISyncProviderConfigUIInfo インターフェースへのポインターを返します。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_REGISTRATION_ALREADYREGISTERED
同じ CLSID とコンテンツタイプの組み合わせ、または同じ一意のインスタンス ID が、構成 UI として既に登録されています。

解説(Remarks)

ISyncProviderConfigUIInfo::Commit メソッドが呼び出されるまで、構成 UI はシステムに登録されません。このメソッドは、ISyncProviderConfigUIInfoIPropertyStore から継承したものです。

vtbl 4 HRESULT UnregisterSyncProviderConfigUI(GUID* pguidInstanceId)

指定した同期プロバイダー構成 UI の登録を解除し、登録ストアから削除します。

pguidInstanceIdGUID*in同期プロバイダー構成 UI の一意のインスタンス ID です。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_REGISTRATION_NOTREGISTERED
その CLSID とコンテンツタイプの組み合わせは、構成 UI として登録ストアに存在しません。
vtbl 5 HRESULT EnumerateSyncProviderConfigUIs(GUID* pguidContentType, DWORD dwSupportedArchitecture, IEnumSyncProviderConfigUIInfos** ppEnumSyncProviderConfigUIInfos)

指定した条件に一致する、登録済みのすべての ISyncProviderConfigUIInfo オブジェクトを列挙する IEnumSyncProviderConfigUIInfos 列挙インターフェースを返します。

pguidContentTypeGUID*inoptional指定するコンテンツタイプの LPCGUID です。このパラメーターが NULL の場合、すべてのコンテンツタイプが列挙されます。
dwSupportedArchitectureDWORDin

列挙するプロバイダーのアーキテクチャを表す、次のいずれかのフラグまたはその組み合わせです。SYNC_32_BIT_SUPPORTED を指定した場合は、32 ビットをサポートするプロバイダー、および 32 ビットと 64 ビットの両方をサポートするプロバイダーがすべて列挙されます。SYNC_32_BIT_SUPPORTED | SYNC_64_BIT_SUPPORTED を指定した場合は、32 ビットと 64 ビットの両方をサポートするプロバイダーのみが列挙されます。

このパラメーターに 0 を設定した場合は、すべてのアーキテクチャの同期プロバイダーが列挙されます。
ppEnumSyncProviderConfigUIInfosIEnumSyncProviderConfigUIInfos**outIEnumSyncProviderConfigUIInfos への参照です。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
E_OUTOFMEMORY
プロバイダーを登録するための十分なメモリがありませんでした。
vtbl 6 HRESULT CreateSyncProviderRegistrationInstance(SyncProviderConfiguration* pProviderConfiguration, ISyncProviderInfo** ppProviderInfo)

同期プロバイダーのインメモリインスタンスを作成します。

pProviderConfigurationSyncProviderConfiguration*in同期プロバイダーの登録情報を格納する SyncProviderConfiguration 構造体です。
ppProviderInfoISyncProviderInfo**out同期プロバイダーに関する情報を取得し、同期プロバイダーの構成を格納するために構成プロパティストアへアクセスするのに使用する ISyncProviderInfo インターフェースへのポインターを返します。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_REGISTRATION_ALREADYREGISTERED
同じ一意のインスタンス ID が、同期プロバイダーとして既に登録されています。

解説(Remarks)

ISyncProviderInfo::Commit メソッドが呼び出されるまで、同期プロバイダーはシステムに登録されません。このメソッドは、ISyncProviderInfoIPropertyStore から継承したものです。この例については、同期プロバイダーの登録の概要を参照してください。

vtbl 7 HRESULT UnregisterSyncProvider(GUID* pguidInstanceId)

指定した同期プロバイダーの登録を解除し、登録ストアから削除します。

pguidInstanceIdGUID*in同期プロバイダーの一意のインスタンス ID です。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_REGISTRATION_NOTREGISTERED
指定されたインスタンス ID を持つ同期プロバイダーは、現在登録されていません。
vtbl 8 HRESULT GetSyncProviderConfigUIInfoforProvider(GUID* pguidProviderInstanceId, ISyncProviderConfigUIInfo** ppProviderConfigUIInfo)

指定した同期プロバイダーのインスタンス ID に対応する ISyncProviderConfigUIInfo オブジェクトを返します。

pguidProviderInstanceIdGUID*in同期プロバイダーの一意のインスタンス ID です。
ppProviderConfigUIInfoISyncProviderConfigUIInfo**out構成 UI 情報オブジェクトです。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
S_FALSE
同期プロバイダーに構成 UI が指定されていませんでした。
E_POINTER
ポインターが無効です。
E_OUTOFMEMORY
同期プロバイダーを返すための十分なメモリがありませんでした。
SYNC_E_REGISTRATION_NOTREGISTERED
指定されたインスタンス ID が登録済みの同期プロバイダーと一致しないか、要求された構成 UI が登録されていません。

解説(Remarks)

このメソッドは、指定した同期プロバイダーの構成 UI プロパティを取得および設定し、ISyncProviderConfigUI インスタンスを取得するために使用します。

このメソッドは、構成 UI のインスタンス ID は不明だが同期プロバイダーのインスタンス ID が分かっている場合に、ISyncProviderConfigUIInfo オブジェクトを取得するために使用します。ISyncProviderConfigUI のインスタンス ID を使用して ISyncProviderConfigUIInfo オブジェクトへ直接アクセスする場合は、GetSyncProviderConfigUIFromInstanceId メソッドを使用してください。

vtbl 9 HRESULT EnumerateSyncProviders(GUID* pguidContentType, DWORD dwStateFlagsToFilterMask, DWORD dwStateFlagsToFilter, GUID* refProviderClsId, DWORD dwSupportedArchitecture, IEnumSyncProviderInfos** ppEnumSyncProviderInfos)

指定した条件に一致する、登録済みのすべての ISyncProviderInfo オブジェクトを列挙する IEnumSyncProviderInfos 列挙インターフェースを返します。

pguidContentTypeGUID*inoptional指定するコンテンツタイプの LPCGUID です。このパラメーターが NULL の場合、すべてのコンテンツタイプが列挙されます。
dwStateFlagsToFilterMaskDWORDin既存の状態をマスク (保持または除去) するために使用できる同期プロバイダーの状態フラグです。このパラメーターに 0 を設定した場合は、すべての同期プロバイダーの状態が列挙されます。フラグの一覧については、dwStateFlagsToFilter パラメーターの説明を参照してください。
dwStateFlagsToFilterDWORDin

同期プロバイダーの状態を表す、次のいずれかのフラグです。

  • SYNC_PROVIDER_STATE_ENABLED ((DWORD)0x00000001)プロバイダーは有効であり、同期に使用できます。
  • SYNC_PROVIDER_STATE_DIRTY ((DWORD)0x00000002)アクティブなプロバイダーが更新され、同期すべき新しいデータがあります。
このパラメーターに 0 を設定した場合は、すべての同期プロバイダーの状態が列挙されます。
refProviderClsIdGUID*in特定のプロバイダーの REFCLSID です。このパラメーターに CLSID_NULL を設定した場合は、すべてのプロバイダーが列挙されます。
dwSupportedArchitectureDWORDin

列挙するプロバイダーのアーキテクチャを表す、次のいずれかのフラグまたはその組み合わせです。SYNC_32_BIT_SUPPORTED を指定した場合は、32 ビットをサポートするプロバイダー、および 32 ビットと 64 ビットの両方をサポートするプロバイダーがすべて列挙されます。SYNC_32_BIT_SUPPORTED | SYNC_64_BIT_SUPPORTED を指定した場合は、32 ビットと 64 ビットの両方をサポートするプロバイダーのみが列挙されます。

このパラメーターに 0 を設定した場合は、すべてのアーキテクチャの同期プロバイダーが列挙されます。
ppEnumSyncProviderInfosIEnumSyncProviderInfos**out指定した条件に一致するすべての ISyncProviderInfo オブジェクトを列挙する IEnumSyncProviderInfos 列挙インターフェースです。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
E_OUTOFMEMORY
列挙インターフェースを返すための十分なメモリがありませんでした。
vtbl 10 HRESULT GetSyncProviderInfo(GUID* pguidInstanceId, ISyncProviderInfo** ppProviderInfo)

指定した同期プロバイダーのインスタンス ID に対応する ISyncProviderInfo オブジェクトを返します。

pguidInstanceIdGUID*in同期プロバイダーの一意のインスタンス ID です。
ppProviderInfoISyncProviderInfo**out同期プロバイダー情報オブジェクトです。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_REGISTRATION_NOTREGISTERED
指定されたインスタンス ID は、登録済みの同期プロバイダーと一致しません。

解説(Remarks)

このメソッドが返す ISyncProviderInfo オブジェクトの GetSyncProvider メソッドを呼び出すことで、同期プロバイダーのプロパティを取得および設定し、同期プロバイダーの IRegisteredSyncProvider インスタンスを取得できます。

vtbl 11 HRESULT GetSyncProviderFromInstanceId(GUID* pguidInstanceId, DWORD dwClsContext, IRegisteredSyncProvider** ppSyncProvider)

指定した一意のインスタンス ID に対応する、初期化およびインスタンス化された IRegisteredSyncProvider オブジェクトを返します。

pguidInstanceIdGUID*inIRegisteredSyncProvider オブジェクトの一意のインスタンス ID です。
dwClsContextDWORDin新しく作成されるオブジェクトを管理するコードが実行されるコンテキストです。サポートされるコンテキストは CLSCTX_INPROC_SERVER のみです。
ppSyncProviderIRegisteredSyncProvider**out初期化およびインスタンス化された同期プロバイダーオブジェクトです。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
E_INVALIDARG
インスタンス ID が GUID_NULL です。
E_OUTOFMEMORY
同期プロバイダーを作成するための十分なメモリがありませんでした。
REGDB_E_CLASSNOTREG
同期プロバイダーの CLSID が要求されたコンテキストで登録されていないか、プロバイダーの DLL が登録されていません。
SYNC_E_REGISTRATION_NOTREGISTERED
指定されたインスタンス ID を持つ同期プロバイダーは登録されていませんでした。

解説(Remarks)

このメソッドの呼び出し元は、返された IRegisteredSyncProvider オブジェクトに対して明示的に IRegisteredSyncProvider::Init を呼び出さないでください。このメソッドが呼び出し元に代わって実行します。呼び出し元は、返された IRegisteredSyncProvider オブジェクトに対して QueryInterface を呼び出し、同期セッションに渡す ISyncProvider インターフェースを取得してください。
vtbl 12 HRESULT GetSyncProviderConfigUIInfo(GUID* pguidInstanceId, ISyncProviderConfigUIInfo** ppConfigUIInfo)

指定した一意のインスタンス ID に対応する ISyncProviderConfigUIInfo オブジェクトを返します。

pguidInstanceIdGUID*inISyncProviderConfigUIInfo オブジェクトの一意のインスタンス ID です。
ppConfigUIInfoISyncProviderConfigUIInfo**out構成 UI 情報オブジェクトです。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
E_OUTOFMEMORY
構成 UI を返すための十分なメモリがありませんでした。
SYNC_E_REGISTRATION_NOTREGISTERED
指定されたインスタンス ID を持つ構成 UI は登録されていませんでした。

解説(Remarks)

このメソッドは、指定した構成 UI オブジェクトの構成 UI プロパティを取得および設定するために使用します。

vtbl 13 HRESULT GetSyncProviderConfigUIFromInstanceId(GUID* pguidInstanceId, DWORD dwClsContext, ISyncProviderConfigUI** ppConfigUI)

指定した一意のインスタンス ID に対応する、初期化およびインスタンス化された ISyncProviderConfigUI オブジェクトを返します。

pguidInstanceIdGUID*inISyncProviderConfigUI オブジェクトの一意のインスタンス ID です。
dwClsContextDWORDin新しく作成されるオブジェクトを管理するコードが実行されるコンテキストです。サポートされるコンテキストは CLSCTX_INPROC_SERVER のみです。
ppConfigUIISyncProviderConfigUI**out初期化およびインスタンス化された構成 UI オブジェクトです。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
E_INVALIDARG
インスタンス ID が GUID_NULL です。
E_OUTOFMEMORY
構成 UI を作成するための十分なメモリがありませんでした。
REGDB_E_CLASSNOTREG
同期プロバイダーの CLSID が要求されたコンテキストで登録されていないか、構成 UI の DLL が登録されていません。
SYNC_E_REGISTRATION_NOTREGISTERED
指定されたインスタンス ID を持つ構成 UI は登録されていませんでした。

解説(Remarks)

このメソッドは、ISyncProviderConfigUI のインスタンス ID が分かっている場合に、ISyncProviderConfigUIInfo を直接取得するために使用します。同期プロバイダーのインスタンス ID から ISyncProviderConfigUIInfo オブジェクトにアクセスするには、GetSyncProviderConfigUIInfoforProvider メソッドを使用できます。

vtbl 14 HRESULT GetSyncProviderState(GUID* pguidInstanceId, DWORD* pdwStateFlags)

指定した同期プロバイダーの状態を返します。

pguidInstanceIdGUID*in同期プロバイダーの一意のインスタンス ID です。
pdwStateFlagsDWORD*out

同期プロバイダーの状態を表す、次のいずれかのフラグです。

  • SYNC_PROVIDER_STATE_ENABLED ((DWORD)0x00000001)プロバイダーは有効であり、同期に使用できます。
  • SYNC_PROVIDER_STATE_DIRTY ((DWORD)0x00000002)アクティブなプロバイダーが更新され、同期すべき新しいデータがあります。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_REGISTRATION_NOTREGISTERED
指定されたインスタンス ID を持つ同期プロバイダーは登録されていませんでした。
vtbl 15 HRESULT SetSyncProviderState(GUID* pguidInstanceId, DWORD dwStateFlagsMask, DWORD dwStateFlags)

指定した同期プロバイダーの状態を設定します。

pguidInstanceIdGUID*in同期プロバイダーの一意のインスタンス ID です。
dwStateFlagsMaskDWORDin既存の状態をマスク (保持または除去) するために使用できる同期プロバイダーの状態フラグです。このパラメーターに 0 を設定した場合は、すべての同期プロバイダーの状態が列挙されます。フラグの一覧については、dwStateFlags パラメーターの説明を参照してください。
dwStateFlagsDWORDin

同期プロバイダーの状態を表す、次のいずれかのフラグです。

  • SYNC_PROVIDER_STATE_ENABLED ((DWORD)0x00000001)プロバイダーは有効であり、同期に使用できます。
  • SYNC_PROVIDER_STATE_DIRTY ((DWORD)0x00000002)アクティブなプロバイダーが更新され、同期すべき新しいデータがあります。
このパラメーターに 0 を設定した場合は、すべての同期プロバイダーの状態が列挙されます。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
SYNC_E_REGISTRATION_NOTREGISTERED
指定されたインスタンス ID を持つ同期プロバイダーは登録されていませんでした。

解説(Remarks)

同期プロバイダーの状態を取得するには、GetSyncProviderState メソッドを呼び出します。

vtbl 16 HRESULT RegisterForEvent(HANDLE* phEvent)

登録ストアに変更が加えられたときに発生する新しい登録イベントの到着通知を受け取るように、ユーザーを登録します。

phEventHANDLE*inout

新しい登録イベントの到着を呼び出し元に通知するために使用される 同期イベントの HANDLE です。

呼び出し元は、返された HANDLEClose してはなりません。登録ストアが HANDLE のメモリを管理し、HANDLERevokeEvent に渡してイベントが取り消されたとき、またはストアオブジェクトがメモリから解放される前に、これをクローズします。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。

解説(Remarks)

このメソッドが返す HANDLE は、GetChange メソッドで使用します。イベントは、RegisterForEvent の呼び出しによって一度だけシグナル状態になります。以降の通知は、ユーザーが GetChange メソッドを呼び出した場合にのみ発生します。

このイベント通知の仕組みから登録を解除するには、RevokeEvent メソッドを呼び出します。

vtbl 17 HRESULT RevokeEvent(HANDLE hEvent)

新しい登録イベントの到着通知から、ユーザーの登録を解除します。

hEventHANDLEinRegisterForEvent メソッドが返した HANDLE です。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
指定されたイベントは登録されていません。

解説(Remarks)

このメソッドは、指定された HANDLE をクローズし、関連するメモリを解放します。

vtbl 18 HRESULT GetChange(HANDLE hEvent, ISyncRegistrationChange** ppChange)

新しい登録イベントを表す ISyncRegistrationChange オブジェクトを取得します。

hEventHANDLEinRegisterForEvent メソッドが返した HANDLE です。
ppChangeISyncRegistrationChange**outイベントと、変更された同期プロバイダーまたは同期プロバイダー構成 UI の ID を格納する ISyncRegistrationChange オブジェクトです。

戻り値

返される可能性のあるコードには、次の表に示す値が含まれます (ただしこれらに限定されません)。

リターンコード 説明
S_OK
メソッドは成功しました。
S_FALSE
未処理のイベントはすべて取得されました。
E_POINTER
ポインターが無効です。

解説(Remarks)

このメソッドは、渡されたイベントをリセットし、登録ストアで次に変更が発生したときにシグナル状態になるようにします。ストアからすべてのイベントを取得するには、S_FALSE が返され、ppChangeNULL になるまでこのメソッドを呼び出してください。

このメソッドは、指定した HANDLE に対して RegisterForEvent または GetChange のうち最後に呼び出された方の時点以降に発生した変更を返します。つまり、GetChange を呼び出す前に 1 つの項目に対して複数の変更が加えられた場合、それらの変更は GetChange が返す 1 つの変更オブジェクトとして表現されます。呼び出しの間に項目が登録され、さらに登録解除された場合は、変更は返されません。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ISyncProviderRegistration "{CB45953B-7624-47BC-A472-EB8CAC6B222E}"
#usecom global ISyncProviderRegistration IID_ISyncProviderRegistration "{F82B4EF1-93A9-4DDE-8015-F7950A1A6E31}"
#comfunc global ISyncProviderRegistration_CreateSyncProviderConfigUIRegistrationInstance  3 var,sptr
#comfunc global ISyncProviderRegistration_UnregisterSyncProviderConfigUI                  4 var
#comfunc global ISyncProviderRegistration_EnumerateSyncProviderConfigUIs                  5 var,int,sptr
#comfunc global ISyncProviderRegistration_CreateSyncProviderRegistrationInstance          6 var,sptr
#comfunc global ISyncProviderRegistration_UnregisterSyncProvider                          7 var
#comfunc global ISyncProviderRegistration_GetSyncProviderConfigUIInfoforProvider          8 var,sptr
#comfunc global ISyncProviderRegistration_EnumerateSyncProviders                          9 var,int,int,var,int,sptr
#comfunc global ISyncProviderRegistration_GetSyncProviderInfo                             10 var,sptr
#comfunc global ISyncProviderRegistration_GetSyncProviderFromInstanceId                   11 var,int,sptr
#comfunc global ISyncProviderRegistration_GetSyncProviderConfigUIInfo                     12 var,sptr
#comfunc global ISyncProviderRegistration_GetSyncProviderConfigUIFromInstanceId           13 var,int,sptr
#comfunc global ISyncProviderRegistration_GetSyncProviderState                            14 var,var
#comfunc global ISyncProviderRegistration_SetSyncProviderState                            15 var,int,int
#comfunc global ISyncProviderRegistration_RegisterForEvent                                16 sptr
#comfunc global ISyncProviderRegistration_RevokeEvent                                     17 sptr
#comfunc global ISyncProviderRegistration_GetChange                                       18 sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。