Узнать TCP remote address через TDI
От: LK Россия  
Дата: 01.09.05 11:46
Оценка:
В инете полно исходников на тему как узнать LocalAddress/LocalPort TCP соединения через TDI зная только хэнд этого соединения.
Стратегия такова:
Получаем FILE_OBJECT, и вызываем DeviceIoControl().
Возможно ли аналогичным путем получить информацию о RemoteAddress/RemotePort этого соединения ? Если да, то как ?
Re: Узнать TCP remote address через TDI
От: TarasCo  
Дата: 05.09.05 07:30
Оценка: 3 (1)
Здравствуйте, 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 получал таблицы локальных интерфейсов и маршрутизации. В принципе, можно как то еще получить список соединений, может это как раз то, что нужно.
Да пребудет с тобою сила
Re[2]: Узнать TCP remote address через TDI
От: LK Россия  
Дата: 13.09.05 06:33
Оценка:
Здравствуйте, 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 ).

Спасибо, помогло
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.