2013-06-20 10 views
5

जब मैं पी के बारे में जानने के बारे में प्रणाली की वस्तुओं के लिए उपयोग और क्वेरी पाने के लिए/आह्वान मैं .net तरीकों है कि क्योंकि यह सिस्टम के माध्यम से जानकारी की क्वेरी का उपयोग की तुलना में कुछ ध्यान देने योग्य निष्पादन लाभ देख सकते हैं DLLsPInvoke का उपयोग करते हुए एक प्रक्रिया

इस कोड को

[DllImport("psapi.dll", SetLastError = true)] 
static extern bool GetProcessMemoryInfo(IntPtr hProcess, out PROCESS_MEMORY_COUNTERS Memcounters, int size); 

मैं प्रश्न में प्रक्रिया इसलिए मैं सभी मैं इसे की स्मृति के उपयोग के बारे में पता करने की जरूरत पर सवाल खड़ा कर सकता है के बारे में जानकारी के लिए उपयोग हो सकता है में dll आयात करके उदाहरण के लिए।

लेकिन जैसा कि मैं उस लिंक में Win32_PerfFormattedData_PerfProc_Process और Win32_PerfRawData_PerfProc_Process पर नोट कर सकता था ऐसा लगता है कि मैं ऐसी कक्षा तक पहुंच सकता हूं जिसका उपयोग पी/इनवॉक द्वारा नहीं किया जाता है और बहुत विशिष्ट जानकारी पूछता है। दोनों 32 बिट/64 बिट के लिए

uint64 IODataOperationsPerSec; 
uint64 IOOtherOperationsPerSec; 
uint64 IOReadBytesPerSec; 
uint64 IOReadOperationsPerSec; 
uint64 IOWriteBytesPerSec; 
uint64 IOWriteOperationsPerSec; 
uint64 IODataBytesPerSec; 
uint64 IOOtherBytesPerSec; 

uint32 PageFaultsPerSec; 
uint64 PageFileBytes; 
uint64 PageFileBytesPeak; 

आप देख सकते हैं के रूप में, वहाँ भी अलग किया जाता है कार्यों को संसाधित करता है

तो यहाँ मैं निश्चित रूप से पता कर सकता है, कि मैं हो रही है वास्तव में क्या मैं क्वेरी करने के लिए की जरूरत है और उसके बाद मुझे लगता है कि देखा मैं उस वर्ग के माध्यम से मुझे जो कुछ भी चाहिए, उसे प्राप्त कर सकता था, जिसे मैं अनुमान लगा सकता हूं। मुझे लगता है कि एक बराबर है (wmi) लेकिन मैं वास्तव में उस खोज के लिए खोज रहा था, एक कक्षा जो 1 के लिए, मुझे निश्चित रूप से पता चलेगा कि मैं सही ढंग से 32 बिट कार्यों से पूछताछ कर रहा हूं और 64 बिट कार्य और 2 काउंटर सभी एक साथ कक्षा में हैं, I/O, CPU Time, Memory usage और प्रदर्शन समस्या यह है कि यह .NET का उपयोग करने की तुलना में काफी कम प्रदर्शन लाभ है। पिप्रोच

कैसे मैं पी/आह्वान और नहीं खुद .net वर्गों की तरह एक विधि का उपयोग कर के माध्यम से उस वर्ग के लिए उपयोग मिलता है:

तो सवाल है?

और वास्तव में विवरण में प्रबंधित नेट के लिए काउंटरों के बारे में मैंने पाया है कि सबसे दिलचस्प लिंक This Link है, मुझे लगता है कि ऊपर Win32 लिंक के बराबर है।

+7

आप पिनवोक का उपयोग नहीं करते हैं जो उस जानकारी को प्राप्त करते हैं, आप सिस्टम में कक्षाओं का उपयोग करते हैं। प्रबंधन नामस्थान। डब्ल्यूएमआई के लिए पतला रैपर। प्रयोग करने के लिए [इस उपयोगिता] (http://www.microsoft.com/en-us/download/details.aspx?id=8572) का उपयोग करें, आपको आवश्यक सी # कोड भी उत्पन्न करता है। कोई भी लाभ जो आपको लगता है कि आप पिनवोक से देखते हैं केवल आपकी कल्पना में मौजूद है। –

+1

@ हंसपैसेंट के साथ Concur - 'System.Management' नामस्थान में WMI wrapper यहां जाने का तरीका है। – JerKimball

+0

@ जेरकिमबॉल जानकारी के लिए धन्यवाद, मैं उस विकल्प की जांच करूंगा, मुझे लगता है कि मुझे पहले से ही यह पता चला है कि यह PInvoke के साथ जाने का तरीका नहीं है .. – LoneXcoder

उत्तर

0

पिछली बार मैंने पी/इनवॉक के साथ काम किया, प्रबंधित सी ++ लाइब्रेरी में इसे पूरा करना बहुत आसान था, और फिर इसे मेरे सी # ऐप में आयात करना आसान था। यदि आप सी ++ जानते हैं, तो आप उन प्रकार के परिचालनों की बात करते समय खुद को बहुत परेशानी बचाएंगे।

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