<Return[S]><Top>

SetNamedPipeHandleState

Declare Function Api_SetNamedPipeHandleState& Lib "kernel32" Alias "SetNamedPipeHandleState" (ByVal hNamedPipe&, lpMode&, lpMaxCollectionCount&, lpCollectDataTimeout&)

Declare Function SetNamedPipeHandleState Lib "kernel32" Alias "SetNamedPipeHandleState" (ByVal hNamedPipe As Long, lpMode As Long, lpMaxCollectionCount As Long, lpCollectDataTimeout As Long) As Long

指定された名前付きパイプの読み取りモードやブロッキングモードを設定する。指定されたハンドルが名前付きパイプのクライアント側であり、その名前付きパイプのサーバープロセスがリモートコンピュータ上に存在する場合、この関数を使ってローカルバッファリングを制御することもできる。

パラメータ

hNamedPipe
    名前付きパイプのインスタンスのハンドルを指定する。このパラメータで、CreateNamedPipe 関数が返したパイプのサーバー側のハンドル、

    または、 関数が返したパイプのクライアント側のハンドルを指定する。このハンドルは、名前付きパイプに対する GENERIC_WRITE アクセ

    スを持っていなければならない。
    Windows NT/2000:このパラメータで、CreatePipe 関数が返した名前なしパイプのハンドルを指定することもできる。
lpMode
    新しく設定するべきモードを保持している、1 個の変数へのポインタを指定する。このモードは、読み取りモードフラグと待機モードフラグを組

    み合わせたものである。モードを設定しない場合、NULL を指定する。読み取りモードとして、次の値のいずれかを指定する。

    値                                               

説明                                                                                                               

    PIPE_READMODE_BYTE

 

パイプのデータを、バイトストリームのデータとして読み取る。読み取りモードのフラグを指定しなかった場合、既定でこのモードに設定される。

    PIPE_READMODE_MESSAGE

 

パイプのデータを、メッセージストリームのデータとして読み取る。バイトタイプのパイプに対してこのフラグを指定すると、この関数は失敗する。

    待機モードとして、次の値のいずれかを指定する。

    値                        

説明                                                                                                                                      

    PIPE_WAIT

 

 

ブロッキングモードを有効にする。このモードでは、 関数は読み取るデータが発生するまで、 関数はデータがすべて書き込まれるまで、ConnectNamedPipe 関数はクライアントに接続されるまで制御を返さない。このモードを使うと、特定の状況では、クライアントプロセスが何か操作を行うまで長い時間待機する可能性がある。ブロックキングモードのフラグを指定しなかった場合、既定でこのモードに設定される。

    PIPE_NOWAIT

 

 

ノンブロッキングモードを有効にする。このモードでは、ReadFile、WriteFile、ConnectNamedPipe の各関数は必ず、即座に制御を返す。ノンブロッキングモードは、Microsoft LAN Manager 2.0 との互換性を保つ目的でサポートされている。名前付きパイプで非同期入出力(I/O)を行うために使うことは避ける。

lpMaxCollectionCount
    1 個の変数へのポインタを指定する。この変数で、サーバーへの送信を行う前にクライアントコンピュータに蓄積するべきデータの最大バイト

    数を指定する。hNamedPipe パラメータで指定したパイプハンドルが名前付きパイプのサーバー側である場合や、クライアントプロセスとサー

    バープロセスが同じコンピュータ上にある場合は、NULL を指定しなければならない。クライアントプロセスが CreateFile 関数を使ってハンド

    ルを作成する際に FILE_FLAG_WRITE_THROUGH フラグを指定していた場合、このパラメータは無視される。最大バイト数を設定しな

    い場合、NULL を指定する。
lpCollectDataTimeout
    1 個の変数へのポインタを指定する。この変数で、リモートの名前付きパイプがネットワーク経由で情報を転送する前に待機できる最大の時

    間を、ミリ秒(ms)単位で指定する。hNamedPipe パラメータで指定したパイプハンドルが名前付きパイプのサーバー側である場合や、クライ

    アントプロセスとサーバープロセスが同じコンピュータ上にある場合は、NULL を指定しなければならない。クライアントプロセスが 関数を使っ

    てハンドルを作成する際に FILE_FLAG_WRITE_THROUGH フラグを指定していた場合、このパラメータは無視される。待機時間を設定

    しない場合、NULL を指定する。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る拡張エラー情報を取得するには、 関数を使う。