2
0
mirror of https://github.com/esiur/esiur-dotnet.git synced 2026-06-13 22:48:42 +00:00
This commit is contained in:
2026-06-09 01:40:29 +03:00
parent 2bdd5d5022
commit a741013621
19 changed files with 887 additions and 185 deletions
+19 -5
View File
@@ -17,6 +17,7 @@ public class PerProcessNetMonitor : IDisposable
private long _txBytes;
private long _rxBytes;
private volatile bool _running;
private static int _warningWritten;
public PerProcessNetMonitor(int pid)
{
@@ -25,12 +26,25 @@ public class PerProcessNetMonitor : IDisposable
public void Start()
{
// Use a unique session name
string sessionName = "NetMon_" + Guid.NewGuid();
_session = new TraceEventSession(sessionName);
try
{
// Use a unique session name
string sessionName = "NetMon_" + Guid.NewGuid();
_session = new TraceEventSession(sessionName);
// Enable kernel network provider
_session.EnableKernelProvider(KernelTraceEventParser.Keywords.NetworkTCPIP);
// Enable kernel network provider
_session.EnableKernelProvider(KernelTraceEventParser.Keywords.NetworkTCPIP);
}
catch (UnauthorizedAccessException ex)
{
_session?.Dispose();
_session = null;
if (Interlocked.Exchange(ref _warningWritten, 1) == 0)
Console.WriteLine($"Network monitor disabled: {ex.Message}");
return;
}
_running = true;
_listenTask = Task.Run(() =>