Win32 API 日本語リファレンス
ホームUI.Shell › ISyncMgrEventStore

ISyncMgrEventStore

COM
IID37e412f9-016e-44c2-81ff-db3add774266継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ハンドラーが既定の同期センター (Sync Center) のイベント ストアを使用する代わりに、独自のイベント ストアを提供し、独自の同期イベントを管理できるようにするメソッドを公開します。これらのイベントは Sync Results フォルダーに表示されます。

解説(Remarks)

実装のタイミング

同期センターは、ハンドラーがイベントを報告するために使用できる既定のイベント ストアを提供し、それらのイベントは Sync Results フォルダーに表示されます。コンポーネントが既にイベントをログに記録している場合は、そのハンドラー用のイベントを列挙する独自のイベント ストアを提供する方が便利な場合があります。この場合のイベント ストアは、単にコンポーネントによってログに記録されたイベントを、同期センターで使用できる形式に変換するだけです。

同期センターは、まず ISyncMgrHandler::GetCapabilities が返すマスクで SYNCMGR_HCM_EVENT_STORE フラグを調べることによって、ハンドラーにイベント ストアを要求します。その値が存在する場合、同期センターは SYNCMGR_OBJECTID_EventStore 値を指定して ISyncMgrHandler::GetObject を呼び出します。また、ハンドラーは ISyncMgrSyncItem::GetCapabilities が返すマスクに SYNCMGR_ICM_EVENT_STORE フラグを設定することで、項目でフィルター処理されたイベント ストアを提供することもできます。

イベント ストアにイベントが追加された場合、ハンドラー (または関連するコンポーネント) は ISyncMgrControl::UpdateEvents を呼び出して、Sync Results フォルダーとエラー数を更新できるようにする必要があります。

メソッド 4

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

vtbl 3 HRESULT GetEventEnumerator(IEnumSyncMgrEvents** ppenum)

ハンドラーのイベントの列挙子を取得します。

ppenumIEnumSyncMgrEvents**outこのメソッドが返されるとき、ハンドラーのイベントにアクセスするために使用できる IEnumSyncMgrEvents インスタンスへのポインターのアドレスが格納されます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

解説(Remarks)

このメソッドは、ユーザーが Sync Results フォルダーに移動したとき、またはハンドラーの Errors リンクをクリックしたときに、同期センターによって呼び出されます。

次の例は、ISyncMgrEventStore::GetEventEnumerator の実装を示しています。

STDMETHODIMP CMyDeviceEventStore::GetEventEnumerator(
                                __out IEnumSyncMgrEvents **ppenum)
{
    HRESULT hr = CEnumMyDeviceSyncMgrEvents_Create(ppenum);
    return hr;
}
vtbl 4 HRESULT GetEventCount(DWORD* pcEvents)

イベント数を取得します。

pcEventsDWORD*outイベント数の値へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 5 HRESULT GetEvent(GUID* rguidEventID, ISyncMgrEvent** ppEvent)

指定されたイベント オブジェクトを取得します。

rguidEventIDGUID*inイベント GUID への参照。
ppEventISyncMgrEvent**outISyncMgrEvent インターフェイス ポインターのアドレス。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 6 HRESULT RemoveEvent(GUID* pguidEventIDs, DWORD cEvents)

指定されたイベントを削除します。

pguidEventIDsGUID*inイベント GUID へのポインター。
cEventsDWORDin削除するイベントの数。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ISyncMgrEventStore "{37E412F9-016E-44C2-81FF-DB3ADD774266}"
#usecom global ISyncMgrEventStore IID_ISyncMgrEventStore "{}"
#comfunc global ISyncMgrEventStore_GetEventEnumerator  3 sptr
#comfunc global ISyncMgrEventStore_GetEventCount       4 var
#comfunc global ISyncMgrEventStore_GetEvent            5 var,sptr
#comfunc global ISyncMgrEventStore_RemoveEvent         6 var,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。