ICallFrame::Marshal メソッド (callobj.h)

フレームを乱すことなく、到達可能なデータをフラット バッファーに変換して、呼び出しフレームをマーシャリングします。

構文

HRESULT Marshal(
  [in]  CALLFRAME_MARSHALCONTEXT *pmshlContext,
  [in]  MSHLFLAGS                mshlflags,
  [in]  PVOID                    pBuffer,
  [in]  ULONG                    cbBuffer,
  [out] ULONG                    *pcbBufferUsed,
  [out] RPCOLEDATAREP            *pdataRep,
  [out] ULONG                    *prpcFlags
);

パラメーター

[in] pmshlContext

マーシャリングの実行方法に関するコンテキスト情報を含む CALLFRAME_MARSHALCONTEXT 構造体へのポインター。

[in] mshlflags

マーシャリングするデータをクライアント プロセス (通常のケース) に転送するか、グローバル テーブルに書き込むかを示すフラグ。ここで、複数のクライアントで取得できます。 指定できる値は 、MSHLFLAGS 列挙体からの値です。

[in] pBuffer

マーシャリングされたデータを格納するバッファーへのポインター。

[in] cbBuffer

バッファーのサイズ (バイト単位)。

[out] pcbBufferUsed

実際に使用されたバッファーのサイズを受け取ります。 このパラメーターは省略可能です。

[out] pdataRep

データがマーシャリングされた NDR データ表現を受け取ります。 このパラメーターは省略可能です。 詳細については、「 IRpcChannelBuffer::GetBuffer」を参照してください。

[out] prpcFlags

呼び出しに関連付けられている RPC フラグを受信します。 このパラメーターは省略可能です。 詳細については、「 IRpcChannelBuffer::GetBuffer」を参照してください。

戻り値

このメソッドは、次の値を返すことができます。

リターン コード 説明
S_OK
メソッドは正常に完了しました。
E_UNEXPECTED
予期しないエラーが発生しました。

解説

[in, out] パラメーターの [In] バージョンをマーシャリングする場合、[out] バージョンは未定義です。 [out] パラメーターをマーシャリングする場合、値は有効です。

このメソッドからエラーが返された場合、呼び出し元はそれをクリーンできません。 マーシャリングの試行中に一時的に割り当てられたメモリなどのリソースが解放されました。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー callobj.h

関連項目

ICallFrame