さまざまなアプリケーションによってネットワークとの間で送受信されたバイト数をカウントする必要があります。最初はLSPの使用を考えましたが、LSPをまったく使用しないアプリケーション(SMBなど)がたくさんあります。これが私が小さなスニファーを書いた理由です。このアプリケーションはIPレベルで動作し、recvfromを使用してデータを収集します。
だから私はリモートホスト、ローカル、リモートポートのアドレスを持っています。これはかなりクールですが、ローカルソケット所有者のPIDも必要です。それで、そのようなPIDを取得する簡単な方法はありますか?回避策は、GetTcpTable、GetUdpTable、またはAllocateAndGetUdpExTableFromStackとAllocateAndGetTcpExTableFromStack(2k、XP、XP SP2、Vistaの間でこれらの関数に多くの違いがあります)を使用し、結果テーブルをルックアップすることですが、エレガントではなく非効率的です...
では、「GetPIDOfSocket」関数のようなものはありますか?C ++、Delphiなどのさまざまな言語を使用できるため、解像度はWinAPI(.netなし)のみである必要があります。