1 USING: alien alien.c-types hardware-info kernel libc math namespaces
2 windows windows.advapi32 windows.kernel32 ;
3 IN: hardware-info.windows.nt
6 T{ winnt } os set-global
8 : memory-status ( -- MEMORYSTATUSEX )
9 "MEMORYSTATUSEX" <c-object>
10 "MEMORYSTATUSEX" heap-size over set-MEMORYSTATUSEX-dwLength
11 [ GlobalMemoryStatusEx ] keep swap zero? [ win32-error ] when ;
13 M: winnt memory-load ( -- n )
14 memory-status MEMORYSTATUSEX-dwMemoryLoad ;
16 M: winnt physical-mem ( -- n )
17 memory-status MEMORYSTATUSEX-ullTotalPhys ;
19 M: winnt available-mem ( -- n )
20 memory-status MEMORYSTATUSEX-ullAvailPhys ;
22 M: winnt total-page-file ( -- n )
23 memory-status MEMORYSTATUSEX-ullTotalPageFile ;
25 M: winnt available-page-file ( -- n )
26 memory-status MEMORYSTATUSEX-ullAvailPageFile ;
28 M: winnt total-virtual-mem ( -- n )
29 memory-status MEMORYSTATUSEX-ullTotalVirtual ;
31 M: winnt available-virtual-mem ( -- n )
32 memory-status MEMORYSTATUSEX-ullAvailVirtual ;
34 : computer-name ( -- string )
35 MAX_COMPUTERNAME_LENGTH 1+ [ malloc ] keep
36 <int> dupd GetComputerName zero? [
39 [ alien>u16-string ] keep free
42 : username ( -- string )
43 UNLEN 1+ [ malloc ] keep
44 <int> dupd GetUserName zero? [
47 [ alien>u16-string ] keep free