none
PIPE通信のWriteFileがエラーコード59(ERROR_UNEXP_NET_ERR:予期しないネットワーク エラーが発生しました。)で失敗する RRS feed

  • 全般的な情報交換

  • お世話になります。

    掲題の問題が

     WindowsNT(PIPE通信クライアント)⇒Windows10(PIPE通信サーバ)

    という環境で発生します。

    プログラム自体はシンプルで以下のような構成です。

    ・サーバ側

     PIPE作成

     接続待ち

     読み込み

    ・クライアント側

     PIPEオープン

     書き込み

    // サーバ側
    hPipe = CreateNamedPipe([PIPEのURL],
                            PIPE_ACCESS_DUPLEX | FILE_FLAG_WRITE_THROUGH,
                            PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
                            1,
                            1024,
                            1024,
                            100,
                            NULL);
    ConnectNamedPipe(hPipe, NULL);
    ReadFile(hPipe, buff, sizeof(buff), &dwBytes, NULL);
    
    // クライアント側
    hPipe = CreateFile([PIPEのURL],
                       GENERIC_READ | GENERIC_WRITE,
                       0,
                       NULL,
                       OPEN_EXISTING,
                       FILE_ATTRIBUTE_NORMAL 
                       NULL);
    WriteFile(hPipe, buff, sizeof(buff), NULL, NULL);

    上記コードをVC++6.0 SP6でビルドしPIPE通信を行っていました。

    このプログラムは以下環境では正常に動作します。

     クライント ⇒ サーバ

     WindowsNT ⇒ WindowsNT

     WindowsNT ⇒ WindowsXP

     WindowsNT ⇒ Windows7

     WindowsXP ⇒ WindowsNT

     Windows7 ⇒ WindowsNT

     Windows10 ⇒ WindowsNT

    しかし、「WindowsNT ⇒ Windows10」という環境においてのみ、クライアント側の書き込み(WriteFile)が

     59(ERROR_UNEXP_NET_ERR:予期しないネットワーク エラーが発生しました。)

    というエラーで失敗します。

    サーバ側でパケットをキャプチャすると、SMBプロトコルでクライアント側からのWrite要求に対して、サーバ側が以下のエラー応答をしています。

     Error Class: Server Error (0x02)

     Error Code: Non specific error code

    エラーが発生する環境において、Windows10では「SMB1.0/CIFS」「NETBIOS Over TCP/IP」を有効にしており、WindowsNTからWindows10側の共有フォルダにアクセスでき、共有フォルダへのファイルの作成、コピー等ができる状態です。

    従って、SMBプロトコルとしては「WindowsNT ⇒ Windows10」という通信ができているにもかかわらず、SMBプロトコルを使用したPIPE通信のみエラーになる状態です。

    また、Windows10ではUACを無効にし、WindowNTおよびWindows10には同じユーザ名/パスワードを設定した管理者アカウントでログインしているので、アクセス権関連のエラーではないと考えています。

    「Windows10 ⇒ WindowsNT」という環境では正常動作するので、Windows10のSMB通信の問題ではないかと考えています。

    VC6.0、WindowsNTともにサポート切れであることは承知していますが、この辺りの情報、調査方法についてご存じの方がいればご教授願います。

    2019年6月19日 5:27