]> gitweb.factorcode.org Git - factor.git/blob - extra/hardware-info/windows/nt/nt.factor
Initial import
[factor.git] / extra / hardware-info / windows / nt / nt.factor
1 USING: alien alien.c-types hardware-info kernel libc math namespaces
2 windows windows.advapi32 windows.kernel32 ;
3 IN: hardware-info.windows.nt
4
5 TUPLE: winnt ;
6 T{ winnt } os set-global
7
8 : memory-status ( -- MEMORYSTATUSEX )
9     "MEMORYSTATUSEX" <c-object>
10     "MEMORYSTATUSEX" heap-size over set-MEMORYSTATUSEX-dwLength
11     [ GlobalMemoryStatusEx ] keep swap zero? [ win32-error ] when ;
12
13 M: winnt memory-load ( -- n )
14     memory-status MEMORYSTATUSEX-dwMemoryLoad ;
15
16 M: winnt physical-mem ( -- n )
17     memory-status MEMORYSTATUSEX-ullTotalPhys ;
18
19 M: winnt available-mem ( -- n )
20     memory-status MEMORYSTATUSEX-ullAvailPhys ;
21
22 M: winnt total-page-file ( -- n )
23     memory-status MEMORYSTATUSEX-ullTotalPageFile ;
24
25 M: winnt available-page-file ( -- n )
26     memory-status MEMORYSTATUSEX-ullAvailPageFile ;
27
28 M: winnt total-virtual-mem ( -- n )
29     memory-status MEMORYSTATUSEX-ullTotalVirtual ;
30
31 M: winnt available-virtual-mem ( -- n )
32     memory-status MEMORYSTATUSEX-ullAvailVirtual ;
33
34 : computer-name ( -- string )
35     MAX_COMPUTERNAME_LENGTH 1+ [ malloc ] keep
36     <int> dupd GetComputerName zero? [
37         free win32-error f
38     ] [
39         [ alien>u16-string ] keep free
40     ] if ;
41  
42 : username ( -- string )
43     UNLEN 1+ [ malloc ] keep
44     <int> dupd GetUserName zero? [
45         free win32-error f
46     ] [
47         [ alien>u16-string ] keep free
48     ] if ;
49