MAC-Adresse
-
Hallo zusammen,
ich habe folgendes Problem... Ich lese mit dem untenstehenden Code die MAC-Adresse eines Netzwerkadapters aus... Leider gibt die Funktion immer 00-00-00-00-00-00 zurück...
#include <vcl.h> #include "winsock2.h" #include "windows.h" #include "nb30.h" #include "net_get_macadresses.h" typedef struct _ASTAT { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff[30]; } ASTAT; int GetMacAddresses(TStrings* pslStrings) { int ilRetVal = 0; // Rückgabewert NCB stNetCtrlBlock; // Network Control Block - Instanz LPVOID pASTAT; // Zeiger auf die ASTAT-Struktur ASTAT stAdapterStatus; // AdapterStatus-Struktur LANA_ENUM stLanEnum; // Struktur für die Enumerierung der // Netzwerkkarten if(pslStrings != NULL) pslStrings->Clear(); // die Anzahl der Netzwerkkarten ermitteln: memset(&stNetCtrlBlock, 0, sizeof(stNetCtrlBlock)); stNetCtrlBlock.ncb_command = NCBENUM; stNetCtrlBlock.ncb_buffer = (UCHAR *)&stLanEnum; stNetCtrlBlock.ncb_length = sizeof(stLanEnum); Netbios(&stNetCtrlBlock); ilRetVal = stLanEnum.length; // Falls Zeiger auf TStrings-Instanz übergeben, MAC-Adressen // auslesen und in die Stringliste einfügen: if(pslStrings != NULL) { for(int ilAdapter=0; ilAdapter < ilRetVal; ilAdapter++) { stNetCtrlBlock.ncb_command = NCBRESET; Netbios(&stNetCtrlBlock); strcpy(stNetCtrlBlock.ncb_callname,"* "); stNetCtrlBlock.ncb_command = NCBASTAT; stNetCtrlBlock.ncb_lana_num = ilAdapter; stNetCtrlBlock.ncb_length = sizeof(stAdapterStatus); pASTAT=HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONS| HEAP_ZERO_MEMORY, stNetCtrlBlock.ncb_length); if(pASTAT != NULL) { stNetCtrlBlock.ncb_buffer=(UCHAR *)pASTAT; Netbios(&stNetCtrlBlock); CopyMemory(&stAdapterStatus,stNetCtrlBlock.ncb_buffer, sizeof(stAdapterStatus)); AnsiString slMacAddress; slMacAddress += IntToStr(stAdapterStatus.adapt.adapter_address); for(int i =0; i < 6; i++) { slMacAddress += IntToHex(stAdapterStatus.adapt.adapter_address[i],2); if(i<5) slMacAddress+="-"; } HeapFree(GetProcessHeap(),0,pASTAT); pslStrings->Add(slMacAddress); } else ilRetVal = 0; } } return ilRetVal; }
-
Hallo HandyMann
Eine Frage zu Objektorientierten Netzwerkprogrammierung C++
Kannst du mir bitte sagen was du an Literatur finden konntest darüber.
HAst du vielleicht ein gutes Buch eine gute Seite für Anfänger ?
Woher hast du deine Quellen darüber ?
Freue mich schon auf eine Antwort und hoffe das du was brauchbares hast für mich.
Bitte nichts über Linux oder etwas anderes als Microsoftnetzwerke.
Danke
-
hi,
wo soll bei dir die adresse stehen. doch nicht im rueckgabewert!?gruss
msp
-
Hast Du zufällig das Mainboard ECS (Elitegroup) K7S5A ??
Das hab' ich nämlich auch, und der OnBoard-NIC vergißt seine MAC-Adresse schonmal... gestern erst wieder passiert...
Aber ist mir mittlerweile scheißegal, kein' Bock die immer mal wieder zu resetten...Ein "ipconfig /all" gibt z.Z. folgendes aus:
Ethernetadapter LAN-Verbindung:
Verbindungsspezifisches DNS-Suffix:
Beschreibung. . . . . . . . . . . : SiS 900-basierte PCI-Fast Ethernet-Adapter
Physikalische Adresse . . . . . . : 00-00-00-00-00-00
DHCP aktiviert. . . . . . . . . . : Nein
IP-Adresse. . . . . . . [...]Trotzdem vermute ich ja mal, daß es ein SW-Prob ist...
-
Hallo zusammen,
@msp: Nein... Der Rückgabewert sagt mir lediglich wie viele NIC in dem Rechner drinnen sind... Die Werte werden an die TString-Instanz gegeben...
@Sgt. Nukem: Cool
Aber ein solches Board ist leider nicht dabei...
@nospe: Ich kann http://www.bytesandmore.de und http://www.schlotsoft.de empfehlen...
CU
Handyman
-
Die Nachfrage im BCB-Forum hast du ja ignoriert, deshalb hier nochmal: welches Ergebnis liefert die Variante aus der BCB-FAQ?
-
handyman != The Godfather
Das untere funktioniert...
THX
Handyman