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

{

unsafepublicstaticDictionaryGetALLIO(Process procToRtrivIO)

{

IO_COUNTERS counters;

Dictionary retCountIoDict =newDictionary();

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 staticDictionaryGetAllMem(Process procToRtrivMem)

{

PROCESS_MEMORY_COUNTERS*MemCounters;

Dictionary retCountMemDict =newDictionary();

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.";

}

}

}