<Return[C]><Top>

CallNamedPipe

Declare Function Api_CallNamedPipe& Lib "kernel32" Alias "CallNamedPipeA" (ByVal lpNamedPipeName$, lpInBuffer As Any, ByVal nInBufferSize&, lpOutBuffer As Any, ByVal nOutBufferSize&, lpBytesRead&, ByVal nTimeOut&)

Declare Function CallNamedPipe Lib "kernel32" Alias "CallNamedPipeA" (ByVal lpNamedPipeName As String, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesRead As Long, ByVal nTimeOut As Long) As Long

メッセージタイプのパイプに接続し(パイプのインスタンスが利用可能ではない場合、待機する)、そのパイプの読み書きを行い、最後にパイプを閉じる。

パラメータ
lpNamedPipeName
    パイプの名前を保持している、NULL で終わる文字列へのポインタを指定する。
lpInBuffer
    パイプへ書き込むべきデータを保持している、1 個のバッファへのポインタを指定する。
nInBufferSize
    書き込みバッファのサイズを、バイト単位で指定する。
lpOutBuffer
    バッファへのポインタを指定する。関数から制御が返ると、このバッファに、パイプから読み取ったデータが格納される。
nOutBufferSize
    読み取りバッファのサイズを、バイト単位で指定する。
lpBytesRead
    1 個の変数へのポインタを指定する。関数から制御が返ると、この変数に、パイプから読み取ったデータのバイト数が格納される。
nTimeOut
    名前付きパイプが利用可能になるまで待機する時間を、ミリ秒(ms)単位で指定する。

    数値以外に、次の値のいずれかを指定することもできる。

    値                                                     

意味                                                                                                                     

    NMPWAIT_NOWAIT

 

名前付きパイプが利用可能になるのを待機しない。名前付きパイプが利用できない場合、エラーが返る。

    NMPWAIT_WAIT_FOREVER

利用可能になるまで待機し続ける。

    NMPWAIT_USE_DEFAULT_WAIT

CreateNamedPipe 関数を呼び出したときに指定した、既定のタイムアウト値を使う。


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

解説
    CallNamedPipe 関数を呼び出すことは、 関数、(CreateFile がパイプを即座に開けない場合は WaitNamedPipe 関数)、

    TransactNamedPipe 関数、CloseHandle 関数を順に呼び出すことに相当する。この場合、CreateFile 関数を呼び出す際に、アクセス権

    のフラグとして GENERIC_READ | GENERIC_WRITE、ハンドルの継承フラグで 0(FALSE)、共有モードで 0(このパイプを共有しないこと

    を指示)を指定することに相当する。
    サーバープロセスがこのパイプへ書き込んだメッセージの長さが、lpOutBuffer で指定した値より大きかった場合、この関数は 0(FALSE)を

    返し、GetLastError 関数は ERROR_MORE_DATA を返す。格納できなかった、メッセージの残りの部分は破棄され

    る。CallNamedPipe 関数は、制御を返す前に、パイプのハンドルを閉じるからである。
    CallNamedPipe 関数はメッセージタイプのパイプ専用である。バイトタイプのパイプを指定すると、失敗する。