2

Windows API関数NetShareEnumまたはWNetEnumResourceを介してネットワーク共有のリストを取得するには、要求を完了するのに最大60(!!!)秒かかります。多分誰かがそれがとても遅い理由を知っていますか?たぶん、API /ライブラリ(SMBなど)を使用して、共有を適切な速度で列挙することは可能ですか?

4

2 に答える 2

1

Linuxと同じ共有を列挙することです(LiveCDを使用できます)。私のテストでは、ルーターが可能なネットワーク共有も要求されることを確認しました(私のルーターはLinuxを実行しており、ISPから提供されたものなので、一般的かもしれません)。

したがって、Windowsがルーターにネットワーク共有を長時間要求し(これは発生しないはずです...)、共有で応答するのを同期的に待機している可能性があります。

(このAPIを同期するように設計した天才は誰でしたか?)

于 2012-08-04T13:32:41.977 に答える
1

非常に遅い理由については、ホストが利用できないか、何らかの理由(たとえば、ログイン資格情報が必要)で応答しない場合、Windowsは、ネットワークで既知のすべての共有について、タイムアウト制限を超えるのを待ちます(ホストごとに複数)。Windowsのデフォルトのタイムアウトはめちゃくちゃ長いです。

タイムアウトを50ms(LANでは決して超えてはならない)のようなものに減らすことはここで役立つかもしれません、最終的にそれはテストされたホストの量に依存します。

申し訳ありませんが、APIの代替案については仕方がありません。

于 2011-02-07T08:36:37.007 に答える