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?