另一種方式獲取計數器路徑

2021-07-03 12:03:28 字數 2315 閱讀 5346

來看看官方文件中關於構造計數器路徑的第二種方式,初始化乙個pdh_counter_path_elements結構體,然後傳遞這個結構體到pdhmakecounterpath函式中,該函式會根據結構體中的資訊返回乙個計數器路徑。

先看一下這個結構體原型:

typedef

struct _pdh_counter_path_elements pdh_counter_path_elements, *ppdh_counter_path_elements;

使用時,szobjectname(物件名)和szcountername(計數器名)必須要有,其他成員則隨意。

以新增 cpu使用率計數器為例:

szmachinename——>」本地計算機」

szobjectname——> 「processor」

szinstancename——> 「_total」

szcountername——>」% processor time」

這樣就和結構體中的成員一一對應起來了。

再來看一下pdhmakecounterpath函式的定義:

pdh_status pdhmakecounterpath(

_in_ pdh_counter_path_elements *pcounterpathelements,

_out_ lptstr szfullpathbuffer,

_inout_ lpdword pcchbuffersize,

_in_ dword dwflags

);

第乙個引數就是之前結構體的指標;

pdh_path_wbem_result //pdh 路徑轉換成wmi 格式

pdh_path_wbem_input //wmi格式轉換成pdh路徑

0//返回pdh 格式

好了,根據上面的介紹我們來試一下使用pdh_counter_path_elements結構體和pdhmakecounterpath函式生成計數器路徑。

pdh_status status;

status = pdhopenquery(null, null, &query);

if (status != error_success)

cout << "open query error"

<< endl;

pdh_counter_path_elements pcpe;

tchar szfullpathbuffer[max_path] = text("");

dword dwsize = sizeof(szfullpathbuffer);

pcpe.szmachinename = text("jxd");

pcpe.szobjectname = text("processor information");

pcpe.szinstancename = text("_total");

pcpe.szcountername = text("% processor time");

pcpe.dwinstanceindex = -1;

pcpe.szparentinstance = null;

status = pdhmakecounterpath(&pcpe, szfullpathbuffer, &dwsize, 0);

if (status != error_success)

cout << "make path error"

<< endl;

cout << "path: "

<< szfullpathbuffer << endl;

最後列印一下計數器路徑看是否正確:

但是按照這種方法一次還是只能獲得乙個計數器,而實際運用時往往要一次獲取多個效能資料(比如我要同時獲得記憶體,磁碟等的資料),有什麼辦法能實現嗎?

讀者可以先自行思考一下,有時間我們再一起**。

sprngMVC獲取request另一種方式

首先,加入 然後在 裡面獲取 在spring api中提供了乙個非常便捷的工具類requestcontextholder,能夠在controller中獲取request物件和response物件,使用方法如下 需要注意的是如果直接使用這個工具類,則會丟擲乙個空指標異常。原因是需要先在web.xml配...

for迴圈的另一種方式

語法 for expr1 expr2 expr3 do done 解釋 expr1 控制變數的初始值 expr2 判定什麼時候退出迴圈 expr3 修正這個變數的值 範例 計算1到100之間的數值的和 這裡面 有倆種方式 最普通的是我們想到的是 1到100之間的數列,另一種是今天的小知識點的運用 這...

另一種尊重

上中學的時候,有一節課印象非常深刻。老師問我們如果無意闖入乙個房間,發現房間裡有一位女士正在洗澡,這時應該怎麼辦?有同學回答就當什麼也沒看見,退出房間。還有同學回答 說聲對不起!女士。然後退出去。老師笑了笑說,還有更好的答案,那就是 對不起,先生!有一對結婚多年的夫妻,有一次出差在外的妻子有一件急事...