Speicherauslastung von Prozess auslesen (WinAPI)

Hi,

ich mal wieder mit ner WinAPI Frage :smiley: . Weiß jemand zufällig wie ich unter Windows (so viele Versionen wie möglich, am Liebsten aber XP) den Arbeitsspeicherverbrauch einer Applikation auslesen kann?

Danke!

hier ich hab das gerade gefunden, vielleicht hilft dir das http://msdn.microsoft.com/en-us/library/ms682050.aspx

Schaut gut aus, danke! Mal schauen ob ich was damit anfangen kann :slight_smile: .

Beim kompilieren bekomme ich folgende Fehlermeldung

gcc.exe -mno-cygwin -Wl,–add-stdcall-alias -shared -m32 -mno-cygwin -shared -o out/MemoryReader.dll -fPIC build/Release/Cygwin-Windows/MemoryReader.o
build/Release/Cygwin-Windows/MemoryReader.o:MemoryReader.c:(.text+0x4bd): undefined reference to `_GetProcessMemoryInfo@12’

Vermutlich findet er die Definition von GetProcessMemoryInfo nicht. Aber warum?

Danke!

Ich vermute dass du vielleicht weitere Include Pfade setzen musst. Weil du verwendest ja den gcc und das ist ne MS Seite die ja immer von VS ausgehen.

included ist alles, was auf der msdn Website verlangt ist. Wenn er ein include nicht finden würde, wäre das auch eine andere Fehlermeldung.

Ich glaube er hat vielmehr Probleme beim Linken …

ja ich kenn das noch so, dass man dem Linker extra sagen muss wo er einige Sachen findet

Und ne Idee „wie“ hast du nicht zufällig? Ich google mich heut schon halba tot … :frowning:

Naja ich hab das nur bei VS gehabt und da hatte ich halt den Ordner mit den Dateien in meinem Projekt. Den hab ich VS dann unter der Linkeroption angegeben.
Du müsstest dazu halt mal nachsehen wo sich das bei dir befindet und das irgendwo dem Linker mitgeben

Du musst die „Psapi.Lib“ mit linken darin befindet sich der ganze Spaß. Zu finden im Plattform SDK.

Gut Schuß
VuuRWerK :wink:

Sorry, aber ich bin irgendwie zu blöd dafür :grr: . Ich schmeiß jetzt einfach mal n paar Daten in Raum, evtl. kann mir das dann jemand für Dummies erklären :smiley: .

Auf C gefundene Dateien mit psapi im Namen:
C:\Windows\System32\psapi.dll
C:\Programme\Cygwin\lib\w32api\libpsapi.a
C:\Programme\Cygwin\usr\include\w32api\psapi.h

Allgemein:
Betriebssystem: WinXP SP3
IDE: Netbeands 6.1 mit C/C++ Plugin
Compiler/Linker: cygwin
Configuration Type: Dynamic Library

C-Compiler Optionen:
Include-Directories: %javapath%/include, %javapath%/include/w32 (halt für JNI)
Additional Options: -mno-cygwin -Wl,–add-stdcall-alias -shared -m32

Linker Optionen:
Additional Library Directories: C:/Programme/Cygwin/lib/w32api

Ansonsten sind alles Werte unverändert - genauso wie die Fehlermeldung :twisted:

ich würd sagen du brauchst die dll auch noch (ka was die a für eine Datei ist)

ich hab gerade mal rumgespielt als ich “#pragma comment(lib, “Psapi.lib”)” mit eingetragen hab liefs durch

Die *.dll wird erst zur Laufzeit vom Programm geladen und spielt beim kompilieren und linken noch keine Rolle. Du benötigst die *.lib Datei die Du dann mit linken musst. Die findest Du wiegesagt im Plattform SDK.

Gut Schuß
VuuRWerK :wink:

Edit: @Eagle, das ist genau der selbe Weg wie als wenn mans dem Linker mitgibt, aber wenn die lib nicht da ist hilft es auch so nicht :slight_smile:
P.S.: eine *.a Datei ist doch eigentlich eine statische lib bei Unix, quasi das äquivalent einer *.lib auf Windoof. Oder? :confused:

naja ich hab bei mir gesucht und da gab es keine lib nur Header und DLL
Edit: keine Ahnung mir sind sie noch nie begegnet :wink:
Sollten wir vielleicht mal nen Wiki Artikel zu machen (Dateitypen und wofür sie sind)

Die *.a Dateien sind für das „Ada Developement Enviroment“, hat also nix mit C zu tun und sind plattformunabhängig :slight_smile:
→ Quelle: endungen.de

Wegen WiKi: Vielleicht reicht es ja auf diese Seite zu verlinken, da sind über 9000 Endungen gespeichert.

Man kann dennoch nur eine *.lib linken und die brauch der NULL zum weiterarbeiten. hab selber shcon mit der psAPI gearbeitet und ebenfalls in Verbindung mit JNI.

Gut Schuß
VuuRWerK :wink:

Mal schauen, wann cih die Zeit finde mich damit nochmal auseinander zu setzen :wink: . Aber Danke erstmal für die Antworten!