user_marshal属性
[user_marshal] 属性は、[represent_as] の構文に似た ACF 型の属性です。 IDL 属性 [wire_marshal] と同様に、ネットワーク経由でデータをマーシャリングするより効率的な方法が提供されます。 ACF 属性として、[user_marshal] 、MIDL に不明なカスタム データ型をマーシャリングできます。 各アプリケーション固有の型には、ワイヤ表現を定義する対応する送信可能な型があります。
アプリケーション固有の型には、単純型、複合型、またはポインター型を指定できます。 主な制限は、型インスタンスに固定の明確に定義されたメモリ サイズが必要であることです。 型インスタンスのサイズを変更する必要がある場合は、適合する配列ではなくポインター フィールドを使用します。 または、変更可能な型へのポインターを定義することもできます。
[wire_marshal] 属性と同様に、サイズ変更、マーシャリング、マーシャリング解除、フリーパスのルーチンを指定します。 次の表では、ユーザーが指定した 4 つのルーチン名について説明します。 <型> は、[user_marshal] 型定義で指定userm- 型です。
ルーチン | 形容 |
---|---|
<型>_UserSize | クライアント側またはサーバー側でマーシャリングする前に、RPC データ バッファーのサイズを変更します。 |
<型>_UserMarshal | クライアント側またはサーバー側のデータをマーシャリングします。 |
<型>_UserUnmarshal | クライアント側またはサーバー側のデータのマーシャリングを解除します。 |
<型>_UserFree | サーバー側のデータを解放します。 |
これらのユーザー指定ルーチンは、方向属性に基づいて、クライアントまたはサーバー アプリケーションによって提供されます。
パラメーターが [で] のみである場合、クライアントはサーバーに送信します。 クライアントには、<型>_UserSize と <型>_UserMarshal 関数が必要です。 サーバーには、<型>_UserUnmarshal と <型>_UserFree 関数が必要です。
[出力]-only パラメーターの場合、サーバーはクライアントに送信します。 サーバーには <型>_UserSize と <型>_UserMarshal 関数が必要ですが、クライアントには <型>_UserMarshal 関数が必要です。
関連トピック
-
wire_marshal属性の を する
-
ユーザーマーシャリングとwire_marshal のマーシャリングルールの