मैं ग के माध्यम से < खिड़कियों पढ़ रहा हूँ/C++>, यह बताता है के रूप में नीचे GetModuleHandle() API:GetModuleHandle() कैसे काम करता है?
जब आप इस फ़ंक्शन को कॉल करें, तो आप एक शून्य समाप्त स्ट्रिंग है जो भरी हुई एक निष्पादन या DLL फ़ाइल का नाम निर्दिष्ट पारित कॉलिंग प्रक्रिया की पता स्थान में। यदि सिस्टम निर्दिष्ट निष्पादन योग्य या DLL नाम पाता है, तो GetModuleHandle आधार पता देता है जहां निष्पादन योग्य या DLL; फ़ाइल छवि लोड होती है।
मुझे आश्चर्य है सिस्टम फ़ाइल नाम कहां देखता है? जब मैंने अपनी प्रक्रिया एड्रेस स्पेस में कुछ फाइल लोड की, तो क्या कुछ लोड की गई फाइलों के नाम और उनके लोड पतों के मैपिंग को स्टोर करने के लिए कुछ केंद्रीकृत टेबल है? यदि हम एक स्ट्रिंग मैच के आधार पर खोज करते हैं, तो क्या यह कम दक्षता है?
आपके insigts के लिए बहुत धन्यवाद।
लिंकर? क्या आपका मतलब कर्नेल था? –
नहीं, मेरा मतलब लिंकर है। लिंकर के लिए आरटीएल कोड आधुनिक विंडोज़ में उपयोगकर्ता स्थान में है। कर्नेल में होने के लिए बिल्कुल कोई ज़रूरत नहीं है। – bmargulies
मैं आपके अन्य उत्कृष्ट उत्तर पर थोड़ा सा नाइट लेने जा रहा हूं। यह लोडर है, लिंकर नहीं। लोडर नक्शा बाइनरीज़ मेमोरी में क्या करता है और उन्हें ठीक करता है, लिंकर ऑब्जेक्ट मॉड्यूल से बाइनरी बनाता है। –