OVH Cloud OVH Cloud

Savoir si on est connecte a un reseau LAN

7 réponses
Avatar
Aurélien REGAT-BARREL
Hello,
J'arrive pas à savoir comment détecter que l'on est connecté à un réseau LAN
ou non (sans internet), de manière la plus portable possible. Détecter une
connexion active c'est facile, savoir si le réseau est actif / détecter que
"le cable a été débraché", heu...
Il me semble que c'est faisable en WMI. Si en Win32 pur c'est possible c'est
encore mieux.
Merci.

--
Aurélien REGAT-BARREL

7 réponses

Avatar
Christian ASTOR
Aurélien REGAT-BARREL a écrit:

J'arrive pas à savoir comment détecter que l'on est connecté à un réseau LAN
ou non (sans internet), de manière la plus portable possible. Détecter une
connexion active c'est facile, savoir si le réseau est actif / détecter que
"le cable a été débraché", heu...
Il me semble que c'est faisable en WMI. Si en Win32 pur c'est possible c'est
encore mieux.



WMI : MSNdis_MediaConnectStatus
Win32 : OID_GEN_MEDIA_CONNECT_STATUS
(IsNetworkAlive() aussi...)
Avatar
Thierry
Bonjour,

Christian ASTOR a écrit :

Win32 : OID_GEN_MEDIA_CONNECT_STATUS



cf le sample MACADDR II mais marche pas sous 98 et risque de ne pas marcher
pour les versions suivantes de Windows.

Normalement y'a un champs d'une structure d'iphlpapi qui permet d'avoir
cette info mais j'ai ouï dire qu'elle ne marche pas (ou mal) sous 9X.

--
« Always look at the bright side of the life... »
Avatar
Aurélien REGAT-BARREL
> WMI : MSNdis_MediaConnectStatus
Win32 : OID_GEN_MEDIA_CONNECT_STATUS
(IsNetworkAlive() aussi...)



Apparement, il faut attaquer la couche NDIS pour avoir cette info.
MSNdis_MediaConnectStatus semble être une classe non documentée, dispo sou
Win2K seulement. J'ai trouvé cet intéressant article :
http://www.ndis.com/faq/QA01050301/
Y aurait aussi OID_GEN_MEDIA_CONNECT_STATUS, du DDK. J'ai trouvé ça :
http://msdn.microsoft.com/library/en-us/network/hh/network/205mpinfo_29e84eb1-0ff4-48b0-8e24-b6395256d6ad.xml.asp
Le précédent article explique comment s'en servir, mais dit que sous
Win9x/Me ça se complique (Q322363).
Je suis aussi tombé sur un thread de discution à ce sujet, et il est
mentionné Win32_NetworkAdapter.NetConnectionStatus :
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_networkadapter.asp
Je n'y connais pas grand chose en WMI, mais j'aurais tendance à préférer les
classes commençant par Win32_.

J'ai déjà testé IsNetworkAlive, mais ça ne permet que de détecter une carte
réseau LAN active, et non pas un connexion effective à un reseau LAN
(renvoie NETWORK_ALIVE_LAN alors que le cable réseau est débranché).

--
Aurélien REGAT-BARREL
Avatar
Aurélien REGAT-BARREL
> cf le sample MACADDR II mais marche pas sous 98 et risque de ne pas


marcher
pour les versions suivantes de Windows.



Lol, j'ai cherché 15 min dans le SDk, en vain.
http://www.pcausa.com/Utilities/macaddr2.htm

Après un coup d'oeil, ça utilise l'IOCTL IOCTL_NDIS_QUERY_GLOBAL_STATS.
Moyennant quelques typedef et tout et tout, on doit pouvoir créer une petite
routine qui se passe du DDK.
Je garde cette option sous la main, mais vu que WMI semble plus portable, je
vais d'abord y jeter un oeil.
Merci.

Normalement y'a un champs d'une structure d'iphlpapi qui permet d'avoir
cette info mais j'ai ouï dire qu'elle ne marche pas (ou mal) sous 9X.



C'est exactement le genre de solution que je voudrais...

--
Aurélien REGAT-BARREL
Avatar
Thierry
Bonjour,

Aurélien REGAT-BARREL a écrit :

tout, on doit pouvoir créer une petite routine qui se passe du DDK.



Pas besoin du DDK : CreateFile / DeviceIoControl suffisent...

Je garde cette option sous la main, mais vu que WMI semble plus
portable, je vais d'abord y jeter un oeil.



Le pb est que WMI n'est pas installé en standard sur un 9X.

--
« Always look at the bright side of the life... »
Avatar
Jack
Le 23/08/2004 15:06, :
WMI : MSNdis_MediaConnectStatus
Win32 : OID_GEN_MEDIA_CONNECT_STATUS
(IsNetworkAlive() aussi...)




Apparement, il faut attaquer la couche NDIS pour avoir cette info.
MSNdis_MediaConnectStatus semble être une classe non documentée, dispo sou
Win2K seulement. J'ai trouvé cet intéressant article :
http://www.ndis.com/faq/QA01050301/
Y aurait aussi OID_GEN_MEDIA_CONNECT_STATUS, du DDK. J'ai trouvé ça :
http://msdn.microsoft.com/library/en-us/network/hh/network/205mpinfo_29e84eb1-0ff4-48b0-8e24-b6395256d6ad.xml.asp
Le précédent article explique comment s'en servir, mais dit que sous
Win9x/Me ça se complique (Q322363).
Je suis aussi tombé sur un thread de discution à ce sujet, et il est
mentionné Win32_NetworkAdapter.NetConnectionStatus :
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_networkadapter.asp
Je n'y connais pas grand chose en WMI, mais j'aurais tendance à préférer les
classes commençant par Win32_.

J'ai déjà testé IsNetworkAlive, mais ça ne permet que de détecter une carte
réseau LAN active, et non pas un connexion effective à un reseau LAN
(renvoie NETWORK_ALIVE_LAN alors que le cable réseau est débranché).



NetConnectionStatus => XP
Avatar
Aurélien REGAT-BARREL
> NetConnectionStatus => XP



Ah oui, je me disais bien qu'il y avait un truc.
Bon ben je vais plutôt me tourner vers la solution de Thierry alors (exemple
de pcausa).
Merci à vous.

--
Aurélien REGAT-BARREL