more structs

db4
Doug Coleman 2009-08-25 18:19:34 -05:00
parent 003db124e2
commit d109126c4b
3 changed files with 45 additions and 44 deletions

View File

@ -267,42 +267,42 @@ STRUCT: PROCESS_INFORMATION
{ dwProcessId DWORD }
{ dwThreadId DWORD } ;
C-STRUCT: SYSTEM_INFO
{ "DWORD" "dwOemId" }
{ "DWORD" "dwPageSize" }
{ "LPVOID" "lpMinimumApplicationAddress" }
{ "LPVOID" "lpMaximumApplicationAddress" }
{ "DWORD_PTR" "dwActiveProcessorMask" }
{ "DWORD" "dwNumberOfProcessors" }
{ "DWORD" "dwProcessorType" }
{ "DWORD" "dwAllocationGranularity" }
{ "WORD" "wProcessorLevel" }
{ "WORD" "wProcessorRevision" } ;
STRUCT: SYSTEM_INFO
{ dwOemId DWORD }
{ dwPageSize DWORD }
{ lpMinimumApplicationAddress LPVOID }
{ lpMaximumApplicationAddress LPVOID }
{ dwActiveProcessorMask DWORD_PTR }
{ dwNumberOfProcessors DWORD }
{ dwProcessorType DWORD }
{ dwAllocationGranularity DWORD }
{ wProcessorLevel WORD }
{ wProcessorRevision WORD } ;
TYPEDEF: void* LPSYSTEM_INFO
C-STRUCT: MEMORYSTATUS
{ "DWORD" "dwLength" }
{ "DWORD" "dwMemoryLoad" }
{ "SIZE_T" "dwTotalPhys" }
{ "SIZE_T" "dwAvailPhys" }
{ "SIZE_T" "dwTotalPageFile" }
{ "SIZE_T" "dwAvailPageFile" }
{ "SIZE_T" "dwTotalVirtual" }
{ "SIZE_T" "dwAvailVirtual" } ;
STRUCT: MEMORYSTATUS
{ dwLength DWORD }
{ dwMemoryLoad DWORD }
{ dwTotalPhys SIZE_T }
{ dwAvailPhys SIZE_T }
{ dwTotalPageFile SIZE_T }
{ dwAvailPageFile SIZE_T }
{ dwTotalVirtual SIZE_T }
{ dwAvailVirtual SIZE_T } ;
TYPEDEF: void* LPMEMORYSTATUS
C-STRUCT: MEMORYSTATUSEX
{ "DWORD" "dwLength" }
{ "DWORD" "dwMemoryLoad" }
{ "DWORDLONG" "ullTotalPhys" }
{ "DWORDLONG" "ullAvailPhys" }
{ "DWORDLONG" "ullTotalPageFile" }
{ "DWORDLONG" "ullAvailPageFile" }
{ "DWORDLONG" "ullTotalVirtual" }
{ "DWORDLONG" "ullAvailVirtual" }
{ "DWORDLONG" "ullAvailExtendedVirtual" } ;
STRUCT: MEMORYSTATUSEX
{ dwLength DWORD }
{ dwMemoryLoad DWORD }
{ ullTotalPhys DWORDLONG }
{ ullAvailPhys DWORDLONG }
{ ullTotalPageFile DWORDLONG }
{ ullAvailPageFile DWORDLONG }
{ ullTotalVirtual DWORDLONG }
{ ullAvailVirtual DWORDLONG }
{ ullAvailExtendedVirtual DWORDLONG } ;
TYPEDEF: void* LPMEMORYSTATUSEX

View File

@ -3,37 +3,38 @@
USING: alien alien.c-types alien.strings
kernel libc math namespaces system-info.backend
system-info.windows windows windows.advapi32
windows.kernel32 system byte-arrays windows.errors ;
windows.kernel32 system byte-arrays windows.errors
classes classes.struct ;
IN: system-info.windows.nt
M: winnt cpus ( -- n )
system-info SYSTEM_INFO-dwNumberOfProcessors ;
: memory-status ( -- MEMORYSTATUSEX )
"MEMORYSTATUSEX" <c-object>
"MEMORYSTATUSEX" heap-size over set-MEMORYSTATUSEX-dwLength
"MEMORYSTATUSEX" <struct>
dup class heap-size >>dwLength
dup GlobalMemoryStatusEx win32-error=0/f ;
M: winnt memory-load ( -- n )
memory-status MEMORYSTATUSEX-dwMemoryLoad ;
memory-status dwMemoryLoad>> ;
M: winnt physical-mem ( -- n )
memory-status MEMORYSTATUSEX-ullTotalPhys ;
memory-status ullTotalPhys>> ;
M: winnt available-mem ( -- n )
memory-status MEMORYSTATUSEX-ullAvailPhys ;
memory-status ullAvailPhys>> ;
M: winnt total-page-file ( -- n )
memory-status MEMORYSTATUSEX-ullTotalPageFile ;
memory-status ullTotalPageFile>> ;
M: winnt available-page-file ( -- n )
memory-status MEMORYSTATUSEX-ullAvailPageFile ;
memory-status ullAvailPageFile>> ;
M: winnt total-virtual-mem ( -- n )
memory-status MEMORYSTATUSEX-ullTotalVirtual ;
memory-status ullTotalVirtual>> ;
M: winnt available-virtual-mem ( -- n )
memory-status MEMORYSTATUSEX-ullAvailVirtual ;
memory-status ullAvailVirtual>> ;
: computer-name ( -- string )
MAX_COMPUTERNAME_LENGTH 1 +

View File

@ -7,18 +7,18 @@ system alien.strings windows.errors ;
IN: system-info.windows
: system-info ( -- SYSTEM_INFO )
"SYSTEM_INFO" <c-object> [ GetSystemInfo ] keep ;
SYSTEM_INFO <struct> [ GetSystemInfo ] keep ;
: page-size ( -- n )
system-info SYSTEM_INFO-dwPageSize ;
system-info dwPageSize>> ;
! 386, 486, 586, 2200 (IA64), 8664 (AMD_X8664)
: processor-type ( -- n )
system-info SYSTEM_INFO-dwProcessorType ;
system-info dwProcessorType>> ;
! 0 = x86, 6 = Intel Itanium, 9 = x64 (AMD or Intel), 10 = WOW64, 0xffff = Unk
: processor-architecture ( -- n )
system-info SYSTEM_INFO-dwOemId HEX: ffff0000 bitand ;
system-info dwOemId>> HEX: ffff0000 bitand ;
: os-version ( -- os-version )
"OSVERSIONINFO" <c-object>