CreateGenericComposite

2 つのモニカを汎用合成し、結果として得られる合成モニカへのポインタを返す。

CreateGenericComposite pmkFirst, pmkRest, ppmkComposite

pmkFirst : [var] pmkRest が指すモニカの左に合成されるモニカへのポインタ。汎用合成モニカを含め、任意の種類のモニカを指すことができる。
pmkRest : [var] pmkFirst が指すモニカの右に合成されるモニカへのポインタ。汎用合成モニカを含め、pmkRest モニカの型と互換性のある任意の種類のモニカを指すことができる。
ppmkComposite : [var] pmkFirst と pmkRest を合成した結果である合成モニカオブジェクトへのインターフェイスポインタを受け取る IMoniker* ポインタ変数のアドレス。このオブジェクトは OLE の合成モニカ実装の IMoniker をサポートする。成功時、関数はモニカに対して AddRef を呼び出しており、呼び出し側が Release を呼び出す責任を負う。pmkFirst または pmkRest のいずれかが NULL の場合、返されるポインタは NULL でないほうとなる。pmkFirst と pmkRest の両方が NULL の場合、またはエラーが発生した場合、返されるポインタは NULL となる。

(プラグイン / モジュール : ole32.dll)

解説

2 つのモニカを汎用合成し、結果として得られる合成モニカへのポインタを返す。

[戻り値]
この関数は標準の戻り値 E_OUTOFMEMORY に加えて以下の値を返すことがある。
(以下省略)

[備考]
CreateGenericComposite は 2 つのモニカを 1
つに結合する。結合されるモニカクラスは、合成規則に従う限り異なっていてもよい。この関数は、汎用合成機能を含む
IMoniker::ComposeWith の実装内で、IMoniker
インターフェイスを実装して新しいモニカクラスを記述する場合にのみ呼び出す。モニカプロバイダは、2 つのモニカを合成するために
ComposeWith を呼び出す必要がある。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 へのポインタを返す。

情報

プラグイン / モジュールole32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の ole32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_ole32_gen2.hs