Como leer el MAC Address
Publicado por Diego G. Ruiz (41 intervenciones) el 16/08/2002 17:21:18
¿Alguien sabe de que manera puedo leer el MAC address de una placa de red en C/C++ bajo plataformas Windows?
Gracias.
Gracias.
Valora esta pregunta


0
#include <iostream>
#include <iphlpapi.h>
#include <windows.h>
#include <vector>
#pragma comment(lib, "iphlpapi.lib")
void printMACAddresses() {
ULONG outBufLen = 15000;
std::vector<BYTE> buffer(outBufLen);
ULONG flags = GAA_FLAG_INCLUDE_PREFIX;
ULONG family = AF_UNSPEC; // IPv4 o IPv6
// Llamada a GetAdaptersAddresses
DWORD dwRetVal = GetAdaptersAddresses(family, flags, NULL, (IP_ADAPTER_ADDRESSES*)buffer.data(), &outBufLen);
if (dwRetVal == NO_ERROR) {
IP_ADAPTER_ADDRESSES* pAdapterAddresses = (IP_ADAPTER_ADDRESSES*)buffer.data();
for (IP_ADAPTER_ADDRESSES* pCurrAdapter = pAdapterAddresses; pCurrAdapter != NULL; pCurrAdapter = pCurrAdapter->Next) {
std::cout << "Nombre del adaptador: " << pCurrAdapter->AdapterName << std::endl;
std::cout << "Dirección MAC: ";
for (int i = 0; i < pCurrAdapter->PhysicalAddressLength; i++) {
printf("%02X", pCurrAdapter->PhysicalAddress[i]);
if (i < pCurrAdapter->PhysicalAddressLength - 1) {
std::cout << "-";
}
}
std::cout << std::endl << std::endl;
}
} else {
std::cerr << "Error al obtener las direcciones de los adaptadores: " << dwRetVal << std::endl;
}
}
int main() {
printMACAddresses();
return 0;
}