我用性能计数器取CPU占用率,但是PdhCollectQueryData函数的返回值总是PDH_NO_DATA,求解这是为什么?
部分代码如下:
szProc db "\\Processor Information(_Total)\\%Processor Time",0
invoke PdhOpenQuery,NULL,NULL,addr hQuery
invoke PdhAddCounter,hQuery,addr szProc,NULL,addr hCounter
invoke PdhCollectQueryData,hQuery
invoke PdhGetFormattedCounterValue,hCounter,4,NULL,addr stCPU
invoke PdhCloseQuery,hQuery
我测试过,PdhAddCounter函数是返回成功的。
------解决方案--------------------
晕,那个 "\\Processor(_Total)\\% Processor Time" 是 c/c++ 的写法,汇编里应该是 "\Processor(_Total)\% Processor Time",因为汇编里没有把反斜杠字符作为控制符。