PDH获取指定网卡速度
来源:互联网 发布:tensorflow入门 编辑:程序博客网 时间:2024/05/21 10:26
#include <windows.h>#include <stdio.h>#include <conio.h>#include <pdh.h>#include <pdhmsg.h> #pragma comment(lib, "pdh.lib") CONST ULONG SAMPLE_INTERVAL_MS = 1000; CONST PWSTR BROWSE_DIALOG_CAPTION = L"Select a counter to monitor."; void wmain(void) { PDH_STATUS Status; HQUERY Query = NULL; HCOUNTER Counter; PDH_FMT_COUNTERVALUE DisplayValue; DWORD CounterType; SYSTEMTIME SampleTime; PDH_BROWSE_DLG_CONFIG BrowseDlgData;//----Intel[R] Centrino[R] Wireless-N 100----- WCHAR CounterPathBuffer[PDH_MAX_COUNTER_PATH]= L"\\Network Interface(Intel[R] Centrino[R] Wireless-N 100)\\Bytes Received/sec"; // // Create a query. // Status = PdhOpenQuery(NULL, NULL, &Query); if (Status != ERROR_SUCCESS) { wprintf(L"\nPdhOpenQuery failed with status 0x%x.", Status); goto Cleanup; } // // Add the selected counter to the query. // Status = PdhAddCounter(Query, CounterPathBuffer, 0, &Counter); if (Status != ERROR_SUCCESS) { wprintf(L"\nPdhAddCounter failed with status 0x%x.", Status); goto Cleanup; } // // Most counters require two sample values to display a formatted value. // PDH stores the current sample value and the previously collected // sample value. This call retrieves the first value that will be used // by PdhGetFormattedCounterValue in the first iteration of the loop // Note that this value is lost if the counter does not require two // values to compute a displayable value. // Status = PdhCollectQueryData(Query); if (Status != ERROR_SUCCESS) { wprintf(L"\nPdhCollectQueryData failed with 0x%x.\n", Status); goto Cleanup; } // // Print counter values until a key is pressed. // while (!_kbhit()) { Sleep(SAMPLE_INTERVAL_MS); GetLocalTime(&SampleTime); Status = PdhCollectQueryData(Query); if (Status != ERROR_SUCCESS) { wprintf(L"\nPdhCollectQueryData failed with status 0x%x.", Status); } wprintf(L"\n\" %2.2d:%2.2d:%2.2\"", SampleTime.wHour, SampleTime.wMinute, SampleTime.wSecond); // // Compute a displayable value for the counter. // Status = PdhGetFormattedCounterValue(Counter, PDH_FMT_DOUBLE, &CounterType, &DisplayValue); if (Status != ERROR_SUCCESS) { wprintf(L"\nPdhGetFormattedCounterValue failed with status 0x%x.", Status); goto Cleanup; }WCHAR STR[200]; wsprintf(STR,L"%.20g\/s", DisplayValue.doubleValue); } Cleanup: // // Close the query. // if (Query) { PdhCloseQuery(Query); } }