factor/basis/system-info/windows/windows.factor

71 lines
1.9 KiB
Factor
Raw Normal View History

2008-12-06 23:58:19 -05:00
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
2009-08-28 06:38:29 -04:00
USING: alien alien.c-types classes.struct accessors kernel
math namespaces windows windows.kernel32 windows.advapi32 words
combinators vocabs.loader system-info.backend system
alien.strings windows.errors specialized-arrays ;
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
: os-version ( -- os-version )
2009-08-29 18:41:08 -04:00
OSVERSIONINFO <struct>
OSVERSIONINFO heap-size >>dwOSVersionInfoSize
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
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 ;
2008-02-04 18:10:49 -05:00
<<
2008-01-30 03:46:39 -05:00
{
2008-12-06 23:58:19 -05:00
{ [ os wince? ] [ "system-info.windows.ce" ] }
{ [ os winnt? ] [ "system-info.windows.nt" ] }
} cond require >>