1 ! Copyright (C) 2008 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.strings
4 kernel libc math namespaces system-info.backend
5 system-info.windows windows windows.advapi32
6 windows.kernel32 system byte-arrays windows.errors
7 classes classes.struct ;
8 IN: system-info.windows.nt
10 M: winnt cpus ( -- n )
11 system-info SYSTEM_INFO-dwNumberOfProcessors ;
13 : memory-status ( -- MEMORYSTATUSEX )
14 "MEMORYSTATUSEX" <struct>
15 dup class heap-size >>dwLength
16 dup GlobalMemoryStatusEx win32-error=0/f ;
18 M: winnt memory-load ( -- n )
19 memory-status dwMemoryLoad>> ;
21 M: winnt physical-mem ( -- n )
22 memory-status ullTotalPhys>> ;
24 M: winnt available-mem ( -- n )
25 memory-status ullAvailPhys>> ;
27 M: winnt total-page-file ( -- n )
28 memory-status ullTotalPageFile>> ;
30 M: winnt available-page-file ( -- n )
31 memory-status ullAvailPageFile>> ;
33 M: winnt total-virtual-mem ( -- n )
34 memory-status ullTotalVirtual>> ;
36 M: winnt available-virtual-mem ( -- n )
37 memory-status ullAvailVirtual>> ;
39 : computer-name ( -- string )
40 MAX_COMPUTERNAME_LENGTH 1 +
41 [ <byte-array> dup ] keep <uint>
42 GetComputerName win32-error=0/f alien>native-string ;
44 : username ( -- string )
46 [ <byte-array> dup ] keep <uint>
47 GetUserName win32-error=0/f alien>native-string ;