CreateObjrefMoniker

オブジェクトへのポインタに基づく OBJREF モニカを作成する。

CreateObjrefMoniker punk, ppmk

punk : [var] モニカが表すオブジェクト上の IUnknown インターフェイスへのポインタ。
ppmk : [var] 作成された OBJREF モニカ上の IMoniker インターフェイスへのポインタのアドレス。

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

解説

オブジェクトへのポインタに基づく OBJREF モニカを作成する。

[戻り値]
この関数は標準の戻り値 E_OUTOFMEMORY、E_UNEXPECTED、および S_OK を返すことがある。

[備考]
クライアントは、サーバーのアドレス空間で動作しているオブジェクトへのマーシャルされたポインタを取得するために OBJREF
モニカを使用する。サーバーは通常、CreateObjrefMoniker を呼び出して OBJREF モニカを作成し、続いて
IMoniker::GetDisplayName を呼び出し、最後にモニカを解放する。OBJREF モニカの表示名は次の形式となる。
OBJREF:nnnnnnnn ここで nnnnnnnn は任意の長さの base-64
エンコードで、実行中のオブジェクトのマシン位置、プロセスエンドポイント、およびインターフェイスポインタ
ID(IPID)をカプセル化したものである。表示名はテキストとしてクライアントに転送できる。たとえば、表示名はクライアントがダウンロードする
HTML ページに配置できる。クライアントは表示名を MkParseDisplayName に渡すことができ、これは表示名に基づいて
OBJREF モニカを作成する。続いてモニカの IMoniker::BindToObject
メソッドを呼び出すことで、サーバー上で実行中のインスタンスへのマーシャルされたポインタが得られる。たとえば、Active Server
Page に含まれるサーバー側 COM コンポーネントは、OBJREF
モニカを作成し、その表示名を取得して、クライアントのブラウザに送信される HTML
出力に書き込むことができる。クライアント側で実行されるスクリプトは、この表示名を使用して、実行中のオブジェクト自体にアクセスできる。たとえば、クライアント側の
Visual Basic スクリプトは、表示名を strMyName という変数に格納し、objMyInstance =
GetObject(strMyName) という行を含めることができる。スクリプトエンジンは内部で MkParseDisplayName
および IMoniker::BindToObject の呼び出しを行い、以降スクリプトは objMyInstance
を使用して実行中のオブジェクトを直接参照できる。

情報

プラグイン / モジュール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