Client-Side パイプの実装
クライアント アプリケーションは、データ転送中にクライアント スタブが呼び出す次の手順を実装する必要があります。
- プル プロシージャ (入力パイプの場合)
- プッシュ プロシージャ (出力パイプの場合)
- 転送データのバッファーを割り当てるアロケーション プロシージャ
これらのプロシージャはすべて、MIDL で生成されたヘッダー ファイルで指定された引数を使用する必要があります。 さらに、クライアント アプリケーションには、データを検索または配置する場所を識別する状態変数が必要です。
アロケーション プロシージャは、必要に応じて単純または複雑にすることもできます。 たとえば、スタブが関数を呼び出すたびに同じバッファーへのポインターを返したり、毎回異なる量のメモリを割り当てたりできます。 データが既に適切な形式 (パイプ要素の配列など) である場合は、アロケーション プロシージャと pull プロシージャを調整して、データが既に含まれているバッファーを割り当てることができます。 その場合、pull プロシージャは空のルーチンである可能性があります。
バッファーの割り当てはバイト単位である必要があります。 一方、プッシュ プロシージャとプル プロシージャでは、サイズがバイト単位で定義された方法に依存する要素を操作します。
このセクションでは、次のセクションで入力パイプと出力パイプのクライアント実装について説明します。