次の方法で共有


user_marshal属性

[ user_marshal] 属性は、構文が [ represent_as] に似た ACF 型の属性です。 IDL 属性 [ wire_marshal] と同様に、ネットワーク経由でデータをマーシャリングするより効率的な方法が提供されます。 ACF 属性 [user_marshal] を使用すると、MIDL に不明なカスタム データ型をマーシャリングできます。 各アプリケーション固有の型には、ワイヤ表現を定義する対応する送信可能な型があります。

アプリケーション固有の型は、単純型、複合型、またはポインター型のいずれかです。 メイン制限は、型インスタンスに固定の適切に定義されたメモリ サイズが必要であることです。 型インスタンスのサイズを変更する必要がある場合は、適合する配列ではなくポインター フィールドを使用します。 または、変更可能な型へのポインターを定義することもできます。

[wire_marshal] 属性と同様に、サイズ変更、マーシャリング、マーシャリング解除、およびパスの解放のためのルーチンを指定します。 次の表では、ユーザーが指定した 4 つのルーチン名について説明します。 型>は<、[user_marshal]定義で指定された userm 型です。

ルーチンによって返される値 説明
<type>_UserSize クライアント側またはサーバー側でマーシャリングする前に、RPC データ バッファーのサイズを設定します。
<type>_UserMarshal クライアント側またはサーバー側のデータをマーシャリングします。
<type>_UserUnmarshal クライアント側またはサーバー側のデータのマーシャリングを解除します。
<type>_UserFree サーバー側のデータを解放します。

 

これらのユーザー指定ルーチンは、方向属性に基づいて、クライアントまたはサーバー アプリケーションによって提供されます。

パラメーターが [ in] の場合のみ、クライアントはサーバーに送信します。 クライアントには、<型>_UserSize_UserMarshal<>関数が必要です。 サーバーには、<型>_UserUnmarshal_UserFree<>関数が必要です。

[ out]-only パラメーターの場合、サーバーはクライアントに送信します。 サーバーには型>_UserSize型_UserMarshal関数が必要<ですが、クライアントには型_UserMarshal関数が<必要です><>

wire_marshal属性

ユーザー マーシャリングとwire_marshalのマーシャリングルール

user_marshal

wire_marshal

NdrGetUserMarshalInfo