В инете полно исходников на тему как узнать LocalAddress/LocalPort TCP соединения через TDI зная только хэнд этого соединения.
Стратегия такова:
Получаем FILE_OBJECT, и вызываем DeviceIoControl().
Возможно ли аналогичным путем получить информацию о RemoteAddress/RemotePort этого соединения ? Если да, то как ?
Здравствуйте, LK, Вы писали:
LK>В инете полно исходников на тему как узнать LocalAddress/LocalPort TCP соединения через TDI зная только хэнд этого соединения.
LK>Стратегия такова:
LK>Получаем FILE_OBJECT, и вызываем DeviceIoControl().
LK>Возможно ли аналогичным путем получить информацию о RemoteAddress/RemotePort этого соединения ? Если да, то как ?
IMHO прямым путем — никак. TDI клиент всегда знает, к какому удаленному хосту он коннектился. Зачем ему может потребоваться такая информация? (с локальным хостом — понятно, клиент мог задать 0.0.0.0::0, а потом ему может стать интересно, какой адрес и порт был таки выбран ). Возможно, требуемую информацию можно извлечеть через IOCTL_TCP_QUERY_INFORMATION_EX. Интерфейс плохо документирован ( тут кое что:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devnotes/winprog/tcp_request_query_information_ex.asp ). Лично я через этот ioctl получал таблицы локальных интерфейсов и маршрутизации. В принципе, можно как то еще получить список соединений, может это как раз то, что нужно.
Здравствуйте, TarasCo, Вы писали:
<поскипано>
. Возможно, требуемую информацию можно извлечеть через IOCTL_TCP_QUERY_INFORMATION_EX. Интерфейс плохо документирован ( тут кое что:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devnotes/winprog/tcp_request_query_information_ex.asp ).
Спасибо, помогло