<Return[D]><Top>

DisconnectNamedPipe

Declare Function Api_DisconnectNamedPipe& Lib "kernel32" Alias "DisconnectNamedPipe" (ByVal hNamedPipe&)

Declare Function DisconnectNamedPipe Lib "kernel32" Alias "DisconnectNamedPipe" (ByVal hNamedPipe As Long) As Long

クライアントプロセスから、名前付きパイプのインスタンスのサーバー側を接続解除する。

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

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

解説
    名前付きパイプのクライアント側が開いている場合、DisconnectNamedPipe 関数は、クライアント側を強制的に閉じる。クライアント側が次

    にそのパイプにアクセスしようとすると、エラーが発生する。DisconnectNamedPipe 関数によってパイプから強制的に接続解除されたクライ

    アントは、CloseHandle 関数を使ってパイプのクライアント側を閉じることができる。
    サーバープロセスがパイプのインスタンスとの接続を解除すると、パイプ内のまだ読み取られていないデータは破棄される。接続を解除する前

    にサーバー側が FlushFileBuffers 関数を呼び出すと、データが失われないことを保証できる。この関数は、クライアントプロセスがすべての

    データを読み取るまで制御を返さない。
    あるクライアントとの接続に利用していたパイプハンドルを再利用して、他のクライアントとの接続を行う場合、サーバープロセスは最初に

    DisconnectNamedPipe 関数を使って従来のクライアントとの接続を解除しなければならない。その後、ConnectNamedPipe 関数を使っ

    て、他のクライアントへ接続できる。