ISyncMgrHandler::GetObject メソッド (syncmgr.h)

ハンドラーに関連する特定の種類のオブジェクトを作成します。

構文

HRESULT GetObject(
  [in]  REFGUID rguidObjectID,
  [in]  REFIID  riid,
  [out] void    **ppv
);

パラメーター

[in] rguidObjectID

種類: REFGUID

作成するオブジェクトの種類を識別する GUID。 shlguid.h で定義されている次のいずれかの値。

SYNCMGR_OBJECTID_BrowseContent

フォルダー、デバイス、ネットワーク上のコンピューター、アプリケーションなど、ハンドラーによって管理されている項目の内容をユーザーが参照できるようにする UI を示す ISyncMgrUIOperation インターフェイスを実装するオブジェクト。

Sync Center は、getCapabilities によって取得されたマスクでSYNCMGR_HCM_CAN_BROWSE_CONTENT機能フラグが設定されている場合にのみ、このオブジェクトを要求します。

SYNCMGR_OBJECTID_ConflictStore

ハンドラーが競合を提供できるようにする ISyncMgrConflictStore インターフェイスを実装するオブジェクト。 これらの競合は、[同期センターの競合] フォルダーに表示されます。 競合ストアには、ハンドラーの競合と、そのすべてのアイテムの競合が含まれている必要があります。 特定のアイテムに対してのみ競合を含めるために、同期センターは GetObject を呼び出します。

Sync Center では、GetCapabilities によって取得されたマスクでSYNCMGR_HCM_CONFLICT_STORE機能フラグが設定されている場合にのみ、このオブジェクトが要求されます。

SYNCMGR_OBJECTID_EventLinkClick

[同期結果] フォルダーに表示されるイベントで提供されるリンクのクリック アクションを実装する ISyncMgrEventLinkUIOperation インターフェイスを実装するオブジェクト。

SYNCMGR_OBJECTID_EventStore

ハンドラーが独自のイベント ソースを提供できるようにする ISyncMgrEventStore インターフェイスを実装するオブジェクト。 これらのイベントは、[同期結果] フォルダーに表示されます。 イベント ストアには、ハンドラーとそのすべての項目のイベントを含める必要があります。 特定のアイテムのイベントのみを含めるために、同期センターは GetObject を呼び出します。 イベント ストアは、次回ハンドラーが同期されるときにハンドラーのイベントを削除するように求められます。 既定のイベント ストアは、ユーザーがログオフしたときにイベントを消去します。

Sync Center では、GetCapabilities によって取得されたマスクでSYNCMGR_HCM_EVENT_STORE機能フラグが設定されている場合にのみ、このオブジェクトが要求されます。

イベント ストアを提供するためにハンドラーは必要ありません。 Sync Center によって提供される既定のイベント ストアは、ハンドラーの要件を満たしている場合に使用できます。

SYNCMGR_OBJECTID_Icon

ハンドラーのアイコンを表示するために使用される IExtractIcon インターフェイスを実装するアイコン抽出オブジェクト。 このオブジェクトは、ハンドラーが実行時にアイコンを動的に取得する場合にのみ指定する必要があります。 アイコンを提供するための推奨されるメカニズムは、レジストリにアイコンを DefaultIcon として登録する方法です。

Sync Center は、getCapabilities によって取得されたマスクでSYNCMGR_HCM_PROVIDES_ICON機能フラグが設定されている場合にのみ、このオブジェクトを要求します。

SYNCMGR_OBJECTID_QueryBeforeActivate

ユーザーがハンドラーを構成できるようにする UI を表示する ISyncMgrUIOperation インターフェイスを実装するオブジェクト。 この UI は、ユーザーが [同期セットアップ] フォルダーでハンドラーを選択し、 セットアップ タスクを 選択したときに表示されます。 このオブジェクトを要求する前に、Sync Center によって、この操作用の別のスレッドとハンドラーの新しいインスタンスが作成されます。

Sync Center は、GetCapabilities によって取得されたマスクでSYNCMGR_HCM_QUERY_BEFORE_ACTIVATE機能フラグが設定され、SYNCMGR_HPM_PREVENT_ACTIVATE ポリシー フラグが GetPolicies によって取得されたマスクに設定されていない場合にのみ、このオブジェクトを要求します。

