From: Ballard J. <sac...@ho...> - 2004-02-03 08:34:24
|
Use GlobalMemoryStatusEx() for more consistency across NT platforms. unsigned long co_os_get_physical_ram_size( void ) { MEMORYSTATUSEX m ; m.dwLength = sizeof( m ) ; GlobalMemoryStatusEx( &m ) ; if( m.ullTotalPhys > (DWORDLONG) 0xFFF00000 ) return 0xFFF00000 ; // avoids 64bit to 32bit overflow conversion return 0xFFF00000 & (unsigned long) m.ullTotalPhys ; } ----- Original Message ----- From: "Dan Aloni" da...@gm... >[...] > Look at this: > > unsigned long co_os_get_physical_ram_size() > { > MEMORYSTATUS memstat; > > GlobalMemoryStatus(&memstat); > > /* Round up in MBs: */ > > return (memstat.dwTotalPhys + 0xFFFFF) & 0xFFF00000; > } > > It's BAD. > > Does anyone know a better way to get this information? |