Avatar billede gf4ever Nybegynder
15. februar 2002 - 13:16 Der er 11 kommentarer og
1 løsning

Memory detection på Windows NT 4.0

Hi,

Jeg skal have lavet et program der kan finde ud af hvor meget hukommelse der er installet på en Windows NT 4.0 computer.

Programmet skal også kunne klare at der er mere end 2 GB installeret.

mvh.
Avatar billede alapalooza Nybegynder
15. februar 2002 - 13:22 #1
Avatar billede alapalooza Nybegynder
15. februar 2002 - 13:23 #2
Ellers kan dette program nok også.
http://mohamed.freeyellow.com/memstat.zip
Avatar billede gf4ever Nybegynder
15. februar 2002 - 13:31 #3
Tak for inputtet. Problemet er bare at jeg skal bruge sovsen.
Avatar billede wisen Nybegynder
15. februar 2002 - 13:33 #4
Avatar billede wisen Nybegynder
15. februar 2002 - 13:34 #5
Avatar billede gf4ever Nybegynder
15. februar 2002 - 14:48 #6
Problemet med disse er at de bruger --GlobalMemoryStatus-- til at finde memory phisical memory installed og den virker ikke på en NT 4.0 med mere en 2 GB.

cut fra MSDN

On Intel x86 computers with more than 2 GB and less than 4 GB of memory, the GlobalMemoryStatus function will always return 2 GB in the dwTotalPhys member of the MEMORYSTATUS structure.
Avatar billede wisen Nybegynder
15. februar 2002 - 15:12 #7
DOH! Så ved jeg sq ik'
Avatar billede mbulow Nybegynder
16. februar 2002 - 23:29 #8
Har du set den her artikel fra Microsoft's KnowledgeBase?
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q274558

Det står noget om at sætte en linker-option: /LARGEADDRESSAWARE der skulle flytte GlobalMemoryStatus's begrænsning fra 2GB til 4GB

Hvis ikke du har prøvet det, er det da forsøget værd, men den må du nu selv klare, for jeg kan godt nok kun 256MB ;) Hehe
Avatar billede kamikaze Nybegynder
18. februar 2002 - 16:19 #9
Jeg tror du mangler flg:

#include <conio.h>
#include <iostream.h>
#include <windows.h>
//#include <winbase.h>

int main()
{
  MEMORYSTATUS ms;
  ms.dwLength = sizeof(MEMORYSTATUS);
  GlobalMemoryStatus(&ms);
  cout << "Der er " << ms.dwTotalPhys << " hukommelse i alt." << endl;
  cout << "Der er " << ms.dwAvailPhys << " hukommelse tilbage." << endl;
  cout << "<any key>" << endl;
  getch();
}
Avatar billede kamikaze Nybegynder
18. februar 2002 - 16:20 #10
winbase.h er den header der definerer MEMORYSTATUS. Men Windows.h inkulderer winbase.h, så derfor behøver du ikke selv at gøre det.

Ovenstående virker i MSVC++ konsol appl.
Avatar billede kamikaze Nybegynder
18. februar 2002 - 16:22 #11
DDDDDDDOOOOOOOOOHHHHHHHHHH!!!!!!!!!!! Der var jeg for hurtig.....Læste ikke alle svar igennem. Mere end 2GB?!?!?!?!?!?!?!?! Så er jeg lost!!!
Avatar billede gf4ever Nybegynder
19. februar 2002 - 15:04 #12
mbulow, Det ser ud til at virke. Thx. (/LARGEADDRESSAWARE)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester