DOBON.NET DOBON.NETプログラミング掲示板過去ログ

WNetAddConnection2の接続

環境/言語:[VB2008 SP1 Windiws7SP1]
分類:[.NET]

2012/12/13(Thu) 19:37:17 編集(投稿者)
2012/12/13(Thu) 19:22:57 編集(投稿者)

WNetAddConnection2でローカルな別PCにアクセスしていますが
接続をしたときにソースが10秒以上応答なしになり接続エラーが返ってきます。
すぐにもう一度再接続するとエラーなし(引数0)で接続ができます。
しばらくおいておくと接続が切れて上記のような現象が再度発生します。
エラー番号は64:ERROR_NETNAME_DELETED
以下ソース

    Dim typNetResource As New NETRESOURCE
        Dim Ret As Integer
        
        With typNetResource
            .dwScope = RESOURCE_CONNECTED
            .dwType = RESOURCETYPE_ANY
            .dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
            .lpLocalName = "" '空いている自ドライブ
            .lpRemoteName = "\\192.168.0.1\Folder"
        End With
        Ret = WNetAddConnection2(typNetResource, pstrPWD, pstrUID, CONNECT_UPDATE_PROFILE)
        If Ret = 0 Then
            'MsgBox("接続できました。")
        Else
            'MsgBox("接続できませんでした。")
        End If

以上です。上記のようなエラーを回避する方法があるのでしょうか?
また無応答時間が長いのでタイムアウト時間の操作などはできるのでしょうか?
よろしくお願い致します。
> 接続をしたときにソースが10秒以上応答なしになり接続エラーが返ってきます。
> すぐにもう一度再接続するとエラーなし(引数0)で接続ができます。
> しばらくおいておくと接続が切れて上記のような現象が再度発生します。

  検索すると、どこのサイトのコードを引用されたのかすぐに
  解りましたが・・・

  接続するPCのOSや機器によっては、同じパラメータでは
  接続できない場合があります。

  NETRESOURCE に設定されるパラメータを変更してみて状態に
  変化が発生するのか、ご確認ください。

※ DOS窓で、NET USE コマンドで同様の操作を行った場合
  はどうなりますか?

以上。
オショウさんご返答ありがとうございます。

>   接続するPCのOSや機器によっては、同じパラメータでは
>   接続できない場合があります。
接続は両方Windows7になるので問題ないと思っているのですが・・・

>   NETRESOURCE に設定されるパラメータを変更してみて状態に
>   変化が発生するのか、ご確認ください。
少し試してみましたがわかりませんでした。

>
> ※ DOS窓で、NET USE コマンドで同様の操作を行った場合
>   はどうなりますか?
システムエラー 86でアクセスできません。
調べたところLmCompatibilityLevelの問題でLevel1でつながりました。
VBソフトはLevel3でもつながるようです。

自己解決・・・になりますかね。
デバッグのときにWNetCancelConnection2を通していない部分があって
そこが原因だったと思います。
もう接続が出来ている状態で再度接続を試みるとエラーになり
その接続も切断される。更に再接続してみると今度は接続がないので
問題なく接続ができる。ということのようです。

WNetAddConnection2とWNetCancelConnection2をセット扱うようになって
から問題は発生しなくなりました。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板