|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.09.2015, 00:49 | #1 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Не работает конвертация в WSAAddressToStringW
Пытаюсь получить информацию о сетевом адаптере с помощью GetAdaptersAddresses и вывести её в виде String на форму. Загвоздка с типами:
PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress; PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress; PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress; PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress; PIP_ADAPTER_WINS_SERVER_ADDRESS_LH FirstWinsServerAddress; PIP_ADAPTER_GATEWAY_ADDRESS_LH FirstGatewayAddress; SOCKET_ADDRESS Dhcpv4Server; В конечном итоге я так понял все вышеперечисленные кроме SOCKET_ADDRESS это также структуры, то есть получается нечто вроде матрешки. А в конечном итоге значения будут в виде SOCKET_ADDRESS. Код:
|
15.09.2015, 08:40 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Что содержит length *до* вызова?
Что возвращает WSAAddressToStringW? Какой код ошибки WSAGetLastError()? |
18.09.2015, 03:03 | #3 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
С WSAAddressToStringW разобрался, чтобы она нормально работала нужно перед вызовом сделать инициализацию:
Код:
pCurrAddresses->FirstUnicastAddress pCurrAddresses->FirstGatewayAddress FirstGatewayAddress всегда NULL Не пойму что за фигня, с GetAdapterInfo всё работало у меня как положено |
18.09.2015, 08:56 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Код будете показывать?
Что передаете первым параметром GetAdaptersAdresses? Эта функция возвращает *список* - вы его просматриваете или смотрите только первый результат? |
18.09.2015, 13:38 | #5 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Код:
|
18.09.2015, 13:41 | #6 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Я ставил брекпоинт на вызов GetAdaptersAddresses и смотрел, что она получает. Структура заполняется, всё нормально. Но не хватает части параметров.
Адрес шлюза, DNS сервер, WINS и ещё несколько параметров NULL. Проверял на разных операционках: Vista SP2 Ultimate, Windows 2008 Server, Windows 7 x64, Windows 8.1 и Windows 2012 R2 Datacenter. Абсолютно всё одинаково работает |
18.09.2015, 14:58 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Нужно GAA_FLAG_INCLUDE_GATEWAYS
Насчет anycast не уверен - это явно какие-то специальные адреса, возможно не у каждого адаптера они есть. |
18.09.2015, 20:09 | #8 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Я кстати тоже обратил внимание на эти флаги. Значит мне нужны:
GAA_FLAG_SKIP_ANYCAST 0x0002 Do not return IPv6 anycast addresses. GAA_FLAG_INCLUDE_GATEWAYS 0x0080 Return the addresses of default gateways. В принципе я могу и GetAdapterInfo использовать т.к. эта новая функция особо ничего толкового не дает. Скорость сети она выдает 1 гбит\сек или 100 мбит\сек вместо реальной. Остальные параметры особо не нужны никому |
20.09.2015, 02:41 | #9 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Проблему с IP адресом в формате IPv6 решилась следующим образом:
Код:
А со шлюзом ничего не выходит. Вот здесь такой же код как у меня: http://www.2brightsparks.com/bb/viewtopic.php?t=3803 Может конечно они и не проверяли его на работоспособность... |
20.09.2015, 09:30 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Конвертация | lupus_luctisonus | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 23.12.2014 07:18 |
Конвертация | Чикаашан | Общие вопросы по Java, Java SE, Kotlin | 0 | 22.11.2014 20:03 |
конвертация | Romuald | Microsoft Office Excel | 8 | 12.07.2010 14:23 |
Конвертация | surf135 | Помощь студентам | 3 | 31.05.2010 23:41 |
Конвертация фунтов | freeuser | Общие вопросы C/C++ | 2 | 28.01.2010 10:33 |