2017-08-25 12 views
0

タスクマネージャに示すようにネットワークアダプタの使用率を取得しようとしています。 私はWMIを使用しようとしましたが、毎秒送信されるバイト/バイトを受信できます。タスクマネージャ(0-100%)に表示されている計算済みの値を取得する方法はありますか、またはこれらを使用してその値を計算することはできますか?C++はタスクマネージャのようなネットワーク利用を得ます

enter image description here

IEnumWbemClassObject* pEnumerator = NULL; 
hres = pSvc->ExecQuery(
    bstr_t("WQL"), 
    bstr_t("SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface"), 
    WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
    NULL, 
    &pEnumerator); 

if (FAILED(hres)) 
{ 
    cout << "Query for operating system name failed." 
     << " Error code = 0x" 
     << hex << hres << endl; 
    pSvc->Release(); 
    pLoc->Release(); 
    CoUninitialize(); 
    return 1;    // Program has failed. 
} 


// Get the data from the query 
IWbemClassObject *pclsObj = NULL; 
ULONG uReturn = 0; 

while (pEnumerator) 
{ 

    HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, 
     &pclsObj, &uReturn); 

    if (0 == uReturn) 
    { 
    break; 
    } 


    VARIANT vtProp; 
    VariantInit(&vtProp); 

    hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0); 
    wcout << " network adapter : " << vtProp.bstrVal << endl; 
    VariantClear(&vtProp); 

    hr = pclsObj->Get(L"BytesReceivedPerSec", 0, &vtProp, 0, 0);   
    wcout << " BytesReceivedPerSec : " << vtProp.bstrVal << endl; 
    VariantClear(&vtProp); 

    hr = pclsObj->Get(L"BytesSentPerSec", 0, &vtProp, 0, 0);   
    wcout << " BytesSentPerSec : " << vtProp.bstrVal << endl; 
    VariantClear(&vtProp); 

    hr = pclsObj->Get(L"Timestamp_Sys100NS", 0, &vtProp, 0, 0); 
    wcout << " Timestamp_Sys100NS : " << vtProp.bstrVal << endl; 
    VariantClear(&vtProp); 




    pclsObj->Release(); 
} 

答えて

0

あなたのクエリを使用すると、パーセンテージを計算することが可能なフィールドCurrentBandwidthが、含まれています。

float pct = (BytesReceivedPerSec * 100.f)/(CurrentBandwidth * 800.f) 
+0

しかし、この計算では、ネットワークトラフィックがあまり多くない場合でも、97%以上の割合でこの計算が行われています。 – user1754598

+0

私の悪いですが、デフォルトのスケールは-6 ...ビット/ sです –

+0

ありがとうございました。あなたのサポートのためにありがとうございます。この例はC#のためのものですが、それはタスクマネージャーのために行われたようです。私はこれをC++で試すhttps://web.archive.org/web/20080315235958/http://nayyeri.net/blog/how-to-calculate-network-utilization-in-net/ – user1754598

関連する問題