सीपीयू उपयोग के लिए इस लिंक को देखने के बाद यह करना मुश्किल नहीं है Windows C++ Get CPU and Memory Utilisation With Performance Counters। जहां तक मैं समझता हूं (लेकिन परीक्षण नहीं किया गया है) डिस्क उपयोग को ढूंढना भी संभव है।
विचार Performance Counters का उपयोग करना है। आपकी स्थिति में आपको डिस्क ऑपरेशन के लिए CPU उपयोग के लिए प्रदर्शन काउंटर L"\\Process(program_you_are_interested_in_name)\\% Processor Time"
और संभावित रूप से L"\\Process(program_you_are_interested_in_name)\\Data Bytes/sec"
का उपयोग करने की आवश्यकता है। चूंकि मुझे यकीन नहीं है कि आपको डिस्क ऑपरेशंस के बारे में जानने के लिए किन पैरामीटरों की आवश्यकता है, आप सभी उपलब्ध पैरामीटर की सूची में खुद को देख सकते हैं: Process Object
उदाहरण के लिए आपके पास a_program_name.exe
नाम के साथ एक समवर्ती कार्यक्रम है सीपीयू उपयोग कम से कम दो बार प्रदर्शन काउंटर L"\\Process(a_program_name)\\% Processor Time"
मापने। उदाहरण में यह एक पाश में किया जाता है। इस परीक्षण के साथ मापने के माध्यम से एक मल्टीकोर प्रोसेसर पर चलने वाला एक बहुप्रचारित अनुप्रयोग CPU उपयोग प्रदान कर सकता है जो 100% से अधिक है।
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <pdh.h>
#include <pdhmsg.h>
#include <string.h>
#include <string>
#include <iostream>
// Put name of your process here!!!!
CONST PWSTR COUNTER_PATH = L"\\Process(a_program_name)\\% Processor Time";
void main(int argc, char *argv[]){
PDH_HQUERY hquery;
PDH_HCOUNTER hcountercpu;
PDH_STATUS status;
LPSTR pMessage;
PDH_FMT_COUNTERVALUE countervalcpu;
if((status=PdhOpenQuery(NULL, 0, &hquery))!=ERROR_SUCCESS){
printf("PdhOpenQuery %lx\n", status);
goto END;
}
if((status=PdhAddCounter(hquery,COUNTER_PATH,0, &hcountercpu))!=ERROR_SUCCESS){
printf("PdhAddCounter (cpu) %lx\n", status);
goto END;
}
/*Start outside the loop as CPU requires difference
between two PdhCollectQueryData s*/
if((status=PdhCollectQueryData(hquery))!=ERROR_SUCCESS){
printf("PdhCollectQueryData %lx\n", status);
goto END;
}
while(true){
if((status=PdhCollectQueryData(hquery))!=ERROR_SUCCESS){
printf("PdhCollectQueryData %lx\n", status);
goto END;
}
if((status=PdhGetFormattedCounterValue(hcountercpu, PDH_FMT_LONG | PDH_FMT_NOCAP100, 0, &countervalcpu))!=ERROR_SUCCESS){
printf("PdhGetFormattedCounterValue(cpu) %lx\n", status);
goto END;
}
printf("cpu %3d%%\n", countervalcpu.longValue);
Sleep(1000);
}
END:
;
}
उल्लेख करने के लिए एक और बात है। PdhExpandWildCardPath
आपको कंप्यूटर पर चल रही प्रक्रियाओं की सूची में इस L"\\Process(*)\\% Processor Time"
जैसी स्ट्रिंग का विस्तार करने देता है। और फिर आप प्रत्येक प्रक्रिया के लिए प्रदर्शन काउंटर से पूछ सकते हैं।
स्रोत
2010-03-19 11:05:08
"मैं कोड चाहता हूं" कुछ ऐसा है जो आप किसी कंपनी में प्रोग्रामर के प्रबंधक होते हैं। आप जानते हैं, काम करते हैं। हम काम नहीं करते, मदद करते हैं। :) – GManNickG
जीएमएन: बहुत सच है। क्या मैं इतना बीमार हुआ हूं कि मेरी आंखें अब दोबारा बताती हैं? मुझे लगता है कि गैर-अंग्रेजी बोलने वालों के लिए उस वाक्यांश का उपयोग करना आम बात है जब उनका मतलब है कि वे मदद चाहते हैं या जानना चाहते हैं कि कौन से एपीआई ("कोड") उपयोगी हैं। –
'शीर्ष'? ________ – kennytm