2016-05-25 9 views
9

मैं कुछ कोड है कि अच्छी तरह से मुझे पहले लिखा गया था "की समीक्षा" हूँ और मैं एक पैटर्न के बारे में मैं कुछ संदेह है कि देख रहा हूँ:क्या PEPROCESS मानों की तुलना करना ठीक है?

PsGetCurrentProcess() फ़ंक्शन के परिणाम संग्रहीत किया जाता है और कहा कि सूचक के साथ तो तुलना बना रहे हैं (जो EPROCESS संरचना के लिए एक सूचक है)। हालांकि, मुझे प्रलेखन में कुछ भी नहीं मिला है, जो बताता है कि इस फ़ंक्शन को हर बार एक ही सूचक को वापस करने की गारंटी है। मेरे लिए और भी आश्चर्य की बात यह है कि यह कोड स्पष्ट रूप से लंबे समय से काम कर रहा है।

क्या यह एक बग है, और क्या आप उस तर्क को बदलने के लिए अनुशंसा करेंगे प्रक्रिया आईडी की तुलना (PsGetProcessId का उपयोग करना)?

+0

मुझे टिप्पणी के बिना डाउनवोट प्राप्त हो रहा है। मुझे यह काफी परेशान लगता है - अगर कोई टिप्पणी करना चाहेगा कि यह एक अच्छा सवाल क्यों नहीं है या आलोचना प्रदान नहीं करता है, तो कृपया ऐसा करें, यह साइट नियमों द्वारा काफी दृढ़ता से प्रोत्साहित किया जाता है। –

+3

यह बहुत अच्छी तरह से एक बग हो सकता है। मुझे यह भी लगता है कि आपका प्रश्न ठीक है। यह मैंने देखा है सबसे अच्छा है इसलिए मैं भी डाउनवोट को समझ नहीं पा रहा हूं। –

+0

"* इस परिणाम के साथ तुलना * * सूचक पर ** ** ** लौटा दी गई है? – alk

उत्तर

4

हां, यह बहुत सही है। EPROCESS का प्रलेखन यह स्पष्ट करता है कि प्रति प्रक्रिया ऐसी एक वस्तु है, और इस पर PEPROCESS अंक हैं। इसका अर्थ है PsGetCurrentProcess()EPROCESS पर EPROCESS पर एक सूचक वापस नहीं करता है। और दो पॉइंटर्स बराबर तुलना करते हैं यदि वे एक ही ऑब्जेक्ट को इंगित करते हैं।

+0

उत्तर के लिए धन्यवाद। क्या आप इसके लिए एक निश्चित स्रोत प्रदान कर सकते हैं? हालांकि दस्तावेज़ीकरण कुछ हद तक सुझाव देता है (** ** ** के बजाय ** ** का उपयोग करके), मुझे इस विषय पर कुछ और नहीं मिल रहा है। –

+0

स्व-स्पष्ट, स्पष्ट रूप से दस्तावेज होने की संभावना नहीं है। –

+1

(यह स्पष्ट करने के लिए: यह एक तरह की बात है कि मेरे अनुभव में माइक्रोसॉफ्ट आत्म-स्पष्ट मानता है और स्पष्ट रूप से दस्तावेज की संभावना नहीं है। मेरा मतलब यह नहीं था कि यह * दस्तावेज नहीं किया जाना चाहिए था या यह था मुर्खता भरा प्रश्न।) –

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