2009-04-28 14 views
5

मैं विंडोज चालक विकास में नौसिखिया हूं। मैं बस जानना चाहता हूं, ड्राइवर में एक ग्लोबल वैरिएबल पेजेड पूल मेमोरी या गैर पेजेड पूल मेमोरी का उपयोग करेगा?पेजेड पूल मेमोरी या नॉनपेज्ड पूल मेमोरी ?? (विंडोज़ ड्राइवर विकास)

धन्यवाद और सादर

Navaneeth

उत्तर

8

निर्भर करता है। गैर पेजेड पूल को स्मृति के लिए आरक्षित किया जाना चाहिए जो रैम में रहना चाहिए ताकि यदि आप कुछ महत्वपूर्ण कर रहे हैं जो डिस्क ऑपरेशन से मेमोरी पेज से प्रभावित होगा तो गैर पेजेड का उपयोग करें।

अधिक जानकारी के लिए here देखें।

this पर देख रहे हैं (हालांकि यह सी ++ के विपरीत सी ++ पर चर्चा करता है) ऐसा लगता है कि डिफ़ॉल्ट रूप से ग्लोबल्स #pragma द्वारा स्थित हो सकते हैं। के पी 22 पर हम देखते हैं कि यह कैसे करें। अंत में this discuss यहां हम देखते हैं कि डेटा सेगमेंट डिफ़ॉल्ट रूप से गैर पेजेबल होना चाहिए।

+0

No.my सवाल की तरह अगर मैं डिवाइस ड्राइवर में एक वैश्विक चर घोषित somthing है, जो स्मृति का उपयोग किया जाएगा है, यानी पृष्ठांकित पूल स्मृति या गैर-पृष्ठांकित पूल स्मृति? (स्थानीय परिवर्तनीय गैर पेजेड पूल मेमोरी का उपयोग करेगा)। – Navaneeth

+0

यह निर्भर नहीं होगा। यह या तो पेजेड या गैर-पेजेड पूल होगा। – Navaneeth

+2

#pragma data_seg ("PAGE") int foo; #pragma data_seg ("NONPAGE") int बार; - यहां foo पेजेबल है, और बार गैर-पेजेड है। यदि आप इसे एक प्रज्ञा नहीं देते हैं तो डिफ़ॉल्ट गैर-पेजेड होता है। – SecurityMatt

2

कर्नेल मोड ड्राइवर में वैश्विक चर NonPagedPool से आवंटित किए जाते हैं।

आप डिवाइस एक्सटेंशन का उपयोग भी कर सकते हैं (जब आप IoCreateDevice को कॉल करते हैं), यह हमेशा गैर-भुगतान स्मृति से आवंटित किया जाता है।

मुझे आशा है कि इस मदद करता है, मार्टिन

+1

यह सच नहीं है। विंडोज़ में कर्नेल ड्राइवर कई वर्गों के साथ पीई फाइलें हैं, और सामान्य उपयोगकर्ता-मोड प्रोग्राम्स के विपरीत, केएम ड्राइवरों में आम तौर पर * दो * डेटा-सेक्शन होते हैं - एक जो पेज्ड होता है और जो गैर-पेजेड होता है (और कभी-कभी एक तिहाई जिसे छोड़ दिया जाता है) केएम चालक शुरू हुआ है)। आपके कोड में आप यह चुन सकते हैं कि आपके चर (या वास्तव में फ़ंक्शन) को आवंटित किया गया है या आवंटित pragmas के उपयोग के माध्यम से गैर-पेजेड है। – SecurityMatt

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