encode 属性
[encode] ACF 属性は、プロシージャまたはデータ型にシリアル化のサポートが必要であることを指定します。
[
encode
[ , interface-attribute-list]
]
interface interface-name
{
interface-definition
}
[ encode [ , op-attribute-list] ] proc-name
typedef [encode [ , type-attribute-list] ] type-name
-
interface-attribute-list
-
インターフェイス全体に適用される他の属性を指定します。
-
interface-name
-
インターフェイスの名前を指定します。
-
interface-definition
-
インターフェイスの定義を形成する IDL ステートメントを指定します。
-
op-attribute-list
-
プロシージャに適用されるその他の操作属性を指定します ([decode])。
-
proc-name
-
プロシージャの名前を指定します。
-
type-attribute-list
-
type-name
-
IDL ファイルで定義されている型を指定します。
[encode] 属性を使用すると、MIDL コンパイラは、データをバッファーにシリアル化するためにアプリケーションが使用できるコードを生成します。 [decode] 属性は、バッファーからデータをマーシャリング解除するためのコードを生成します。
ACF の [encode] 属性と [decode] 属性を使用して、インターフェイスの IDL ファイルで定義されているプロシージャまたは型のシリアル化コードを生成します。 インターフェイス属性として使用する場合、[ エンコード] は 、IDL ファイルで定義されているすべての型とプロシージャに適用されます。 操作属性として使用する場合、[ エンコード] は 指定したプロシージャにのみ適用されます。 型属性として使用する場合、[ encode] は 指定した型にのみ適用されます。
[encode] 属性または [decode] 属性がプロシージャに適用されると、MIDL コンパイラは、リモート ルーチンに対してリモート スタブが生成されるのと同様の方法でシリアル化スタブを生成します。 プロシージャは、リモート プロシージャまたはシリアル化プロシージャのいずれかになりますが、両方にすることはできません。 生成されたルーチンのプロトタイプが STUB に送信されます。スタブ自体がSTUB_C.C ファイルに入っている間に H ファイル。
MIDL コンパイラは、[encode] 属性が適用される型ごとに 2 つの関数を生成し、[decode] 属性が適用される型ごとに 1 つの追加関数を生成します。 たとえば、MyType という名前のユーザー定義型の場合、コンパイラは、MyType_Encode、MyType_Decode、MyType_AlignSize関数のコードを生成します。 これらの関数の場合、コンパイラはプロトタイプを STUB に書き込みます。STUB_C.C への H とソース コード。
シリアル化ハンドルとデータのエンコードまたはデコードの詳細については、「 Serialization Services」を参照してください。
/*
ACF file example;
Assumes MyType1, MyType2, MyType3, MyProc1, MyProc2, MyProc3 defined
in IDL file
MyType1, MyType2, MyProc1, MyProc2 have encode and decode
serialization support
MyType3 and MyProc3 have encode serialization support only
*/
[
encode,
implicit_handle(handle_t bh)
]
interface regress
{
typedef [ decode ] MyType1;
typedef [ encode, decode ] MyType2;
[ decode ] MyProcc1();
[ encode ] MyProc2();
}