CoGetStandardMarshal 関数 (combaseapi.h)
呼び出し元に応じて、クライアント プロセスまたはサーバー プロセスのいずれかで既定の (標準) マーシャリング オブジェクトを作成し、そのオブジェクトの IMarshal 実装へのポインターを返します。
構文
HRESULT CoGetStandardMarshal(
[in] REFIID riid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwDestContext,
[in, optional] LPVOID pvDestContext,
[in] DWORD mshlflags,
[out] LPMARSHAL *ppMarshal
);
パラメーター
[in] riid
ポインターをマーシャリングするインターフェイスの識別子への参照。 このインターフェイスは、 IUnknown インターフェイスから派生する必要があります。
[in] pUnk
マーシャリングするインターフェイスへのポインター。
[in] dwDestContext
指定したインターフェイスをマーシャリング解除する宛先コンテキスト。 値は列挙 MSHCTX から取得されます。 マーシャリングの解除は、現在のプロセスの別のアパートメント (MSHCTX_INPROC) または現在のプロセスと同じコンピューター上の別のプロセス (MSHCTX_LOCAL) のいずれかで発生する可能性があります。
[in, optional] pvDestContext
このパラメーターは予約されており、 NULL である必要があります。
[in] mshlflags
マーシャリングするデータをクライアント プロセス (通常のケース) に転送するか、複数のクライアントが取得できるグローバル テーブルに書き込むかを示します。 値は MSHLFLAGS 列挙体から取得されます。
[out] ppMarshal
標準マーシャラーへのインターフェイス ポインターを受け取る IMarshal* ポインター変数のアドレス。
戻り値
この関数は、E_FAIL、E_OUTOFMEMORY、E_UNEXPECTEDの標準戻り値と、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
IMarshal インスタンスが正常に返されました。 |
|
この関数を呼び出すには、現在のスレッドで CoInitialize 関数または OleInitialize 関数を呼び出す必要があります。 |
注釈
CoGetStandardMarshal 関数は、必要に応じて、クライアント プロセスまたはサーバー プロセスのいずれかで既定の (標準) マーシャリング オブジェクトを作成し、そのオブジェクトの IMarshal ポインターを呼び出し元に返します。 IMarshal を実装する場合は、COM の既定の実装に委任する方法として CoGetStandardMarshal を呼び出す実装が必要な場合があります。これは、完全に理解していない、または処理する必要がない宛先コンテキストです。 それ以外の場合は、COM が内部マーシャリング プロシージャの一部として呼び出すこの関数を無視できます。
クライアント プロセスの COM ライブラリは、マーシャリングされたインターフェイス ポインターを受け取ると、パケットのマーシャリング解除のためにプロキシの作成に使用される CLSID を探します。 パケットにプロキシの CLSID が含まれていない場合、COM は CoGetStandardMarshal を呼び出し、 NULLpUnk 値を渡します。 この関数は、クライアント プロセスで標準プロキシを作成し、そのプロキシの IMarshal 実装へのポインターを返します。 COM は、このポインターを使用して CoUnmarshalInterface を呼び出して、要求されたインターフェイスへのポインターを取得します。
OLE サーバー アプリケーションの IMarshal の実装で CoGetStandardMarshal を呼び出す場合は、 (riid) の IID と、要求されるインターフェイス (pUnk) へのポインターの両方を渡す必要があります。
この関数は、次のタスクを実行します。
- pUnk が NULL かどうかを判断 します。
- pUnk が NULL の場合、指定した riid のクライアント プロセスに標準インターフェイス プロキシを作成し、プロキシの IMarshal ポインターを返します。
- pUnk が NULL でない場合は、オブジェクトのマーシャラーが既に存在するかどうかを確認し、必要に応じて新しいマーシャラーを作成し、マーシャラーの IMarshal ポインターを返します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | combaseapi.h (Objbase.h を含む) |
Library | Ole32.lib |
[DLL] | Ole32.dll |