polyacetal I was here | Voila mes 2 méthodes pour récupérer l'adresse de la ou des cartes réseau (a représente le numéro de la carte dans la liste s'il y en a plusieurs)... Je crois que j'avais trouvé ce code sur ce forum d'ailleur. Pour les besoins de mon programme, je retourne l'adresse de la carte sous la forme "XX XX XX XX XX XX" (c'est EN). Le problème c'est que sous XP, il ne trouve même pas de carte...
Code :
- void FindCode(int a){ // Get adapter list
- LANA_ENUM AdapterList;
- NCB Ncb;
- memset(&Ncb, 0, sizeof(NCB));
- Ncb.ncb_command = NCBENUM;
- Ncb.ncb_buffer = (unsigned char *)&AdapterList;
- Ncb.ncb_length = sizeof(AdapterList);
- Netbios(&Ncb);
- string b;
- GetAdapterInfo(AdapterList.lana[a], b);
- }
- void GetAdapterInfo(int adapter_num,string &a){
- // Reset the LAN adapter so that we can begin querying it
- NCB Ncb;
- memset(&Ncb, 0, sizeof(Ncb));
- Ncb.ncb_command = NCBRESET;
- Ncb.ncb_lana_num = adapter_num;
- if (Netbios(&Ncb) != NRC_GOODRET){
- EN = "00";
- }
- // Prepare to get the adapter status block
- memset(&Ncb,0,sizeof(Ncb));
- Ncb.ncb_command = NCBASTAT;
- Ncb.ncb_lana_num = adapter_num;
- strcpy((char *) Ncb.ncb_callname, "*" );
- struct ASTAT
- {
- ADAPTER_STATUS adapt;
- NAME_BUFFER NameBuff[30];
- } Adapter;
- memset(&Adapter,0,sizeof(Adapter));
- Ncb.ncb_buffer = (unsigned char *)&Adapter;
- Ncb.ncb_length = sizeof(Adapter);
- // Get the adapter's info and, if this works, return it in standard,
- // colon-delimited form.
- if (Netbios(&Ncb) == 0)
- {
- char acMAC[23];
- sprintf(acMAC, "%02X %02X %02X %02X %02X %02X",
- int (Adapter.adapt.adapter_address[0]),
- int (Adapter.adapt.adapter_address[1]),
- int (Adapter.adapt.adapter_address[2]),
- int (Adapter.adapt.adapter_address[3]),
- int (Adapter.adapt.adapter_address[4]),
- int (Adapter.adapt.adapter_address[5]));
- EN = acMAC;
- }
- else
- {
- EN = "00";
- }
- }
|
sinon après je compare cette adresse avec celle qui est déduite du mot de passe de l'utilisateur... |