![]() |
Wo ist der Speicher?
Hallo,
Windows zeigt richtig 2 GB, das Bios auch. Wenn ich per GlobalMemoryStatus dmTotalPhys auslese, kriege ich nur 2046 MB, genau 1.658.880 Byte weniger. :( Mein Freund hat 1.280MB. Per GlobalMemoryStatus werden nur 1279MB angezeigt. :( Wo ist der Rest? Und wie rechnet Windows das korrekt hoch? Gruß Mattze |
Re: Wo ist der Speicher?
Das hat offensichtlich mit der Heisenberg'schen Unschärferelation zu tun, nach der die Überprüfung eines zu messenden Wertes eben diesen durch die Messung verfälscht. Hier scheint es der Code zu sein, der den freien Speicher misst, dabei aber selber Speicher verbraucht. :wink:
|
Re: Wo ist der Speicher?
Hallo,
schau mal bitte beim ![]() @Uwe Raabe Deine Antwort gefällt mir 8) |
Re: Wo ist der Speicher?
ich glaub Speicher für dir Grafikkarte (Shared Memory) und z.B. für die Cache des BIOS wird auch oftmals Speicher abgezwackt, welcher dann nicht für Windows zur Verfügung steht und demnach nicht angezeigt wird.
Und dann gibt es ja auch noch Rundungsfehler. |
Re: Wo ist der Speicher?
Ich bin mir zwar jetzt auch nicht so sicher, aber wenn man sich mal die Fertigungsgenauigkeiten und auch die Fähigkeit der Messverfahren sieht, die zwar schon sehr gut sind aber ebend nicht perfekt, solltest du eh immer damit rechnen, dass du nicht wirklich genau 2GB Speicher hast sonder nur annähernd 2GB. Gehen wir jetzt mal davon aus, dass nur bei der Fertigung und bei der Messung "kleine" Fehler auftreten (lassen wir mal Bios und andere Bereiche außer Acht, die auch noch Speicher benötigen), welche sich dann auch noch Addieren, dann kommen wir bei 2.048.000.000 und fehlenden 1.658.880 Byte auf einen Gesamtfehler von 0,081%.
Jetzt kommt noch der Einwurf von ein paar meiner Vorredner dazu, dass Speicher ja auch bei der Messung belegt ist, also kannst du grob sagen der fehlende Speicher x liegt wohl locker unter 0,081%. Ich finde das ist eigentlich ok. Wenn du aber vieleicht genaueres Wissen willst, kannst du zumindest den Messfehler verbessern, indem du Messreihen anlegst und zwischen den Messreihen vieleicht auch die Vergleichsbedingungen (eins der Merkmale muss geändert werden: Messverfahren, Durchführender oder Messort). Für näheres hält die Familie der DIN9000 mehr Informationen bereit. Hoffe der Beitrag konnte dir etwas weiter helfen. BAMatze |
Re: Wo ist der Speicher?
Zitat:
Umrechnungsfehler... entweder im Programm, API oder sonstwo. Einfach aufrunden mit 32 MByte Genauigkeit. So kleine Riegel verbaut ja heute keiner mehr. |
Re: Wo ist der Speicher?
Zitat:
|
Re: Wo ist der Speicher?
Zitat:
Aber dann ist dmTotalPhys der falsche Begriff, denn egal wie viel irgendwer abzwackt, bleiben 2048 MByte physikalisch installierter Speicher. Muss man dann wohl als ein dmTotalAvailAfterBiosCatchHisPart sehen. Bleibt also nur runden nach oben, wenn man die installierte (Hardware) Speicher-Menge anzeigen will. |
Re: Wo ist der Speicher?
dmTotalPhys ist sozusagen der totale und Windows zur Verfügung stehende Speicher ... und da stimmt der Name schon irgendwie :angel2:
|
Re: Wo ist der Speicher?
Ok, dann gebe ich mich geschlagen, wohl nur eine Frage der Formulierung.
Dann (wenn man den installierten Speicher will) 31 Mbyte dazu zählen und wieder auf 32 MByte Genauigkeit abrunden. Können ja immerhin 18 MByte weniger sein, soweit die von mir gefunden Berichte stimmen. |
Re: Wo ist der Speicher?
wenn du wirklich den "korrekten" vorhandenen Speicher haben willst, dann kommst du nicht umhin die Speicherbänke abzufragen.
z.B. bei einigen Notebooks sind mal locker mehr als 32 MB weg (für die Grafikkarte) |
Re: Wo ist der Speicher?
Hallo,
au-weiha. Habe ich ja was losgetreten. GlobalMemoryStatus zeigt mit und ohne EX das gleiche an. Und Windows XP zeigt zu mindestens in den Eigenschaften vom Arbeitsplatz 2GB an. Da es ja 2GB-2MB sind fragt sich, ob die da nur aufgerundet haben? (Fände ich nicht korrekt, aber was ist bei Windows schon korrekt...) Gruß Mattze |
Re: Wo ist der Speicher?
Hallo,
noch eine Frage dazu (aus Interesse): Eigentlich wollte ich den Speicher "spaßeshalber" auf das Byte genau angeben. himitsu hat geschrieben, dass man da wohl nicht umhin kommt, die Speicherbänke direkt abzufragen. Wie geht denn das? Sooo tief bin ich noch nie in die Abgründe niedergestiegen. Gruß Mattze |
Re: Wo ist der Speicher?
Das geht mit WMI und Win32_PhysicalMemory relativ einfach:
![]() ![]() |
Re: Wo ist der Speicher?
Hallo,
vielen Dank für Eure Tipps. Geht das auch irgendwie direkt, ohne WMI? Ich zitiere aus dem zuletzt genannten Link: "Da ich bei Delphi+WMI jedesmal Hautausschlag kriege..." Sicher, das ist ganz anders gemeint, aber es illustriert, wie es mir geht. Es hat sich schon soviel zwischen System und Programmierer geschoben. Und da kommt noch WMI daher und erhöht auch noch gleichzeitig die Abhängigkeit von MS. Ich mag WMI nicht! Und WMI greift auch nur auf die API-Funktionen zu. Sicherlich auch auf von MS nicht dokumentierte - was ja schon eine Frechheit von denen ist! Dazu vielleicht auch noch auf Funktionen des DDK. Jedenfalls müsste man das auch direkt als einfacher Programmierer mit der API hinbekommen, oder? Gruß Mattze |
Re: Wo ist der Speicher?
Zitat:
![]() Zitat:
Zudem wäre das dann teilweise nicht identisch je nach Windowsversion bzw. BIOS. All das müsstest du dann selbst basteln. Ich sehe darin zwar keinerlei Sinn, aber wenn du dir die Arbeit machen willst, dann kannst du das natürlich versuchen. Wie du von den Treibern bzw. dem BIOS die Informationen abfragst, kann ich dir aber nicht sagen. |
Re: Wo ist der Speicher?
Hallo,
Zitat:
Also nutzt MS dabei Dinge, die es nicht-MS-Programmierern vorenthält. Und damit wären wir dann bei den MS-Hassern - zu denen ich NICHT zähle. Aber, ich möchte darüber nicht diskutieren. Jeder hat nun mal seine Interessen und Vorlieben und Nachlieben und und und... Gruß Mattze |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz