2017-03-02 2 views
1

So ist mein Arbeitsplatz endlich um ein Windows NT 4-System mit Windows 7 zu ersetzen. Und ich muss sicherstellen, dass unsere alten Programme auf dem neuen System ausgeführt werden können.Upgrade auf Windows 7 bricht Leistungsindikatoren

Einer, der dies nicht ist, ist ein Dienst zur Leistungsüberprüfung, der den Speicher, die CPU, die Festplatte und die Netzwerknutzung protokolliert. Es beruht stark auf Leistungsindikatoren.

Mein Problem ist, dass auf der neuen Windows 7-Box einige der Leistungsindikatoren nicht mehr funktionieren: Ich bekomme eine PDH_INVALID_DATA Fehler beim Versuch, den Wert zu lesen. Das Problem betrifft insbesondere die folgenden Indikatoren:

\Network Interface(*)\Bytes Total/sec 
\PhysicalDisk(_Total)\% Disk Time 
\PhysicalDisk(_Total)\Avg. Disk Queue Length 
\PhysicalDisk(_Total)\Disk Transfers/sec 
\Processor(_Total)\% Processor Time 
\Server\Bytes Total/sec 

Aber auch andere im gleichen Programm verwendeten Zähler funktionieren (nach einiger geringfügigen Änderung mit den „TCP“ Zähler in „TCPv4“ aufgeteilt zu behandeln sind und „TCPv6“).

\Memory\Commit Limit 
\Memory\Committed Bytes 
\Process(_Total)\Thread Count 
\TCPv4\Connections Established 
\TCPv4\Segments/sec 

Die beteiligten Code (vereinfacht, indem nur einer der Leistungsindikatoren angezeigt) ist:

HQUERY    hQuery; 
HCOUNTER    hCPUUsed; 
DWORD    dwType; 
PDH_FMT_COUNTERVALUE stCounter; 

lStatus = PdhOpenQuery(NULL, 0, &hQuery); // This same HQUERY object is used for all PDH calls 
// ... error handling 
lStatus = PdhAddCounter(hQuery, "\\Processor(_Total)\\% Processor Time", 0, &hCPUUsed); 
// ... error handling 
lStatus = PdhGetFormattedCounterValue(hCPUUsed, PDH_FMT_DOUBLE, &dwType, &stCounter); 
// ... error handling, logging a PDH_INVALID_DATA error from the above line 

Ich versuchte lodctr /r laufen die Leistungsindikatoren für den Wiederaufbau, aber das scheiterte das Problem zu beheben.

Hat sich unter Windows NT 4.0 und 6.1 etwas geändert, das dazu führte, dass diese Leistungsindikatoren nicht mehr funktionierten? Und wie kann ich sie arbeiten lassen?

Antwort

0

Ich habe das Problem gefunden. Einige der Zähler erfordern einen Aufruf an PdhCollectQueryData bevor Sie ihre Daten abrufen können. Windows NT 4.0 vergab die Auslassung, Windows 7 nicht.