Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Im folgenden Beispiel werden Daten gelesen, die im Beispiel Schreiben von Leistungsdaten in eine Protokolldatei in eine Protokolldatei geschrieben werden. Es verwendet die PdhCollectQueryData-Funktion , um die Daten aus der Protokolldatei abzurufen, und die PdhGetFormattedCounterValue-Funktion , um die Daten für die Anzeige zu formatieren.
#include <windows.h>
#include <stdio.h>
#include <pdh.h>
#include <pdhmsg.h>
#pragma comment(lib, "pdh.lib")
CONST PWSTR COUNTER_PATH = L"\\Processor(0)\\% Processor Time";
void DisplayCommandLineHelp(void)
{
wprintf(L"The command line must contain a valid log file name.\n");
}
void wmain(int argc, WCHAR **argv)
{
HQUERY hQuery = NULL;
HCOUNTER hCounter = NULL;
PDH_STATUS status = ERROR_SUCCESS;
DWORD dwFormat = PDH_FMT_DOUBLE;
PDH_FMT_COUNTERVALUE ItemBuffer;
if (argc != 2)
{
DisplayCommandLineHelp();
goto cleanup;
}
// Opens the log file to write performance data
status = PdhOpenQuery(argv[1], 0, &hQuery);
if (ERROR_SUCCESS != status)
{
wprintf(L"PdhOpenQuery failed with 0x%x\n", status);
goto cleanup;
}
// Add the same counter used when writing the log file.
status = PdhAddCounter(hQuery, COUNTER_PATH, 0, &hCounter);
if (ERROR_SUCCESS != status)
{
wprintf(L"PdhAddCounter failed with 0x%x\n", status);
goto cleanup;
}
// Read a performance data record.
status = PdhCollectQueryData(hQuery);
if (ERROR_SUCCESS != status)
{
wprintf(L"PdhCollectQueryData failed with 0x%x\n", status);
goto cleanup;
}
while (ERROR_SUCCESS == status)
{
// Read the next record
status = PdhCollectQueryData(hQuery);
if (ERROR_SUCCESS == status)
{
// Format the performance data record.
status = PdhGetFormattedCounterValue(hCounter,
dwFormat,
(LPDWORD)NULL,
&ItemBuffer);
if (ERROR_SUCCESS != status)
{
wprintf(L"PdhGetFormattedCounterValue failed with 0x%x.\n", status);
goto cleanup;
}
wprintf(L"Formatted counter value = %.20g\n", ItemBuffer.doubleValue);
}
else
{
if (PDH_NO_MORE_DATA != status)
{
wprintf(L"PdhCollectQueryData failed with 0x%x\n", status);
}
}
}
cleanup:
// Close the query.
if (hQuery)
PdhCloseQuery(hQuery);
}