transmit_as 属性

[transmit_as] 属性は、クライアントおよびサーバー アプリケーションが操作する提示型である type-id*,* を送信型 xmit-type に関連付けるようにコンパイラに指示します。

typedef [transmit_as(xmit-type) [[ , type-attribute-list ]] ] type-specifier declarator-list; 

void __RPC_USER type-id_to_xmit (
  type-id __RPC_FAR *,
  xmit-type __RPC_FAR * __RPC_FAR *);
void __RPC_USER type-id_from_xmit (
  xmit-type __RPC_FAR *,
  type-id __RPC_FAR *);
void __RPC_USER type-id_free_inst (
  type-id __RPC_FAR *);
void __RPC_USER type-id_free_xmit (
  xmit-type__RPC_FAR *);

パラメーター

xmit-type

クライアントとサーバーの間で転送されるデータ型を指定します。

type-attribute-list

型に適用される 1 つ以上の属性を指定します。 有効な型属性には、[handle]、[switch_type]が含まれます。ポインター属性 [ref][unique]、または [ptr];と usage 属性 [string][ignore]。 複数の属性をコンマで区切ります。

type-specifier

基本型構造体共用体列挙型、または型識別子を指定します。 省略可能なストレージ仕様は 、型指定子の前に置くことができます。

declarator-list

識別子、ポインター宣言子、配列宣言子など、標準の C 宣言子を指定します。 詳細については、「 配列とSized-Pointer属性配列、および 配列とポインター」を参照してくださいdeclarator-list は、コンマで区切られた 1 つ以上の宣言子で構成されます。 関数宣言子のパラメーター宣言子 (パラメーター名など) は省略可能です。

type-id

クライアント アプリケーションとサーバー アプリケーションに表示されるデータ型の名前を指定します。

注釈

[transmit_as] 属性を使用するには、提示された型と送信される型の間でデータを変換するルーチンを指定する必要があります。これらのルーチンは、変換されたデータを保持するために使用されるメモリも解放する必要があります。 [transmit_as] 属性は、ユーザー指定の変換ルーチンを呼び出すようにスタブに指示します。

送信される型 xmit-type は、MIDL 基本型、定義済みの型、または型識別子に解決する必要があります。 詳細については、「 MIDL 基本型」を参照してください

ユーザーは、次のルーチンを指定する必要があります。

ルーチン名 説明
type-id**_to_xmit** 提示された型から送信型にデータを変換します。 このルーチンは、送信された型と、送信された型のポインターによって参照されるすべてのデータにメモリを割り当てます。
type-id**_from_xmit** データを送信された型から提示された型に変換します。 このルーチンは、提示された型のポインターによって参照されるデータにメモリを割り当てる役割を担います。 RPC は、型自体にメモリを割り当てます。
type-id**_free_inst** 提示された型のポインターによって参照されるデータに割り当てられたメモリを解放します。 RPC は、型自体のメモリを解放します。
type-id**_free_xmit** 呼び出し元が送信された型と、転送された型のポインターによって参照されるデータに使用するストレージを解放します。

 

 

クライアント スタブは type-id**_to_xmit** を呼び出して、送信される型の領域を割り当て、データを xmit 型 のオブジェクトに変換します。サーバー スタブは、元のデータ型の領域を割り当て、 type-id**_from_xmit** を呼び出して、送信された型から提示された型にデータを変換します。

アプリケーション コードから戻ると、サーバー スタブは type-id**_free_inst** を呼び出して、サーバー側の type-id のストレージの割り当てを解除します。 クライアント スタブは type-id**_free_xmit** を呼び出して、クライアント側の xmit 型 ストレージの割り当てを解除します。

次の型に [transmit_as] 属性を指定することはできません。

  • コンテキスト ハンドル ( [context_handle] 型属性を持つ型と、[ context_handle] 属性のパラメーターとして使用される型)
  • パイプまたはパイプから派生した型
  • パイプ定義の基本型として使用されるデータ型
  • ポインターまたはポインターに解決されるパラメーター
  • 適合する、変化する、または開いている配列であるパラメーター
  • 適合する配列を含む構造体
  • 定義済みの型 handle_tvoid

送信される型は、次の制限に準拠している必要があります。

  • ポインターにしたり、ポインターを含めたりすることはできません。
  • パイプにしたり、パイプを含めたりすることはできません。

typedef struct _TREE_NODE_TYPE 
{ 
    unsigned short data; 
    struct _TREE_NODE_TYPE * left; 
    struct _TREE_NODE_TYPE * right; 
} TREE_NODE_TYPE; 
 
typedef [transmit_as(TREE_XMIT_TYPE)] TREE_NODE_TYPE * TREE_TYPE; 
 
void __RPC_USER TREE_TYPE_to_xmit( 
    TREE_TYPE __RPC_FAR * , 
    TREE_XMIT_TYPE __RPC_FAR * __RPC_FAR *); 
 
void __RPC_USER TREE_TYPE_from_xmit ( 
    TREE_XMIT_TYPE __RPC_FAR *, 
    TREE_TYPE __RPC_FAR *); 
 
void __RPC_USER TREE_TYPE_free_inst( 
    TREE_TYPE __RPC_FAR *); 
 
void __RPC_USER TREE_TYPE_free_xmit( 
    TREE_XMIT_TYPE __RPC_FAR *);

関連項目

配列

MIDL 基本型

context_handle

Enum

処理

handle_t

インターフェイス定義 (IDL) ファイル

無視

Ptr

参考

文字列

構造 体

switch_type

Typedef

連合

一意

無効