2010-09-09 22 views
0

J'écris une bibliothèque de classes .Net qui doit se connecter à un réseau Wifi spécifique dont le nom est connu à l'avance, lorsque la puissance du signal dépasse un certain seuil.Peut-on réinitialiser l'intervalle de mise à jour de la force du signal Windows Native Wifi?

Tout fonctionne à merveille, SAUF que la performance est un peu inégale. J'ai un fil d'interrogation qui appelle à plusieurs reprises WlanGetAvailableNetworks(). Cette boucle fonctionne bien - WLanGetAvailableNetworks() prend généralement seulement 10-20ms. Cependant, l'attribut de force du signal dans la structure WLAN_AVAILALBLE_NETWORK semble prendre beaucoup de temps à se mettre à jour. Je l'ai vu prendre jusqu'à 100 secondes pour enregistrer une valeur mise à jour lors du déplacement vers une zone avec une force de signal connue.

que j'ai trouvé des références cryptiques à l'intervalle de mise à jour, y compris celui-ci, d'un gars qui a mis en place un géniteur NETSH: http://www.codeproject.com/KB/gadgets/WifiScanner.aspx?msg=3031431

Mais je ne l'ai pas trouvé quelqu'un qui a abordé cette question précise: Est-il possible de modifier l'intervalle de mise à jour pour la force du signal et d'autres paramètres réseau dans l'API native Wifi?

Ou, est-ce qu'il me manque un autre concept utile? (Je suis un noob complet, en ce qui concerne Wifi).

Informations environnementales Peut-être pertinente: - .Net 3.5 - XP, plus KB correctif pour WlanApi - C#/VS 2008 (4.0 et VS2010 disponible)

thanks -- 
Carl 

Répondre

2

Oops. J'ai manqué ceci dans la documentation de WLANAPI: WlanScan()! Appelez cela avant WlanGetAvailableNetworks() pour vous assurer que WlanGetAvailableNetworks() renvoie plus ou moins d'informations à jour. Selon le document (http://msdn.microsoft.com/en-us/library/ms706783(VS.85).aspx), WlanScan() se termine immédiatement et démarre une analyse asynchrone. Empiriquement, ce qui semble se passer est que le prochain WlanGetAvailableNetworks() semble stagner jusqu'à la fin de l'analyse (3.085 secondes, +/- 0.031 secondes, dans mes tests). Donc, comme le document l'indique, vous ne voulez pas faire cela n'importe où qui va paralyser les performances. En outre, trois secondes sont probablement sur la meilleure résolution temporelle possible pour les vérifications de signal wifi, au moins sur XP (Vista et 7 versions de WLANScan support WLANScan unique(), qui peut compléter plus rapidement).

Problème résolu, plus ou moins.