Get information about CPU memory usage

#include <iostream>
#include <iomanip>
#pragma comment (lib, "psapi.lib") // Add 'psapi.lib' to your linker options 

#include <windows.h>
#include <psapi.h> 

using namespace std; 

int main()
{
  // Open current process
  HANDLE hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ::GetCurrentProcessId());
  if(hProcess)
  {
    PROCESS_MEMORY_COUNTERS ProcessMemoryCounters; 

    memset(&ProcessMemoryCounters, 0, sizeof(ProcessMemoryCounters)); 

    // Set size of structure
    ProcessMemoryCounters.cb = sizeof(ProcessMemoryCounters); 

    // Get memory usage
    if(::GetProcessMemoryInfo(hProcess,
                              &ProcessMemoryCounters,
                              sizeof(ProcessMemoryCounters)) == TRUE)
    {
      std::cout << std::setfill('0') << std::hex
                << "PageFaultCount: 0x" << std::setw(8)
                << ProcessMemoryCounters.PageFaultCount << std::endl
                << "PeakWorkingSetSize: 0x" << std::setw(8)
                << ProcessMemoryCounters.PeakWorkingSetSize << std::endl
                << "WorkingSetSize: 0x" << std::setw(8)
                << ProcessMemoryCounters.WorkingSetSize << std::endl
                << "QuotaPeakPagedPoolUsage: 0x" << std::setw(8)
                << ProcessMemoryCounters.QuotaPeakPagedPoolUsage << std::endl
                << "QuotaPagedPoolUsage: 0x" << std::setw(8)
                << ProcessMemoryCounters.QuotaPagedPoolUsage << std::endl
                << "QuotaPeakNonPagedPoolUsage: 0x" << std::setw(8)
                << ProcessMemoryCounters.QuotaPeakNonPagedPoolUsage << std::endl
                << "QuotaNonPagedPoolUsage: 0x" << std::setw(8)
                << ProcessMemoryCounters.QuotaNonPagedPoolUsage << std::endl
                << "PagefileUsage: 0x" << std::setw(8)
                << ProcessMemoryCounters.PagefileUsage << std::endl
                << "PeakPagefileUsage: 0x" << std::setw(8)
                << ProcessMemoryCounters.PeakPagefileUsage <<std::endl;
    }
    else
      std::cout << "Could not get memory usage (Error: "
                << ::GetLastError() << ")" << std::endl; 

    // Close process
    ::CloseHandle(hProcess);
  }
  else
    std::cout << "Could not open process (Error "
              << ::GetLastError() << ")" << std::endl; 

  return 0;
} 

 

#pragma   comment(lib,"Ws2_32.lib")表示链接Ws2_32.lib这个库。和在工程设置里写上链入Ws2_32.lib的效果一样,不过这种方法写的程序别人在使用你的代码的时候就不用再设置工程settings了。

你可能感兴趣的:(windows)