Получение всех открытых соединений для процесса. Vista. Device\Afd

Тема в разделе "WASM.WIN32", создана пользователем dead_body, 13 май 2008.

  1. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    Хочу получить все откртые соединений для своего процесса. Почитал, в интеренете все делают через "\Device\Udp" "\Device\Tcp" (http://blog.donews.com/zwell/archive/2005/09/14/553899.aspx)

    Попытался сделать, а у меня при перечислении таких девайсов в моем процессе нету, хотя одно соединение есть точно. Но есть "Device\Afd"
    После практически безрезультатного поиска, нашел что в Висте что то поменяли, что то передалали и так далее. Попыталься слать "Device\Afd" IOCTL_TDI_QUERY_INFORMATION но пишет: STATUS_INVALID_DEVICE_REQUEST . Документацию на "Device\Afd" найти не смог. Или так ищу или её в явном виде - нет. Помогите, кто знает пожайлуста, какой есть универсальный способ ХП-Виста получить адреса и порты всех соединений для процесса из Р3.
    GetTcpTable - не возвращает имя процесса которому принадлежит соединения, да и не хочеться её использовать.

    Пыталься сделать через getpeername и перехват всех сетевых функций, получилось, но способ оказался не самым быстрым, при каждом вызове send + recv вызывать и заново определять адрес + порт, а потом обновлять таблицу с коннектами.

    Заранеее, спасибо.
     
  2. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    Есть конечно функция GetExtendedTcpTable, но она только с ХП СП2, а мне нужно что бы начинала работать от ХП без паков, а лучше ещё и с 2000 Винды, и желателно на функция ntdll | kernel.

    Просто перехватывать можно ws2_32 функции на коннект(connec,WSAConnec,select,accept), но не ясно тогда что делать с WSAAsyncSelect+WSAEventSelect, не буду же я перехватывать функцию приема сообщений в окно и фильтровать сообщения которые идут в окно.(желательно перехватывать только ntdll.dll+ws2_32.dll) :dntknw: