SIOCGIFHWADDR для ioctlsocket в mingw - PullRequest
0 голосов
/ 06 марта 2012

Я использую mingw для компиляции моей программы cpp, которая должна получить MAC-адрес. В Unix, sys / ioctl.h предоставляет «SIOCGIFHWADDR», чтобы прочитать его. Но для mingw win32 есть замена для ioctl с именем ioctlsocket. Я использую его, но у него нет команды SIOCGIFHWADDR.

Как я могу прочитать аппаратный MAC-адрес с помощью ioctlsocket?

Заранее спасибо.

Ниже приводится функция, которую я использую

ioctl(fd, SIOCGIFHWADDR, &ifr); //Unix it works
ioctlsocket(fd, SIOCGIFHWADDR, &ifr); //win32, doesn't work

1 Ответ

0 голосов
/ 08 марта 2012

Существует несколько различных API-интерфейсов Windows, которые получат для вас локальный MAC-адрес.

GetAdaptersAddresses должно работать на вас. (Посмотрите на член PhysicalAdddress в возвращенном наборе IP_ADAPTER_ADDRESSES .

Вы также можете использовать GetIfTable и посмотреть на член bPhysAddr в возвращенном наборе структур MIB_IFROW.

...