CreatePipe

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

CreatePipe hReadPipe, hWritePipe, lpPipeAttributes, nSize

hReadPipe : [intptr] パイプの読み取りハンドルを受け取る変数へのポインタ。
hWritePipe : [intptr] パイプの書き込みハンドルを受け取る変数へのポインタ。
lpPipeAttributes : [var] 返されるハンドルが子プロセスに継承可能かどうかを決定する SECURITY_ATTRIBUTES 構造体へのポインタ。lpPipeAttributes が NULL の場合、ハンドルは継承できない。
nSize : [int] パイプのバッファサイズ(バイト単位)。サイズはあくまで推奨値で、システムはこの値を使って適切なバッファリング機構を計算する。このパラメータがゼロの場合、システムは既定のバッファサイズを使用する。

(プラグイン / モジュール : kernel32.dll)

解説

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

[戻り値]
関数が成功した場合、戻り値はゼロ以外。関数が失敗した場合、戻り値はゼロ。拡張エラー情報を取得するには GetLastError を呼ぶ。

[備考]
CreatePipe はパイプを作成し、指定されたパイプサイズをストレージバッファに割り当てる。CreatePipe
はまた、ReadFile および WriteFile
関数の後続呼び出しでバッファに読み書きするためにプロセスが使うハンドルを作成する。プロセスはパイプから読み取るために、ReadFile
関数の呼び出しで読み取りハンドルを使う。ReadFile は次のいずれかが真のときに戻る:
パイプの書き込み端で書き込み操作が完了した、要求されたバイト数が読み取られた、またはエラーが発生した。プロセスが WriteFile
を使って匿名パイプに書き込むとき、書き込み操作はすべてのバイトが書き込まれるまで完了しない。すべてのバイトが書き込まれる前にパイプバッファが一杯になると、別のプロセスやスレッドが
ReadFile を使ってバッファ領域を空けるまで WriteFile
は戻らない。匿名パイプは一意の名前を持つ名前付きパイプを使って実装されている。したがって、名前付きパイプへのハンドルを必要とする関数に匿名パイプへのハンドルをしばしば渡せる。CreatePipe
が失敗した場合、出力パラメータの内容は不定である。この場合、その内容について何も仮定すべきではない。パイプが使用するリソースを解放するため、アプリケーションはハンドルが不要になったら常に閉じるべきである。これは
CloseHandle
関数を呼ぶか、インスタンスハンドルに関連付けられたプロセスが終了することで達成される。パイプのインスタンスは複数のハンドルに関連付けられる可能性がある。パイプのインスタンスは、その名前付きパイプの最後のインスタンスハンドルが閉じられると常に削除される。

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs