Retrouver le nom de la connection réseau

mammouth_fr Messages postés 6 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 23 juillet 2004 - 21 juil. 2004 à 17:35
mammouth_fr Messages postés 6 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 23 juillet 2004 - 23 juil. 2004 à 12:23
Bonjour

je me bats avec les API Windows et Visual C++ pour retrouver le nom de la connection réseau. le fameux "Connection au réseau local" par défaut.

le programme doit fonctionner sous W2K et sous Xp.

j'ai commencé à chercher du coté de l'api "iphlpapi" qui est utilisée par ipconfig. GetAdaptersInfo() me donne la référence de la connection du genre {xxxxx-xxx-xxxx-xxxxxxxx} mais pas le "friendly name".
et avec MprConfigGetFriendlyName () de l'api mprapi je pensais tenir mon bonheur mais ce n'est pas ça non plus.

quelqun aurait il une autre piste ou mieux la solution svp ?

10 réponses

3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005
21 juil. 2004 à 18:22
Slt

Je crois bien que c'est bien 'GetAdaptersInfo', qui prend en parametre une structure type 'PIP_ADAPTER_INFO' et un des elements de la structure est '->Description' qui te donne le nom de l'interface réseau énumérée.

Genre chez moi cette fonction me retourne :

NVIDIA nForce MCP Networking Controller

héhé il font aussi des cartes réseaux ;)

Attention, si je me trompe pas, GetAdapterInfo te renvoi une liste chainée, a toi apres a te ballader ds cette liste.

Bye

3psilon
0
3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005
21 juil. 2004 à 18:22
Slt

Je crois bien que c'est bien 'GetAdaptersInfo', qui prend en parametre une structure type 'PIP_ADAPTER_INFO' et un des elements de la structure est '->Description' qui te donne le nom de l'interface réseau énumérée.

Genre chez cette fonction me retourne :

NVIDIA nForce MCP Networking Controller

héhé il faut aussi des cartes réseaux ;)

Attention, si je me trompe pas, GetAdapterInfo te renvoi une liste chainée, a toi apres a te ballader ds cette liste.

Bye

3psilon
0
mammouth_fr Messages postés 6 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 23 juillet 2004
21 juil. 2004 à 18:31
IP_ADAPTER_INFO->Description me donne "NDIS 5.0 driver"
ce n'est malheureusement pas ce que je cherche.

je souhaite le nom qui se trouve sous l'icone de ta connection réseau.

il est caché dans la base de registre quelque part par ici
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{A}\{B}\Connection\Name = "Connection au réseau local"

IP_ADAPTER_INFO->Name ne me donne que le descripteur B dans la base de registre et pas le contenu de la clé Name.
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
21 juil. 2004 à 18:32
Salut,
Tu peux avoir une description de l'adapter (nom de la carte réseau) avec GetAdaptersInfo comme 3psilon a dit.

Pour avoir le nom de la connexion reseau (celui qu'on vois dans paremetre/connexion reseau) il faut utiliser GetAdaptersAddresses. Le membre FriendlyName de la structure IP_ADAPTER_ADDRESSES contient ce que tu veux (enfin il me semble). Attention ce membre est en unicode...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mammouth_fr Messages postés 6 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 23 juillet 2004
22 juil. 2004 à 12:10
on s approche du résultat escompté en effet avec GetAdaptersAddresses(), un petit WideCharToMultiByte() sur ->FriendlyName me donnerait satisfaction je pense.

il semblerait par contre d'après le MSDN que GetAdaptersAddresses() soit réservé à win XP ...

je bute maintenant sur un problème qui me déroute. je me retrouve avec une erreur de compilation.
'PMIB_ICMP_EX' : undeclared identifier

malgré les inclusions suivantes
#include <mprapi.h>
#include
#include

quel include ais je oublié ?
0
3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005
22 juil. 2004 à 12:26
Si je me souviens bien,

Iprtrmib.h installé par default avec VC ne contient pas la definition de
PMIB_ICMP_EX.

Je pense que tu pourras le trouver ds le dernier SDK.

Si une ame charitable pouvait confirmer mes dires ;)

Bye

3psilon
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
22 juil. 2004 à 14:45
Salut,
Chez moi MIB_ICMP_EX est defini dans iprtrmib.h comme suit:
typedef struct _MIB_ICMP_EX
{
MIBICMPSTATS_EX icmpInStats;
MIBICMPSTATS_EX icmpOutStats;
} MIB_ICMP_EX,*PMIB_ICMP_EX;

et voici un lien avec les headers de la sdk 2003:
http://betouchi.free.fr/utile/headers.zip
0
cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011
23 juil. 2004 à 00:07
0
mammouth_fr Messages postés 6 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 23 juillet 2004
23 juil. 2004 à 10:51
@Magma: le code proposé liste les connection RAS moi c'est le LAN que je voudrais.

sinon pour mes problèmes d'include, merci pour le zip aardman mais j'ai déjà le SDK 2003 en entier sur ma machine.

je vous mets ci dessous la portion de code que je n'arrive pas à faire fonctionner , elle vient du MSDN.
j'ai mis dans les settings du projet, onglet ressource le répertoire include du SDK. Mais je me retrouve toujours avec des "undeclared identifier" sur le PIP_ADAPTER_ADDRESSES.

pourquoi tant de haine ????????

#include <mprapi.h>
#include
#include

...

PIP_ADAPTER_ADDRESSES pAddresses;
pAddresses = (IP_ADAPTER_ADDRESSES*) malloc(sizeof(IP_ADAPTER_ADDRESSES));
ULONG outBufLen = 0;
DWORD dwRetVal = 0;

// Make an initial call to GetAdaptersAddresses to get the
// size needed into the outBufLen variable
if (GetAdaptersAddresses(AF_INET,
0,
NULL,
pAddresses,
&outBufLen) == ERROR_BUFFER_OVERFLOW)
{
GlobalFree(pAddresses);
pAddresses = (IP_ADAPTER_ADDRESSES*) malloc(outBufLen);
}

// Make a second call to GetAdapters Addresses to get the
// actual data we want
if ((dwRetVal = GetAdaptersAddresses(AF_INET,
0,
NULL,
pAddresses,
&outBufLen)) == NO_ERROR)
{
// If successful, output some information from the data we received
while (pAddresses)
{
printf("\tFriendly name: %S\n", pAddresses->FriendlyName);
printf("\tDescription: %S\n", pAddresses->Description);

pAddresses = pAddresses->Next;
}
0
mammouth_fr Messages postés 6 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 23 juillet 2004
23 juil. 2004 à 12:23
bon j'ai trouvé comment compiler
il faut mettre ces includes ci

#include <stdio.h>
#include <winsock2.h>
#include

par contre je me fait jeter sous w2k où il trouve pas le point d'entrée de GetAdaptersAdresses.

vérifié dans la DLL Xp présent masi pas dans celle de W2k

donc je pleure.
0
Rejoignez-nous