SetNamedPipeHandleState 関数 (namedpipeapi.h)
指定した名前付きパイプの読み取りモードとブロック モードを設定します。 指定したハンドルが名前付きパイプのクライアント側にあり、名前付きパイプ サーバー プロセスがリモート コンピューター上にある場合は、関数を使用してローカル バッファリングを制御することもできます。
構文
BOOL SetNamedPipeHandleState(
[in] HANDLE hNamedPipe,
[in, optional] LPDWORD lpMode,
[in, optional] LPDWORD lpMaxCollectionCount,
[in, optional] LPDWORD lpCollectDataTimeout
);
パラメーター
[in] hNamedPipe
名前付きパイプ インスタンスへのハンドル。 このパラメーターには、 CreateNamedPipe 関数によって返されるパイプのサーバー側へのハンドル、または CreateFile 関数によって返されるパイプのクライアント側へのハンドルを指定できます。 ハンドルは、書き込み専用パイプまたは読み取り/書き込みパイプの名前付きパイプにGENERIC_WRITEアクセスできる必要があります。または、読み取り専用パイプのGENERIC_READとFILE_WRITE_ATTRIBUTESアクセス権を持っている必要があります。
このパラメーターは、 CreatePipe 関数によって返される匿名パイプへのハンドルにすることもできます。
[in, optional] lpMode
新しいパイプ モード。 モードは、読み取りモード フラグと待機モード フラグの組み合わせです。 モードが設定されていない場合、このパラメーターは NULL にすることができます。 次のいずれかのモードを指定します。
次のいずれかの待機モードを指定できます。
モード | 意味 |
---|---|
|
ブロック モードが有効になっています。 待機モード フラグが指定されていない場合、このモードは既定です。 ReadFile、WriteFile、または ConnectNamedPipe 関数でブロッキング モードのパイプ ハンドルが指定されている場合、読み取るデータ、すべてのデータが書き込まれる、またはクライアントが接続されるまで、操作は完了しません。 このモードを使用すると、クライアント プロセスがアクションを実行する状況によっては無期限に待機することを意味する場合があります。 |
|
非ブロッキング モードが有効になっています。 このモードでは、 ReadFile、 WriteFile、 ConnectNamedPipe は常にすぐに返されます。 非ブロッキング モードは Microsoft LAN Manager バージョン 2.0 との互換性のためにサポートされており、名前付きパイプを使用して非同期入出力 (I/O) を実現するために使用しないでください。 |
[in, optional] lpMaxCollectionCount
サーバーへの転送前にクライアント コンピューターで収集された最大バイト数。 指定されたパイプ ハンドルが名前付きパイプのサーバー側にある場合、またはクライアントプロセスとサーバープロセスが同じマシン上にある場合、このパラメーターは NULL である必要があります。 クライアント プロセスが CreateFile 関数でハンドルの作成時にFILE_FLAG_WRITE_THROUGH フラグを指定した場合、このパラメーターは無視されます。 コレクション数が設定されていない場合、このパラメーターは NULL にすることができます。
[in, optional] lpCollectDataTimeout
リモートの名前付きパイプがネットワーク経由で情報を転送するまでの最大時間 (ミリ秒単位)。 指定されたパイプ ハンドルが名前付きパイプのサーバー側にある場合、またはクライアントとサーバーのプロセスが同じコンピューター上にある場合、このパラメーターは NULL である必要があります。 このパラメーターは、クライアント プロセスがハンドルの作成時に CreateFile 関数でFILE_FLAG_WRITE_THROUGH フラグを指定した場合は無視されます。 コレクション数が設定されていない場合、このパラメーターは NULL にすることができます。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
Windows 10バージョン 1709: パイプは、アプリ コンテナー内でのみサポートされます。つまり、1 つの UWP プロセスから、同じアプリの一部である別の UWP プロセスまでです。 また、名前付きパイプでは、パイプ名の構文 \\.\pipe\LOCAL\
を使用する必要があります。
例
例については、「 名前付きパイプ クライアント」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | namedpipeapi.h |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |