Нужно получить МАС-адресс машины, на которой выполняется приложение.
Взял из МСДН"а пример.
Работает без ошибок:
HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[2];
ULONG ulLen;
memset (pulMac, 0xff, sizeof (pulMac));
ulLen = 6;
ipAddr = inet_addr ("192.168.XXX.XXX"); //адрес в локальной сети
hr = SendARP (ipAddr, 0, pulMac, &ulLen);
Чтобы получить свой МАС-адресс отправляю пакет на 127.0.0.1
ipAddr = inet_addr ("127.0.0.1");
hr = SendARP (ipAddr, 0, pulMac, &ulLen);
Возвращает hr = 0x0000001f A device attached to the system is not functioning.
Подскажите, пожалуйста, в чем проблема ?
13.02.07 17:13: Перенесено модератором из 'C/C++' — Кодт
Здравствуйте, Sokil, Вы писали:
S>Нужно получить МАС-адресс машины, на которой выполняется приложение.
S>Взял из МСДН"а пример.
S>Работает без ошибок:
S>S> HRESULT hr;
S> IPAddr ipAddr;
S> ULONG pulMac[2];
S> ULONG ulLen;
S> memset (pulMac, 0xff, sizeof (pulMac));
S> ulLen = 6;
S> ipAddr = inet_addr ("192.168.XXX.XXX"); //адрес в локальной сети
S> hr = SendARP (ipAddr, 0, pulMac, &ulLen);
S>
S>Чтобы получить свой МАС-адресс отправляю пакет на 127.0.0.1
S>S> ipAddr = inet_addr ("127.0.0.1");
S> hr = SendARP (ipAddr, 0, pulMac, &ulLen);
S>
S>Возвращает hr = 0x0000001f A device attached to the system is not functioning.
S>Подскажите, пожалуйста, в чем проблема ?
Для получения MAC'адреса сетевого интерфейса можно использовать IpHelper API (см. MSDN). Честно говоря, когда
передомной стоял тот же вопрос, я не нашёл другого решения в Win (имею ввиду в Win API), как это, но его вполне хватает (если на PC есть несколько сетевых интерфейсов — это не проблема). Ещё, вроде как, что-то было в библиотеки ACE, но я это не использовал.
P. S. У Вас, как мне кажется, программа на WinAPI (т.е., например, требования кросс-платформенности нет), так что ACE, думаю, будет излишней. IpHelper!