CoGetMarshalSizeMax 関数 (combaseapi.h)
指定したオブジェクトへの指定したインターフェイス ポインターをマーシャリングするために必要なバイト数の上限を返します。
構文
HRESULT CoGetMarshalSizeMax(
[out] ULONG *pulSize,
[in] REFIID riid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwDestContext,
[in, optional] LPVOID pvDestContext,
[in] DWORD mshlflags
);
パラメーター
[out] pulSize
マーシャリング ストリームに書き込まれるデータ パケットのサイズ (バイト単位) の上限値へのポインター。 このパラメーターが 0 の場合、パケットのサイズは不明です。
[in] riid
ポインターがマーシャリングされるインターフェイスの識別子への参照。 このインターフェイスは、 IUnknown インターフェイスから派生する必要があります。
[in] pUnk
マーシャリングするインターフェイスへのポインター。 このインターフェイスは、 IUnknown インターフェイスから派生する必要があります。
[in] dwDestContext
指定したインターフェイスをマーシャリングしない宛先コンテキスト。 dwDestContext の値は、列挙 MSHCTX から取得されます。
[in, optional] pvDestContext
このパラメーターは予約済みであり、 NULL である必要があります。
[in] mshlflags
マーシャリングするデータをクライアント プロセスに通常のケースで返送するか、グローバル テーブルに書き込むかを示します。この場合、複数のクライアントで取得できます。 値は列挙 MSHLFLAGS から取得されます。
戻り値
この関数は、E_UNEXPECTED標準の戻り値と、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
上限が正常に返されました。 |
|
この関数を呼び出す前に、 CoInitialize 関数または OleInitialize 関数を呼び出す必要があります。 |
注釈
この関数は、次のタスクを実行します。
- オブジェクトに IMarshal ポインターを照会するか、オブジェクトが IMarshal を実装していない場合は、COM の標準マーシャラーへのポインターを取得します。
- 前の項目で取得したポインターを使用して、 IMarshal::GetMarshalSizeMax を呼び出します。
- GetMarshalSizeMax の呼び出しによって返される値にマーシャリング データ ヘッダーのサイズを加算し、場合によってはプロキシ CLSID の値を加算して、マーシャリング ストリームに書き込まれるデータ量の最大サイズ (バイト単位) を取得します。
このメソッドによって返される値は、マーシャリングされるオブジェクトの内部状態が変更されない限り、有効であることが保証されます。 したがって、実際のマーシャリングは、この関数が戻った直後に行う必要があります。または、スタブは、状態が変化したためにオブジェクトが最初に示したメモリよりも多くのメモリをマーシャリングする必要がある可能性があるリスクを実行します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | combaseapi.h (Objbase.h を含む) |
Library | Ole32.lib |
[DLL] | Ole32.dll |