Tag: performancecounter

使用P / Invoke时如何将Win32类型映射到C#类型?

我想在C#中做这样的事情。 我发现如何使用此链接中的 P / Invoke 从 C#调用Win32方法。 但是我在实现P / Invoke方面遇到了一些困难。 例如,我想访问的方法之一是PdhOpenQuery ,签名: PDH_STATUS PdhOpenQuery( __in LPCTSTR szDataSource, __in DWORD_PTR dwUserData, __out PDH_HQUERY *phQuery ); 我认为相应的C#声明应该是这样的 [DllImport(“Pdh.dll”)] static extern PDH_STATUS PdhOpenQuery(LPCTSTR szDataSource, DWORD_PTR dwUserData, out PDH_HQUERY *phQuery); 我的问题: 什么是LPCTSTR,以及它在C#中映射的数据类型是什么? 如何映射指针类型DWORD_PTR? pinvoke文章说DWORD映射到UInt32,但指针怎么样? 我认为PDH_STATUS和PDH_HQUERY是库的特定结构(我还不确定)。 我该如何映射这些? 什么是正确的方法声明,以及如何正确地调用它?

性能计数器按进程ID而不是名称?

我正在跟踪同一个应用程序的多个实例,需要获取两个进程的内存和CPU使用。 但是,我似乎无法找到一种方法来使用性能计数器,并知道哪个结果是针对哪个进程的。 我已经看到我可以将#1等附加到名称的末尾以获得每个结果,但这并不能告诉我哪个是哪个进程。 如何确定ProcessId或将进程ID传递给计数器以获得具有相同名称的每个进程的结果? PerformanceCounterCPU.CategoryName = “Process”; PerformanceCounterCPU.CounterName = “% Processor Time”; PerformanceCounterCPU.InstanceName = proc.ProcessHandle.ProcessName; PerformanceCounterMemory.CategoryName = “Process”; PerformanceCounterMemory.CounterName = “Working Set – Private”; PerformanceCounterMemory.InstanceName = proc.ProcessHandle.ProcessName;

如何获得超过2个内核的CPU使用率?

我试着让我的程序CPU使用量除以核心。 现在我使用PerformanceCounter并在0和1之间更改InstanceName我有来自2个核心的数据。 PerformanceCounter pc0 = new PerformanceCounter(“Processor”, “% Processor Time”, “0”); PerformanceCounter pc1 = new PerformanceCounter(“Processor”, “% Processor Time”, “1”); 如何获得第3,第4核等的核心使用? 有人能帮帮我吗? 谢谢

使用PerformanceCounter跟踪每个进程的内存和CPU使用情况?

如何使用System.Diagnostics.PerformanceCounter跟踪进程的内存和CPU使用情况?