2009-10-28 6 views
6

मैं प्रक्रियाओं की एक सूची (विंडोज़, सी ++) और केबी/सेकंड में डिस्क से कितना पढ़ रहा हूं और लिखना चाहता हूं।विंडोज पर प्रति-प्रक्रिया डिस्क आईओ आंकड़े प्रोग्रामेटिक रूप से प्राप्त कर रहे हैं?

विंडोज 7 के संसाधन मॉनिटर में क्षमता है इसलिए मुझे ऐसा करने में सक्षम होना चाहिए।

हालांकि मैं एक प्रासंगिक एपीआई कॉल खोजने में असमर्थ हूं या परफॉन काउंटर में कुछ भी ढूंढ सकता हूं। क्या कोई मुझे दिशा में इंगित कर सकता है?

+0

मुझे लगता है कि इवेंट ट्रेसिंग (ईटीडब्लू) जाने का एकमात्र तरीका है ... लेकिन सभ्य ईटीडब्ल्यू उदाहरण बहुत दुर्लभ हैं .. – dutchmega

उत्तर

11

आप GetProcessIoCounters कॉल कर सकते हैं समग्र डिस्क मैं/प्रक्रिया प्रति हे डेटा प्राप्त करने - तुम अपने आप को समय-आधारित दर करने के लिए डेल्टा का ट्रैक और परिवर्तित रखने के लिए की आवश्यकता होगी।

यह एपीआई आपको कुल I/O संचालन के साथ-साथ कुल बाइट्स बताएगा।

+0

यदि यह आपको वहां नहीं पहुंचाता है, तो आपको डब्लूएमआई क्वेरी लिखना और लिखना पड़ सकता है। – opello

+4

GetProcessIoCounters() आपको नेटवर्क सहित सभी आईओ संचालन नहीं देता है? – dutchmega

+0

क्या यह ड्राइवर io फ़ंक्शन है? –

3

WMI यह तब तक कर सकता है जब तक आप समय-समय पर कुछ "हालिया" टुकड़े के लिए अंतर आंकड़े प्राप्त करने के लिए इसे स्नैपशॉट करते हैं। This postVBScript के साथ एक विशेष रूप से मिश्रित समाधान प्रस्तुत करता है, जिसमें डब्लूएमआई और Perl से जानकारी को लगातार विंडोज कंसोल में जानकारी प्रस्तुत करना होता है। अजीब भाषा मिश्रण के बावजूद, मुझे लगता है कि यह आपके लिए आवश्यक जानकारी के तरीके के बारे में एक अच्छा उदाहरण है (यह निश्चित रूप से सी ++ में इसे सभी को रिकोड करना संभव होना चाहिए)।

+3

फिर, कुल सभी आईओ संचालन (GetProcessIoCounters() के समान) – dutchmega

संबंधित मुद्दे