2008-12-06 23:58:19 -05:00
|
|
|
! Copyright (C) 2008 Doug Coleman.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2010-09-19 15:02:32 -04:00
|
|
|
USING: accessors alien alien.c-types alien.strings byte-arrays
|
|
|
|
classes.struct combinators kernel math namespaces
|
|
|
|
specialized-arrays system
|
|
|
|
system-info.backend vocabs.loader windows windows.advapi32
|
|
|
|
windows.errors windows.kernel32 words ;
|
2009-09-09 23:33:34 -04:00
|
|
|
SPECIALIZED-ARRAY: ushort
|
2008-12-06 23:58:19 -05:00
|
|
|
IN: system-info.windows
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: system-info ( -- SYSTEM_INFO )
|
2009-08-25 19:19:34 -04:00
|
|
|
SYSTEM_INFO <struct> [ GetSystemInfo ] keep ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: page-size ( -- n )
|
2009-08-25 19:19:34 -04:00
|
|
|
system-info dwPageSize>> ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
! 386, 486, 586, 2200 (IA64), 8664 (AMD_X8664)
|
|
|
|
: processor-type ( -- n )
|
2009-08-25 19:19:34 -04:00
|
|
|
system-info dwProcessorType>> ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
! 0 = x86, 6 = Intel Itanium, 9 = x64 (AMD or Intel), 10 = WOW64, 0xffff = Unk
|
|
|
|
: processor-architecture ( -- n )
|
2009-08-25 19:19:34 -04:00
|
|
|
system-info dwOemId>> HEX: ffff0000 bitand ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-11-17 21:40:53 -05:00
|
|
|
: os-version ( -- os-version )
|
2009-08-29 18:41:08 -04:00
|
|
|
OSVERSIONINFO <struct>
|
|
|
|
OSVERSIONINFO heap-size >>dwOSVersionInfoSize
|
2008-12-03 21:35:03 -05:00
|
|
|
dup GetVersionEx win32-error=0/f ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: windows-major ( -- n )
|
2009-08-29 18:41:08 -04:00
|
|
|
os-version dwMajorVersion>> ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: windows-minor ( -- n )
|
2009-08-29 18:41:08 -04:00
|
|
|
os-version dwMinorVersion>> ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: windows-build# ( -- n )
|
2009-08-29 18:41:08 -04:00
|
|
|
os-version dwBuildNumber>> ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: windows-platform-id ( -- n )
|
2009-08-29 18:41:08 -04:00
|
|
|
os-version dwPlatformId>> ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: windows-service-pack ( -- string )
|
2009-08-29 18:41:08 -04:00
|
|
|
os-version szCSDVersion>> alien>native-string ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: feature-present? ( n -- ? )
|
|
|
|
IsProcessorFeaturePresent zero? not ;
|
|
|
|
|
|
|
|
: sse2? ( -- ? )
|
|
|
|
PF_XMMI64_INSTRUCTIONS_AVAILABLE feature-present? ;
|
|
|
|
|
|
|
|
: sse3? ( -- ? )
|
|
|
|
PF_SSE3_INSTRUCTIONS_AVAILABLE feature-present? ;
|
|
|
|
|
2007-12-05 02:04:23 -05:00
|
|
|
: get-directory ( word -- str )
|
2009-08-31 10:54:35 -04:00
|
|
|
[ MAX_UNICODE_PATH [ <ushort-array> ] keep dupd ] dip
|
2008-12-03 21:35:03 -05:00
|
|
|
execute win32-error=0/f alien>native-string ; inline
|
2007-12-05 02:04:23 -05:00
|
|
|
|
|
|
|
: windows-directory ( -- str )
|
|
|
|
\ GetWindowsDirectory get-directory ;
|
|
|
|
|
|
|
|
: system-directory ( -- str )
|
|
|
|
\ GetSystemDirectory get-directory ;
|
|
|
|
|
|
|
|
: system-windows-directory ( -- str )
|
|
|
|
\ GetSystemWindowsDirectory get-directory ;
|
|
|
|
|
2010-09-19 15:02:32 -04:00
|
|
|
M: winnt cpus ( -- n )
|
|
|
|
system-info dwNumberOfProcessors>> ;
|
|
|
|
|
|
|
|
: memory-status ( -- MEMORYSTATUSEX )
|
|
|
|
MEMORYSTATUSEX <struct>
|
|
|
|
MEMORYSTATUSEX heap-size >>dwLength
|
|
|
|
dup GlobalMemoryStatusEx win32-error=0/f ;
|
|
|
|
|
|
|
|
M: winnt memory-load ( -- n )
|
|
|
|
memory-status dwMemoryLoad>> ;
|
|
|
|
|
|
|
|
M: winnt physical-mem ( -- n )
|
|
|
|
memory-status ullTotalPhys>> ;
|
|
|
|
|
|
|
|
M: winnt available-mem ( -- n )
|
|
|
|
memory-status ullAvailPhys>> ;
|
|
|
|
|
|
|
|
M: winnt total-page-file ( -- n )
|
|
|
|
memory-status ullTotalPageFile>> ;
|
|
|
|
|
|
|
|
M: winnt available-page-file ( -- n )
|
|
|
|
memory-status ullAvailPageFile>> ;
|
|
|
|
|
|
|
|
M: winnt total-virtual-mem ( -- n )
|
|
|
|
memory-status ullTotalVirtual>> ;
|
|
|
|
|
|
|
|
M: winnt available-virtual-mem ( -- n )
|
|
|
|
memory-status ullAvailVirtual>> ;
|
|
|
|
|
|
|
|
: computer-name ( -- string )
|
|
|
|
MAX_COMPUTERNAME_LENGTH 1 +
|
2010-10-20 18:42:53 -04:00
|
|
|
[ <byte-array> dup ] keep uint <ref>
|
2010-09-19 15:02:32 -04:00
|
|
|
GetComputerName win32-error=0/f alien>native-string ;
|
|
|
|
|
|
|
|
: username ( -- string )
|
|
|
|
UNLEN 1 +
|
2010-10-20 18:42:53 -04:00
|
|
|
[ <byte-array> dup ] keep uint <ref>
|
2010-09-19 15:02:32 -04:00
|
|
|
GetUserName win32-error=0/f alien>native-string ;
|