CreateGenericComposite 関数 (objbase.h)

2 つのモニカーの汎用構成を実行し、結果の複合モニカーへのポインターを提供します。

構文

HRESULT CreateGenericComposite(
  [in, optional] LPMONIKER pmkFirst,
  [in, optional] LPMONIKER pmkRest,
  [out]          LPMONIKER *ppmkComposite
);

パラメーター

[in, optional] pmkFirst

pmkRest が指すモニカーの左側に構成されるモニカーへのポインター。 ジェネリック 複合を含む任意の種類のモニカーを指すことができます。

[in, optional] pmkRest

pmkFirst が指すモニカーの右側に構成されるモニカーへのポインター。 ジェネリック 複合を含む pmkRest モニカーの型と互換性のある任意の種類のモニカーを指すことができます。

[out] ppmkComposite

pmkFirstpmkRest を作成した結果である複合モニカー オブジェクトへのインターフェイス ポインターを受け取る IMoniker* ポインター変数のアドレス。 このオブジェクトは、 IMoniker の OLE 複合モニカーの実装をサポートしています。 成功すると、関数はモニカーで AddRef を呼び出し、呼び出し元は Release の呼び出しを担当します。 pmkFirst または pmkRest のいずれかが NULL の場合、指定されたポインターは NULL 以外のポインターです。 pmkFirstpmkRest の両方が NULL の場合、またはエラーが発生した場合、返されるポインターは NULL です

戻り値

この関数は、E_OUTOFMEMORY標準の戻り値と、次の値を返すことができます。

リターン コード 説明
S_OK
入力モニカーは正常に構成されました。
MK_E_SYNTAX
パスの構文でエラーが発生したため、2 つのモニカーを構成できませんでした (たとえば、pmkFirst と pmkRest の両方が絶対パスに基づくファイル モニカーである場合)。

注釈

CreateGenericComposite は、2 つのモニカーを 1 つに結合します。 結合されるモニカー クラスは、コンポジションのルールのみに従って異なる場合があります。 この関数は、汎用コンポジション機能を含む IMoniker::ComposeWith の実装内で、IMoniker インターフェイスを実装して新しいモニカー クラスを記述する場合にのみ呼び出します。

モニカー プロバイダーは ComposeWith を呼び出して、2 つのモニカーを一緒に作成する必要があります。 ComposeWith の実装では、(OLE 実装と同様に) クラスが妥当な場合に、最初に非ジェネリックコンポジションを実行し、同じクラスの 2 つのモニカーを組み合わせて実行する必要があります。 これが不可能な場合、実装では CreateGenericComposite を 呼び出して、コンポジションのルール内で異なるクラスの 2 つのモニカーを組み合わせた汎用コンポジションを実行できます。 新しいモニカー クラスを記述する場合は、新しい種類の非ジェネリックコンポジションを定義できます。

2 つのモニカーを作成するプロセス中に、 CreateGenericComposite は可能なすべての簡略化を行います。 pmkFirst がジェネリック複合モニカー、A + B + C、pmkRest がジェネリック複合モニカー、C -1 + B -1 + Z (C -1 が C の逆数) である例を考えてみましょう。 関数は最初に C から C -1 を作成します。これは何も構成しません。 次に、B と B -1 を何も構成しません。 最後に、A から Z を構成し、汎用複合モニカー A + Z へのポインターを提供します。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー objbase.h
Library Ole32.lib
[DLL] Ole32.dll
API セット ext-ms-win-com-ole32-l1-1-5 (Windows 10 バージョン 10.0.15063 で導入)

こちらもご覧ください

Imoniker

IMoniker::ComposeWith