नेट लाइब्रेरी में कई विधियां मूल कोड में लागू की गई हैं। ढांचे से आने वाले लोग [MethodImpl(MethodImplOptions.InternalCall)]
के साथ चिह्नित हैं। कुछ अप्रबंधित डीएलएल से आने वाले लोग [DllImport]
(उदा। [DllImport("kernel32.dll")]
) के साथ चिह्नित हैं। अभी तक असामान्य कुछ भी नहीं।[DllImport ("QCall")] क्या है?
लेकिन answer for another question लिखते समय, मैंने पाया कि [DllImport("QCall")]
के साथ चिह्नित कई विधियां हैं। वे .NET के आंतरिक कार्यान्वयन प्रतीत होते हैं (उदा। GC._Collect()
)।
मेरा प्रश्न है: [DllImport("QCall")]
का क्या अर्थ है? [DllImport("QCall")]
और [MethodImpl(MethodImplOptions.InternalCall)]
के बीच क्या अंतर है?
यह एक विशेष आंतरिक कॉल है; मैं विवरण खोजने की कोशिश कर रहा हूं। – SLaks
मुझे कुछ समय पहले पढ़ना याद है कि "क्यूकॉल" clr.dll का हिस्सा है। हालांकि, मैं उससे परे बहुत कुछ नहीं जानता। एक उत्कृष्ट प्रश्न के लिए +1। – ahawker
यह एक .NET 4 विशिष्ट सुविधा है। आप V4 संदर्भ स्रोत से अंतर्दृष्टि प्राप्त कर सकते हैं, System.Runtime.CompilerServices.Jithelpers.cs के लिए स्रोत कोड देखें। स्ट्रिंग clr.dll में दो बार दिखाई देती है, जैसे __IsQCall और एक इनलाइन शाब्दिक के रूप में। यह दृढ़ता से MethodImplOptions.InternalCall से परे एक विस्तार तंत्र जैसा दिखता है, साबित करता है कि सीएलआर स्रोत कोड के बिना यह मुश्किल है। –