0

NotifyRouteChange() に登録し、非同期呼び出しで待機するアプリケーションがあります。Windows OS によるルーティング テーブルの変更に基づいて、この API がコールバックされることがわかっています。Windowsがこの機能をトリガーする理由について、さらに情報が必要ですか?

私の環境の 1 つである Win 7 Professional では、1 秒以内に 100 件の IP アドレス変更通知が届きます。それを減らす方法は?

ありがとう、サラバナ

4

2 に答える 2

0

環境の問題のようです。

利用した

   ret = NotifyAddrChange(handle, &overlap);
   ret = NotifyRouteChange(handle, &overlap)); 

次に、これらの登録を監視するためのコールバック機能があります。IP アドレスに変更があった場合、これらのコールバックが開始されました。そして、これらのコールバック関数は、これらの通知を他のスレッドに渡して処理し、同じ API に再度登録します。

この問題は、すべてのマシンで発生するわけではなく、特定の環境で発生します。私は何の問題も起こさないネットワークを持っています。

于 2015-03-12T03:32:21.303 に答える
0

待機可能なタイマーを使用してイベントを抑制し、最後の NW 変更イベントから最短時間後にイベント ハンドラーが起動するようにします。

基本的に、アドレス/ルート変更イベントを受け取ったとき:

  1. 待機可能なタイマーを設定します (5 秒間) (SetWaitableTimer)
  2. アドレス/ルート イベントがシグナル状態になるたびに、既存の待機可能なタイマー (CancelWaitableTimer) をキャンセルし、1 に進みます。
  3. 待機可能時間がシグナル状態になった場合は、最後の 5 秒間にアドレス/ルート変更イベントが発生していないことを意味します。ここで NW 変更ハンドラを呼び出します。
于 2017-02-13T14:05:26.287 に答える