次の方法で共有


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)

スクリプト エンジンは内部的に MkParseDisplayNameIMoniker::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 で導入)

関連項目

Imoniker