transmit_as 属性

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

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];と使用法属性 [string] と[ignore]. 複数の属性をコンマで区切ります。

type-specifier

基本型構造体共用体列挙型、または型識別子を指定します。 オプションのストレージ仕様の前に 型指定子を指定できます。

declarator-list

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

type-id

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

注釈

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

送信される型 xmit 型 は、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

ref

文字列

構造 体

switch_type

Typedef

連合

一意

void