2024年3月22日发(作者:)
C#实现进程内存信息获取
using c;
using pServices;
using System;
using stics;
staticclassNat
{
[StructLayout(tial]
struct IO_COUNTERS
{
public ulong ReadOperationCount;
public ulong WriteOperationCount;
public ulong OtherOperationCount;
public ulong ReadTransferCount;
public ulong WriteTransferCount;
public ulong OtherTransferCount;
}
[DllImport("")]
unsafe static extern bool GetProcessIoCounters(IntPtrProcessHandle,out IO_COUNTERS IoCounters);
[StructLayout(tial,Size=40)]
privatestruct PROCESS_MEMORY_COUNTERS
{
public uint cb;
public uint PageFaultCount;
public uint PeakWorkingSetSize;
public uint WorkingSetSize;
public uint QuotaPeakPagedPoolUsage;
public uint QuotaPagedPoolUsage;
public uint QuotaPeakNonPagedPoolUsage;
public uint QuotaNonPagedPoolUsage;
public uint PagefileUsage;
public uint PeakPagefileUsage;
}
[DllImport("",SetLastError=true)]
unsafe static extern bool GetProcessMemoryInfo(IntPtr* hProcess,out PROCESS_MEMORY_COUNTERS*Memcounters,int size);
publicstaticclass IO
{
unsafepublicstaticDictionary
{
IO_COUNTERS counters;
Dictionary
IntPtr ptr =rentProcess().Handle;
GetProcessIoCounters(ptr,out counters);
("ReadOperationCount", erationCount);
("WriteOperationCount", perationCount);
("OtherOperationCount", perationCount);
("ReadTransferCount", ansferCount);
("WriteTransferCount", ransferCount);
("OtherTransferCount", ransferCount);
return retCountIoDict;
//return "This process has read " + ((ansferCount/1024)/1024).ToString("N0") +
// " Mb of data.";
}
}
publicstaticclassMem
{
unsafe public staticDictionary
{
PROCESS_MEMORY_COUNTERS*MemCounters;
Dictionary
IntPtr ptr =rentProcess().Handle;
GetProcessMemoryInfo(&ptr,outMemCounters,(typeof(PROCESS_MEMORY_COUNTERS)));//);
("cb",MemCounters->cb);
("PageFaultCount",MemCounters->PageFaultCount);
("PeakWorkingSetSize",MemCounters->PeakWorkingSetSize);
("WorkingSetSize",MemCounters->WorkingSetSize);
("QuotaPeakPagedPoolUsage",MemCounters->QuotaPeakPagedPoolUsage);
("QuotaPagedPoolUsage",MemCounters->QuotaPagedPoolUsage);
("QuotaPeakNonPagedPoolUsage",MemCounters->QuotaPeakNonPagedPoolUsage);
("QuotaNonPagedPoolUsage",MemCounters->QuotaNonPagedPoolUsage);
("PagefileUsage",MemCounters->PagefileUsage);
("PeakPagefileUsage",MemCounters->PeakPagefileUsage);
return retCountMemDict;
//return "This process has read " + ((ansferCount/1024)/1024).ToString("N0") +
// " Mb of data.";
}
}
}


发布评论