SYNCMGR_OBJECTID_QueryBeforeDeactivate

ユーザーが Sync Center フォルダー内のハンドラーを選択し、削除タスクを選択したときに UI を表示する ISyncMgrUIOperation インターフェイスを実装するオブジェクト。 このオブジェクトを要求する前に、Sync Center によって、この操作用の別のスレッドとハンドラーの新しいインスタンスが作成されます。

Sync Center は、GetCapabilities によって取得されたマスクでSYNCMGR_HCM_QUERY_BEFORE_DEACTIVATE機能フラグが設定され、SYNCMGR_HPM_PREVENT_DEACTIVATE ポリシー フラグが GetPolicies によって取得されたマスクに設定されていない場合にのみ、このオブジェクトを要求します。

SYNCMGR_OBJECTID_QueryBeforeEnable

ISyncMgrUIOperation インターフェイスを実装するオブジェクト。ユーザーが [同期センター] フォルダーでハンドラーを選択し、[有効にする] タスクを選択したときに UI を表示します。 このオブジェクトを要求する前に、Sync Center によって、この操作用の別のスレッドとハンドラーの新しいインスタンスが作成されます。

Sync Center は、GetCapabilities によって取得されたマスクにSYNCMGR_HCM_CAN_ENABLEおよびSYNCMGR_HCM_QUERY_BEFORE_ENABLE機能フラグが設定されている場合にのみ、このオブジェクトを要求します。

SYNCMGR_OBJECTID_QueryBeforeDisable

ユーザーが [同期センター] フォルダーでハンドラーを選択し、[無効にする] タスクを選択したときに UI を表示する ISyncMgrUIOperation インターフェイスを実装するオブジェクト。 このオブジェクトを要求する前に、Sync Center によって、この操作用の個別のスレッドとハンドラーの新しいインスタンスの両方が作成されます。

Sync Center は、GetCapabilities によって取得されたマスクにSYNCMGR_HCM_CAN_DISABLEおよびSYNCMGR_HCM_QUERY_BEFORE_DISABLE機能フラグが設定されている場合にのみ、このオブジェクトを要求します。

SYNCMGR_OBJECTID_ShowSchedule

ユーザーがハンドラーのスケジュールを構成できるようにする UI を表示する ISyncMgrUIOperation インターフェイスを実装するオブジェクト。 このオブジェクトを要求する前に、Sync Center によって、この操作用の別のスレッドとハンドラーの新しいインスタンスが作成されます。

Sync Center では、GetCapabilities によって取得されたマスクでSYNCMGR_HCM_CAN_SHOW_SCHEDULE機能フラグが設定されている場合にのみ、このオブジェクトが要求されます。

[in] riid

種類: REFIID

要求されたインターフェイスの IID。 これは 、rguidObjectID で指定されたオブジェクト型によって異なります。

[out] ppv

型: void**

このメソッドが戻るとき、 には、要求されたインターフェイスへのポインターのアドレスが含まれます。

戻り値

種類: HRESULT

成功した場合はS_OKを返し、それ以外の場合はエラー値を返します。 ハンドラーが要求されたオブジェクト型をサポートしていない場合は、E_NOTIMPLを返します。

解説

ハンドラーは、要求されたインターフェイスをそれ自体に実装することも、別のオブジェクトに実装することもできます。

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

STDMETHODIMP CMyDeviceHandler::GetObject( __in REFGUID   rguidObjectID, 
                                          __in REFIID    riid,
                                          __out void   **ppv)
{
    HRESULT hr = E_NOTIMPL;
    *ppv = NULL;

    if (rguidObjectID == SYNCMGR_OBJECTID_QueryBeforeActivate)
    {
        hr = _CreateSetupObject(riid, ppv);
    }
    else if (rguidObjectID == SYNCMGR_OBJECTID_EventStore)
    {
        hr = _CreateEventStore(NULL, riid, ppv);
    }

    return hr;
}

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー syncmgr.h