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
構造体の lpSecurityDescriptor メンバーは、新しいパイプのセキュリティ記述子を指定します。 lpPipeAttributes
[in] nSize
パイプのバッファーのサイズ (バイト単位)。 サイズは単に提案です。システムは値を使用して適切なバッファリング メカニズムを計算します。 このパラメーターが 0 の場合、システムは既定のバッファー サイズを使用します。
戻り値
関数が成功した場合、戻り値は 0 以外です。
関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError
備考
CreatePipe
パイプから読み取るために、プロセスは、ReadFile 関数の呼び出しで読み取りハンドルを使用します。 ReadFile は、パイプの書き込み終了時に書き込み操作が完了した場合、要求されたバイト数が読み取られた場合、またはエラーが発生した場合に返されます。
プロセスが WriteFile を使用して匿名パイプに書き込む場合、書き込み操作は、すべてのバイトが書き込まれるまで完了しません。 すべてのバイトが書き込まれる前にパイプ バッファーがいっぱいになった場合、
匿名パイプは、一意の名前を持つ名前付きパイプを使用して実装されます。 そのため、多くの場合、名前付きパイプへのハンドルを必要とする関数に匿名パイプにハンドルを渡すことができます。
CreatePipe
パイプによって使用されるリソースを解放するには、アプリケーションは、必要なくなったときにハンドルを常に閉じる必要があります。これは、CloseHandle 関数を呼び出すか、インスタンス ハンドルに関連付けられているプロセスが終了したときに実行されます。 パイプのインスタンスには、複数のハンドルが関連付けられている場合があることに注意してください。 名前付きパイプのインスタンスに対する最後のハンドルが閉じられると、パイプのインスタンスは常に削除されます。
例
例については、「リダイレクトされた入出力を使用した子プロセスの作成」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | namedpipeapi.h |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
パイプ関数 を
ReadFile の
WriteFile の