Toon posts:

[Delphi/C++] Gebruik van Performance Counters

Pagina: 1
Acties:

Verwijderd

Topicstarter
De laatste tijd ben ik aan het uitzoeken hoe je systeem performance gegevens (zoals CPU-, geheugen-, Netwerk-gebruik) kunt opvragen in Windows NT/2000/XP.

Van de Win32 API Help heb ik begrepen dat dat kan met de zogenaamde PDH functies (Performance Data Helper).
Ik weet ongeveer welke functies ik moet gebruiken, maar de waarden die ik moet invullen voor de variabele "FullCounterPath" (zie code hieronder) is mij nog volstrekt onduidelijk... :?

Kan mij misschien iemand hiermee helpen??????
Of misschien weet iemand een andere oplossing om de performance gegevens makkelijk op te vragen (misschien weet iemand een handige unit :? N.B. ik werk niet met Delphi comps, maar met "raw" API functies... )

Ik het de volgende code in Delphi 6 Personal Edition gebruikt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//Globale Varibalen
var
  CurrentRawData:Cardinal;
  PreviouseRawData:Cardinal;
  NetworkUsage:Integer;

//Procedure GetNetworkUsage
procedure GetNetworkUsage;
var UserData:Cardinal;
    Query:THandle;
    FullCounterPath:PChar;
    Counter:THandle;
    Format:DWORD;
    ValueType:DWORD;
    ValueCounter:Double;
begin

 //Creating Query
 UserData:=10;
 PdhOpenQuery(nil,UserData,Query);

 //Add Counter
 FullCounterPath:=PChar(''); //Hier weet ik dus niet wat ik moet invullen...
 PhdAddCounter(Query,FullCounterPath,UserData,Counter);

 //Collecting Data
 PhdCollectQueryData(Query);

 //Get Counter Data
 Format:=PDH_FMT_DOUBLE;
 PdhGetFormattedCounterValue(Counter,Format,ValueType,ValueCounter);
 
 PreviousRawData:=CurrentRawData;
 CurrentRawData:=ValueCounter;

 PdhCalculateCounterFromRawValue(Counter,Format,PreviousRawData,CurrentRawData,NetworkUsage);

 //Remove Counter
 PhdRemoveCounter(Counter);

 //Close Query
 PhdCloseQuery(Query);

end;

Thanx 4 helping :)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:44

Creepy

Tactical Espionage Splatterer

(jarig!)
Bij delphi-Jedi (http://www.delphi-jedi.org) kan je perfmon downloaden. Dit zijn alle PDH funties, constanten etc. vertaald van de C header files naar Object Pascal. Voor Delphi 5 is deze wel makkelijk, geen idee of deze voor Delphi 6 nog nodig is.

Maar... hierbij zit ook een voorbeeld app. (met source..) die alle mogelijke paden afgaat. Dus kan je precies zien wat je kan gebruiken

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney