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

ISyncMgrSessionCreator

COM
IID17f48517-f305-4321-a08d-b25a834918fd継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ハンドラーまたは外部アプリケーションが、同期の開始を Sync Center に通知したり、進行状況やイベントを報告したりするための単一のメソッドを公開します。

解説(Remarks)

このインターフェイスは ISyncMgrHandler::Synchronize に渡されます。ハンドラーは、その Synchronize 実装内でセッションを作成することを選択できます。これにより、ハンドラー自身が進行状況やイベントを報告したり、進行状況やイベントを報告するバックグラウンドプロセスへシグナルを送ったりできます。

あるいは、ハンドラーは外部プロセスにシグナルを送って CLSID_SyncMgrClient オブジェクトを作成させることもできます。ハンドラーがサービスなどの外部プロセスで自動同期を実行するように実装されている場合、Sync Center がユーザー向けの UI を更新できるよう、Sync Center に進行状況を報告できる必要があります。また、ハンドラーは Sync Center の Sync Results フォルダーにイベントを追加できる必要もあります。外部プロセスは、CLSCTX_SERVER フラグと ISyncMgrSessionCreator IID を CoCreateInstance に渡すことで CLSID_SyncMgrClient オブジェクトを作成します。これにより、そのプロセスは進行状況やイベントを報告できるほか、ユーザーが同期をキャンセルしたかどうかを Sync Center に問い合わせることもできます。ただし、ISyncMgrSessionCreator は外部プロセスへマーシャリングできない点に注意してください。

メソッド 1

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

vtbl 3 HRESULT CreateSession(LPWSTR pszHandlerID, LPWSTR* ppszItemIDs, DWORD cItems, ISyncMgrSyncCallback** ppCallback)

指定された項目の同期が開始されたことを Sync Center に通知します。

pszHandlerIDLPWSTRinハンドラーの一意な ID を格納したバッファーへのポインター。この文字列は、終端の null 文字を含めて最大長 MAX_SYNCMGR_ID です。
ppszItemIDsLPWSTR*inpszHandlerID で指定されたハンドラーが管理する、同期対象の項目 ID の配列を格納したバッファーへのポインターのアドレス。各 ID は、終端の null 文字を含めて最大長 MAX_SYNCMGR_ID です。
cItemsDWORDinppszItemIDs で参照されるバッファーに格納された項目 ID の数。
ppCallbackISyncMgrSyncCallback**out進行状況やイベントを報告するために使用する ISyncMgrSyncCallback のインスタンスへのポインターのアドレス。コールバックが不要な場合、この値は NULL にできます。

戻り値

型: HRESULT

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

解説(Remarks)

pszHandlerIDppszItemIDs の両方を指定する必要があります。

次の例は、このメソッドの実装の概要を示しています。

STDMETHODIMP CMyDeviceHandler::Synchronize(...)
{
    ...
    ISyncMgrSyncCallback *pCallback = NULL;

    hr = pCreator->CreateSession(_pszHandlerID, ppszItemIDs, cItems, &pCallback);
    if (SUCCEEDED(hr))
    {
        // 同期を実行します。
    }

    return hr;
}
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ISyncMgrSessionCreator "{17F48517-F305-4321-A08D-B25A834918FD}"
#usecom global ISyncMgrSessionCreator IID_ISyncMgrSessionCreator "{}"
#comfunc global ISyncMgrSessionCreator_CreateSession  3 wstr,var,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。