Как узнать объем ОЗУ через ffi?

  • Автор темы deleted-user-164854
  • Дата начала
D

deleted-user-164854

Гость
Автор темы
В названии темы, собственно, уже есть вопрос - как можно через ffi узнать кол-во ОЗУ у игрока?
 
D

deleted-user-164854

Гость
Автор темы
можно и без ффи
Lua:
local handle = io.popen('wmic memorychip get /VALUE |findstr "Capacity"')
local res = handle:read('*a')
handle:close()
res = tonumber(res:match('Capacity=(%d+)'))
print(res)
Есть только одна проблема - на W8 открывает консоль и сворачивает игру :(
И, ещё, как показала проверка, у меня при 16 определяет 8.
 

imring

Ride the Lightning
Всефорумный модератор
2,355
2,516
Есть только одна проблема - на W8 открывает консоль и сворачивает игру :(
И, ещё, как показала проверка, у меня при 16 определяет 8.
Lua:
local ffi = require 'ffi'

ffi.cdef[[
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned __int64 DWORDLONG;

typedef struct _MEMORYSTATUSEX {
  DWORD     dwLength;
  DWORD     dwMemoryLoad;
  DWORDLONG ullTotalPhys;
  DWORDLONG ullAvailPhys;
  DWORDLONG ullTotalPageFile;
  DWORDLONG ullAvailPageFile;
  DWORDLONG ullTotalVirtual;
  DWORDLONG ullAvailVirtual;
  DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;

BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer);
]]

local mi = ffi.new('MEMORYSTATUSEX[1]')
mi[0].dwLength = ffi.sizeof('MEMORYSTATUSEX')
ffi.C.GlobalMemoryStatusEx(mi)
local res = tonumber(mi[0].ullTotalPhys)
 
D

deleted-user-164854

Гость
Автор темы
Lua:
local ffi = require 'ffi'

ffi.cdef[[
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned __int64 DWORDLONG;

typedef struct _MEMORYSTATUSEX {
  DWORD     dwLength;
  DWORD     dwMemoryLoad;
  DWORDLONG ullTotalPhys;
  DWORDLONG ullAvailPhys;
  DWORDLONG ullTotalPageFile;
  DWORDLONG ullAvailPageFile;
  DWORDLONG ullTotalVirtual;
  DWORDLONG ullAvailVirtual;
  DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;

BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer);
]]

local mi = ffi.new('MEMORYSTATUSEX[1]')
mi[0].dwLength = ffi.sizeof('MEMORYSTATUSEX')
ffi.C.GlobalMemoryStatusEx(mi)
local res = tonumber(mi[0].ullTotalPhys)
Огромная благодарность!