pipe 属性
パイプ型コンストラクターを使用すると、型指定されたデータのオープンエンド ストリームをリモート プロシージャ 呼び出し経由で送信できます。
typedef pipe element-type pipe-declarator;
-
element-type
-
転送バッファー内の 1 つの要素のサイズを定義します。 要素型には、基本型、predefined_type、構造体、32b 列挙型、または型識別子を指定できます。 以下の「備考」で説明するように、 element_typesにはいくつかの制限が適用されます。
-
pipe-declarator
-
1 つ以上の識別子または識別子へのポインターを指定します。 複数の宣言子をコンマで区切ります。
パイプ型コンストラクターを使用して、双方向にデータを送信できます。 [入力] パイプ パラメーターを使用すると、サーバーはリモート プロシージャ 呼び出し中にクライアントからデータ ストリームをプルできます。 [out] パイプ パラメーターを使用すると、サーバーはデータ ストリームをクライアントにプッシュバックできます。 データ ストリームをプッシュおよびプルし、データのグローバル バッファーを割り当てるクライアント側ルーチンを指定します。 クライアントとサーバーのスタブ ルーチンは、データのマーシャリングとマーシャリング解除を行い、バッファーへの参照をアプリケーションに渡します。
パイプには次の制限が適用されます。
- パイプ要素には、ポインター、準拠または変化する配列、ハンドル、またはコンテキスト ハンドルを含めることはできません。 また、パイプの Microsoft 実装では、パイプ要素に 共用体、 16b 列挙型、 または__int3264を含めることはできません。
- [transmit_as]、[represent_as]、[wire_marshal]、または [user_marshal] 属性をパイプタイプまたは要素タイプに適用することはできません。
- パイプ型は、構造体または共用体のメンバー、ポインターのターゲット、または配列の基本型にすることはできません。
- パイプ型として宣言されたデータ型は、リモート呼び出しのパラメーターとしてのみ使用できます。
- パイプ パラメーターは、値または参照 ([ref] ポインター) のいずれかの方向で渡すことができます。 ただし、参照渡しされるパイプに [ptr] 属性を適用することはできません。 [一意] または完全なポインターを持つパイプ パラメーターは、方向に関係なく指定できません。
- [オブジェクト] インターフェイスではパイプを使用できません。
- パイプ パラメーターを持つルーチンに [べき等] 属性を適用することはできません。
- シリアル化属性 [encode] と [decode] をパイプで使用することはできません。
- 既定では、パイプを含む [auto_handle] 属性では、自動ハンドルを使用できません。
注意
MIDL コンパイラでは、 /Oif モードでのみパイプがサポートされます。
パイプ パラメーターを使用したルーチンの実装の詳細については、「RPC プログラマー ガイドとリファレンス」の 「パイプ 」を参照してください。
typedef pipe unsigned char UCHAR_PIPE1, UCHAR_PIPE2;
//SIMPLE_STRUCT defined elsewhere
typedef pipe SIMPLE_STRUCT SIMPLE_STRUCT_PIPE;