次の方法で共有


CreatePipe 関数 (namedpipeapi.h)

匿名パイプを作成し、パイプの読み取りと書き込みの末尾にハンドルを返します。

構文

BOOL CreatePipe(
  [out]          PHANDLE               hReadPipe,
  [out]          PHANDLE               hWritePipe,
  [in, optional] LPSECURITY_ATTRIBUTES lpPipeAttributes,
  [in]           DWORD                 nSize
);

パラメーター

[out] hReadPipe

パイプの読み取りハンドルを受け取る変数へのポインター。

[out] hWritePipe

パイプの書き込みハンドルを受け取る変数へのポインター。

[in, optional] lpPipeAttributes

返されたハンドルを子プロセスによって継承できるかどうかを決定する SECURITY_ATTRIBUTES 構造体へのポインター。 lpPipeAttributes NULL場合、ハンドルを継承できません。

構造体の lpSecurityDescriptor メンバーは、新しいパイプのセキュリティ記述子を指定します。 lpPipeAttributes が NULL場合、パイプは既定のセキュリティ記述子を取得します。 パイプの既定のセキュリティ記述子の ACL は、作成者のプライマリ トークンまたは偽装トークンから取得されます。

[in] nSize

パイプのバッファーのサイズ (バイト単位)。 サイズは単に提案です。システムは値を使用して適切なバッファリング メカニズムを計算します。 このパラメーターが 0 の場合、システムは既定のバッファー サイズを使用します。

戻り値

関数が成功した場合、戻り値は 0 以外です。

関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

CreatePipe 、指定したパイプ サイズをストレージ バッファーに割り当てて、パイプを作成します。 CreatePipe では、ReadFile および WriteFile 関数への後続の呼び出しで、プロセスがバッファーの読み取りと書き込みに使用するハンドル も作成されます。

パイプから読み取るために、プロセスは、ReadFile 関数の呼び出しで読み取りハンドルを使用します。 ReadFile は、パイプの書き込み終了時に書き込み操作が完了した場合、要求されたバイト数が読み取られた場合、またはエラーが発生した場合に返されます。

プロセスが WriteFile を使用して匿名パイプに書き込む場合、書き込み操作は、すべてのバイトが書き込まれるまで完了しません。 すべてのバイトが書き込まれる前にパイプ バッファーがいっぱいになった場合、WriteFile は、別のプロセスまたはスレッドが readFile 使用してバッファー領域を増やすまで戻りません。

匿名パイプは、一意の名前を持つ名前付きパイプを使用して実装されます。 そのため、多くの場合、名前付きパイプへのハンドルを必要とする関数に匿名パイプにハンドルを渡すことができます。

CreatePipe 失敗した場合、出力パラメーターの内容は不確定になります。 このイベントでは、コンテンツに関する想定を行う必要はありません。

パイプによって使用されるリソースを解放するには、アプリケーションは、必要なくなったときにハンドルを常に閉じる必要があります。これは、CloseHandle 関数を呼び出すか、インスタンス ハンドルに関連付けられているプロセスが終了したときに実行されます。 パイプのインスタンスには、複数のハンドルが関連付けられている場合があることに注意してください。 名前付きパイプのインスタンスに対する最後のハンドルが閉じられると、パイプのインスタンスは常に削除されます。

例については、「リダイレクトされた入出力を使用した子プロセスの作成」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー namedpipeapi.h
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

パイプ関数 を する

パイプの概要

ReadFile の

SECURITY_ATTRIBUTES

WriteFile の