GetAdaptersInfo после Hibernate/standby
От: Glenn  
Дата: 16.09.10 11:49
Оценка:
У меня есть клиентский application на VC++ 6.0. Она при связи с неким сервером должна идентифицировать компьютер на котором она установлена. Для идентификации в частности используется MAC-адрес сетевого адаптера. Программист который это делал получал его так:

вызвал GetAdaptersInfo и получил размер буфера необходимый чтобы вернуть список всех адаптеров;
выделил этот буфер;
вызвал GetAdaptersInfo и получил список всех адаптеров в этот буфер;
в качестве MAC-адреса использовал поле Address из САМОЙ ПЕРВОЙ структуры IP_ADAPTER_INFO находящейся в буфере

Однако у одного из клиентов возникли проблемы: похоже наша программа, установленная на некоем компьютере, через какое-то время стала использовать другой MAC-адрес по сравнению с тем, что был на этом же компьютере раньше. Вроде бы — по словам клиента — это произошло ПОСЛЕ того как тот компьютер вошёл в Hibernate или StandBy; а потом вышел из него. Я пока не имею доступа к тому компьютеру, но скорее всего там установлены НЕСКОЛЬКО адаптеров, и почему-то изменился порядок их следования, когда они возвращаются функцией GetAdaptersInfo. Операционка — WinXP. Какие есть версии почему это могло случиьтся:
— связано ли это именно с Hibernate или StandBy; или возможна какая-то ещё причина;
— не восстановится ли старый порядок следования адаптеров после перезагрузки компьютера?
— не является ли вышеописанный метод опредления MAC-адреса (в целях идентификации компьютера) компьютера в принципе порочным; и чем?
Glen
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.