Мне нужно подсчитать количество байтов, отправленных и полученных из сети различными приложениями. Сначала я подумал об использовании LSP, но есть много приложений, которые вообще не используют LSP (например, SMB). Вот почему я написал небольшой сниффер. Это приложение работает на уровне IP и собирает данные, используя recvfrom.
Итак, у меня есть адрес удаленного хоста, локальных и удаленных портов. Это довольно круто, но мне также нужно иметь PID локального владельца сокета. Итак, есть ли простой способ получить такой PID? Обходной путь - это использование GetTcpTable, GetUdpTable или AllocateAndGetUdpExTableFromStack и AllocateAndGetTcpExTableFromStack (в этих функциях есть много различий между 2k, XP, XP SP2 и Vista) и для поиска таблиц результатов, но это кажется неэффективным3 и неэффективным ... *
Так есть ли какая-либо функция "GetPIDOfSocket"? Разрешение должно быть только WinAPI (без .net), поскольку могут использоваться различные языки, например C ++, Delphi.