CreatePipe 関数を使用してパイプを作成する方法

CreatePipe 関数は、匿名パイプを作成するために使用されます。その宣言は次のとおりです。

BOOL CreatePipe(
  PHANDLE               hReadPipe,
  PHANDLE               hWritePipe,
  LPSECURITY_ATTRIBUTES lpPipeAttributes,
  DWORD                 nSize
);

パラメータ説明

  1. ReadPipe: 出力パラメーター、パイプの読み取り側のハンドルへのポインターを受け取ります。
  2. HWritePipe: 出力パラメータ。パイプへの書き込みエントリのハンドルを受け取ります。
  3. lpPipeAttributes: セキュリティー属性へのポインタ。 NULL に設定して既定のセキュリティーを使用できます。
  4. サイズ:パイプバッファのサイズをバイト単位で指定します。0に設定するとデフォルトのサイズを使用します。

以下に、CreatePipe 関数を使用してパイプを作成するサンプル コードを示します。

#include <windows.h>

int main() {
    HANDLE hReadPipe, hWritePipe;
    SECURITY_ATTRIBUTES sa;
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.lpSecurityDescriptor = NULL;
    sa.bInheritHandle = TRUE;

    // 创建管道
    if (!CreatePipe(&hReadPipe, &hWritePipe, &sa, 0)) {
        printf("Failed to create pipe.\n");
        return 1;
    }

    // 使用管道进行进程间通信
    // ...

    // 关闭管道
    CloseHandle(hReadPipe);
    CloseHandle(hWritePipe);
    
    return 0;
}

パイプを作成したら、返す読み取り端と書き込み端のハンドルでプロセス間通信することができます。使用後はCloseHandle関数でパイプハンドルを閉じます。

bannerAds