#include <iostream>
#include <windows.h>
int main()
{
std::locale::global(std::locale("japanese"));
MEMORYSTATUSEX statex;
statex.dwLength = sizeof(statex);
if (GlobalMemoryStatusEx(&statex) == 0)
{
return 0;
}
wprintf(L"物理メモリ(ullTotalPhys) %15llu bytes\n", statex.ullTotalPhys);
wprintf(L"物理メモリ(ullAvailPhys) %15llu bytes\n", statex.ullAvailPhys);
wprintf(L"仮想メモリ(ullTotalVirtual) %15llu bytes\n", statex.ullTotalVirtual);
wprintf(L"仮想メモリ(ullAvailVirtual) %15llu bytes\n", statex.ullAvailVirtual);
}
require "fiddle/import"
require 'fiddle/types'
module WIN32API
extend Fiddle::Importer
dlload 'C:\\Windows\\System32\\kernel32.dll'
include Fiddle::Win32Types
extern 'BOOL GlobalMemoryStatusEx(void *)'
MEMORYSTATUSEX = struct([
"unsigned int dwLength",
"unsigned int dwMemoryLoad",
"unsigned long long ullTotalPhys",
"unsigned long long ullAvailPhys",
"unsigned long long ullTotalPageFile",
"unsigned long long ullAvailPageFile",
"unsigned long long ullTotalVirtual",
"unsigned long long ullAvailVirtual",
"unsigned long long ullAvailExtendedVirtual",
])
end
mem = WIN32API::MEMORYSTATUSEX.malloc
mem.dwLength = WIN32API::MEMORYSTATUSEX.size
WIN32API.GlobalMemoryStatusEx(mem.to_ptr)
puts "物理メモリ(ullTotalPhys) #{"%15d" % mem.ullTotalPhys} byte"
puts "物理メモリ(ullAvailPhys) #{"%15d" % mem.ullAvailPhys} byte"
puts "仮想メモリ(ullTotalVirtual) #{"%15d" % mem.ullTotalVirtual} byte"
puts "仮想メモリ(ullAvailVirtual) #{"%15d" % mem.ullAvailVirtual} byte"
puts "仮想メモリ(ullTotalPageFile) #{"%15d" % mem.ullTotalPageFile} byte"
puts "仮想メモリ(ullAvailPageFile) #{"%15d" % mem.ullAvailPageFile} byte"