2013-10-10 4 views
0

Как найти текущий размер файла подкачки?Получить размер файла подкачки

Прирочка к окнам 7, в папке System32 использовался сценарий с именем pafefileconfig.vba. Но теперь его сняли.

Можно ли получить детали с помощью JNA? Если да, то как?

EDIT

Это код, который я написал, чтобы получить информацию файла подкачки с помощью ЮНА:

Kernel32 kernel32 = (Kernel32)Native.loadLibrary("kernel32", Kernel32.class); 
    MEMORYSTATUSEX memInfo = new MEMORYSTATUSEX(); 
    kernel32.GlobalMemoryStatusEx(memInfo); 
    int toMB = (1024*1024); 
    float RAM = memInfo.ullTotalPhys.floatValue(); 
    float totalPage = memInfo.ullTotalPageFile.floatValue(); 
    float availPage = memInfo.ullAvailPageFile.floatValue(); 
    float availRam = memInfo.ullAvailPhys.floatValue(); 

    System.out.println(memInfo.dwMemoryLoad); 
    System.out.println("RAM "+RAM/toMB); 
    System.out.println("RAM avail "+availRam/toMB); 
    float ramUsed = RAM-availRam; 
    System.out.println("RAM used "+ramUsed/toMB); 
    System.out.println("Total page(RAM+Page) "+(totalPage)/toMB); 
    float totalPageWithoutRam = totalPage-RAM; 
    System.out.println("Total page(without RAM) "+(totalPageWithoutRam)/toMB); 
    System.out.println("Total avail page(With free ram) "+availPage/toMB); 
    float avialPageWithoutRam = availPage-availRam; 
    System.out.println("Total page avail(Without ram) "+(avialPageWithoutRam)/toMB); 
    System.out.println("Page used so far(Without ram) "+(totalPageWithoutRam-avialPageWithoutRam)/toMB); 

И это выход:

82 
RAM 12285.582 
RAM avail 2167.6758 
RAM used 10117.906 
Total page(RAM+Page) 24569.348 
Total page(without RAM) 12283.766 
Total avail page(With free ram) 12115.641 
Total page avail(Without ram) 9947.965 
Page used so far(Without ram) 2335.8008 

я получил тот же результат сверху используя GetPerformanceInfo также.

Но это выглядит отличается от того, что я получаю, когда я бегу Wmic файл подкачки

wmic:root\cli>pagefile list /format :list 


AllocatedBaseSize=12285 
CurrentUsage=843 
Description=C:\pagefile.sys 
InstallDate=20120329043502.876449+330 
Name=C:\pagefile.sys 
PeakUsage=843 
Status= 
TempPageFile=FALSE 

Почему я вижу разницу?

+0

Вы смотрите на источник 'pagefileconfig.vba' для вдохновения? Я бы предположил (с тех пор, как мне не хватает копии), что он будет содержать набор вызовов для библиотек или исполняемых команд, которые могут быть связаны с задачей, хотя я бы предположил, что вызовы изменились бы в Windows 7. – hexafraction

ответ

1

Ну, информация передается через WMI, вы можете использовать инструмент командной строки wmic для отображения информации о файле.

например. на моем рабочем столе:

C:\WINDOWS\system32>wmic pagefile list /format:list 


AllocatedBaseSize=3840 
CurrentUsage=213 
Description=C:\pagefile.sys 
InstallDate=20110616154020.168800+060 
Name=C:\pagefile.sys 
PeakUsage=231 
Status= 
TempPageFile=FALSE 

Вы можете интегрировать его с помощью ProcessBuilder, и т.д ...

Как было предложено, это раскрывающую Win32_PageFileUsage структуру, которая определяет размеры в мегабайтах.

+0

Спасибо. Я попробую это. :) –

+0

Отрасль распределяется, текущее потребление и пиковая стоимость в МБ? –

+1

Вы по существу читаете структуры данных ['Win32_PageFileUsage'] (http://msdn.microsoft.com/en-us/library/aa394246 (v = vs.85) .aspx), которые определяют размеры в MB. – Petesh

Смежные вопросы