PID do número do soquete no Window

Preciso contar a quantidade de bytes enviados e recebidos da rede por vários aplicativos. Primeiro pensei em usar o LSP, mas existem muitos aplicativos que não usam o LSP (SMB por exemplo). É por isso que escrevi um pequeno sniffer. Este aplicativo funciona no nível do IP e coleta dados usando recvfrom.

Então, tenho endereço de host remoto, portas locais e remotas. Isso é muito legal, mas também preciso ter o PID do proprietário do soquete local. Então, existe alguma maneira simples de obter esse PID? A solução alternativa é usar GetTcpTable, GetUdpTable ou AllocateAndGetUdpExTableFromStack e AllocateAndGetTcpExTableFromStack (há muitas diferenças nessas funções entre 2k, XP, XP SP2 e Vista) e na pesquisa de tabelas de resultados, mas parece inelegante e ineficiente ...

Existe algum tipo de função "GetPIDOfSocket"? A resolução deve ser apenas WinAPI (no .net), pois vários idiomas podem ser usados, por exemplo, C ++, Delph

questionAnswers(1)

yourAnswerToTheQuestion