CreateObjrefMoniker 関数 (objbase.h)
オブジェクトへのポインターに基づいて OBJREF モニカーを作成します。
構文
HRESULT CreateObjrefMoniker(
[in, optional] LPUNKNOWN punk,
[out] LPMONIKER *ppmk
);
パラメーター
[in, optional] punk
モニカーが表すオブジェクトの IUnknown インターフェイスへのポインター。
[out] ppmk
作成された OBJREF モニカー上の IMoniker インターフェイスへのポインターのアドレス。
戻り値
この関数は、E_OUTOFMEMORY、E_UNEXPECTED、S_OKの標準戻り値を返すことができます。
解説
クライアントは OBJREF モニカーを使用して、サーバーのアドレス空間内の実行中のオブジェクトへのマーシャリングされたポインターを取得します。
通常、サーバーは CreateObjrefMoniker を呼び出して OBJREF モニカーを作成し、 IMoniker::GetDisplayName を呼び出して、最後にモニカーを解放します。 OBJREF モニカーの表示名は、次の形式です。
OBJREF:nnnnnnnn
nnnnnnnn は、実行中のオブジェクトのコンピューターの場所、プロセス エンドポイント、インターフェイス ポインター ID (IPID) をカプセル化する任意に長い base-64 エンコードです
その後、表示名をテキストとしてクライアントに転送できます。 たとえば、表示名は、クライアントがダウンロードする HTML ページに配置できます。
クライアントは表示名を MkParseDisplayName に渡すことができます。これにより、表示名に基づいて OBJREF モニカーが作成されます。 モニカー IMoniker::BindToObject メソッドを呼び出すと、サーバー上の実行中のインスタンスへのマーシャリングされたポインターが取得されます。
たとえば、Active Server ページに含まれるサーバー側 COM コンポーネントは、OBJREF モニカーを作成し、その表示名を取得し、クライアント ブラウザーに送信される HTML 出力に表示名を書き込むことができます。 クライアント側で実行されるスクリプトでは、表示名を使用して、実行中のオブジェクト自体にアクセスできます。 たとえば、クライアント側の Visual Basic スクリプトでは、表示名を strMyName という変数に格納し、次の行を含めることができます。
objMyInstance = GetObject(strMyName)
スクリプト エンジンは内部的に MkParseDisplayName と IMoniker::BindToObject を呼び出し、スクリプトは objMyInstance を使用して実行中のオブジェクトを直接参照できます。
要件
サポートされている最小のクライアント | 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 で導入) |