Такая проблема. Есть код, где нужно определить IP по имени. Пытался пользоваться gethostbyname, затем getaddrinfo и даже DnsQuery_A. Всегда при вызове данных фунцций возникает исключение. Виной тому, как выходит, отключенная служба DNS. Почему так, ведь все сетевые приложения пользуются этими функциями и не падают же. И как дальше быть? Очень не хочется вручную формировать DNS запрос.
Почему ты решил, что служба? Скорее всего ты просто неправильно вызываешь функции, раз возникает исключение. При отключенной службе тебе бы просто дали "отлуп" программно.
Да, походу на службу я зря грешу. Что-то не то у меня. Вот такой код допустим есть: Код (Text): format PE CONSOLE entry start include 'win32a.inc' section '.data' data readable writeable ws2_32 db 'ws2_32.dll',0 wsadata WSADATA sock sockaddr_in HOST db 'google.com',0 section '.code' code readable executable start: invoke LoadLibrary, ws2_32 mov EBX, EAX invoke WSAStartup, 0202h, wsadata A: invoke gethostbyname, HOST B: invoke socket, AF_INET, SOCK_STREAM, 0 ; IPPROTO_TCP mov ESI, EAX C: invoke socket, AF_INET, SOCK_DGRAM, 0 ; IPPROTO_UDP mov EDI, EAX invoke closesocket, EDI invoke closesocket, ESI invoke WSACleanup invoke FreeLibrary, EBX invoke ExitProcess, NULL section '.idata' import data readable writeable library kernel32,'kernel32.dll',wsock32,'wsock32.dll' include '\api\kernel32.inc' include '\api\wsock32.inc' Так вот, при трассировке в Оле, в функциях по метке A и C возникает исключение, по метке B все хорошо. При включении службы DNS, при трассировке, функция по метке A, исключения не вызывает, по С - вызывает. Без Оли все работают нормально. Раньше, буквально недавно, такого не наблюдалось. Единственное что обновлял - базы KIS (может и модули какие заодно). Что не так?