public ProcessInfo sample(Process p) { TimeSpan timespan = p.TotalProcessorTime; // if (timespan.TotalMilliseconds == lastProcessorTime.TotalMilliseconds) // return null; ProcessInfo info = new ProcessInfo(); info.no = p.Id; info.name = p.ProcessName; //stat cpu info info.cpuTime = timespan.TotalMilliseconds - lastProcessorTime.TotalMilliseconds; lastProcessorTime = timespan; //stat the io information IO_COUNTERS ioc; WinApi.GetProcessIoCounters(p.Handle, out ioc); info.dread = ioc.ReadTransferCount - lastio.ReadTransferCount; info.dwrite = ioc.WriteTransferCount - lastio.WriteTransferCount; lastio = ioc; return info; }
public static extern bool GetProcessIoCounters(IntPtr ProcessHandle, out IO_COUNTERS IoCounters);