2012-01-13 7 views
5

मैं सोच रहा हूं कि किसके तहत लागू किया गया है। मेरा अनुमान को OpenFile का उपयोग करके कार्यान्वित किया जा रहा है। जो मैं बता सकता हूं, Win32 API एमएसवीसी सी लाइब्रेरी कार्यान्वयन से अधिक पूर्ण है, इसलिए मेरा अनुमान समझ में आता है।विंडोज पर निम्न स्तर क्या है: सी लाइब्रेरी या संबंधित Win32 API फ़ंक्शन?

क्या यह सही है, या यह दूसरी तरफ है?

+4

कोई "सी लाइब्रेरी" नहीं है जो विंडोज का हिस्सा है। प्रत्येक कंपाइलर अपने स्वयं के जहाज। सभी सी पुस्तकालय विंडोज एपीआई (जो * विंडोज़ का हिस्सा है) का उपयोग कर सकते हैं, और विंडोज एपीआई विंडोज कर्नेल का उपयोग करता है। आप सीधे विंडोज कर्नेल का उपयोग भी कर सकते हैं, लेकिन यह अनियंत्रित है और स्थिर नहीं है (इसकी एपीआई, यानी कर्नेल स्वयं नहीं है)। –

+4

स्पष्ट रूप से, सी मानक पुस्तकालय Win32 एपीआई के शीर्ष पर लागू किया गया है, न कि दूसरी तरफ। आप इसे सीडीडी लाइब्रेरी के कम से कम आधा दर्जन विभिन्न कार्यान्वयन की उपस्थिति से घटा सकते हैं (जिनमें से कुछ ओपन सोर्स हैं और Win32 फ़ंक्शंस को कॉल करते हैं)। – Damon

+0

* विंडोज कर्नेल के भाग * अनियंत्रित हैं, और वे किसी कारण से अनियंत्रित हैं-आप उनका उपयोग करने का इरादा नहीं रखते हैं क्योंकि वे किसी भी समय बदल सकते हैं! विंडोज कर्नेल के अन्य हिस्सों, आम तौर पर 'kernel32.dll' से निर्यात किए गए फ़ंक्शंस, काफी अच्छी तरह से प्रलेखित होते हैं और सामान्य उपयोग के लिए लक्षित होते हैं। डेमन का बिंदु बिल्कुल सही है-आप विंडोज़ फ़ंक्शंस का उपयोग करते हुए माइक्रोसॉफ्ट की तरह ही अपनी सी रन-टाइम लाइब्रेरी लिख सकते हैं। विंडोज एपीआई * कम स्तर वाला है क्योंकि विंडोज ऑपरेटिंग सिस्टम है। अन्य वातावरण में समान: सीआरटी ओएस, या निचले स्तर के सिस्टम इंटरप्ट्स को कॉल करता है। –

उत्तर

5

हां, Win32 मानक सी-लाइब्रेरी की तुलना में "निचला स्तर" एपीआई है ... मूल रूप से विंडोज़ पर मानक सी-लाइब्रेरी देशी विंडोज सिस्कोल का एक अमूर्त है जो कुछ मानक संचालन किसी भी श्रृंखला में संगत रहने की अनुमति देता है प्लेटफार्मों का जो सी-मानक पुस्तकालय का समर्थन करता है। प्रत्येक प्लेटफ़ॉर्म में आंतरिक रूप से देशी सिस्टम कॉल के आधार पर सी-लाइब्रेरी का अपना कार्यान्वयन होगा।

1

वैसे अंततः दोनों को कर्नेल फ़ंक्शन के संदर्भ में लागू किया जाएगा जो चालक को कॉल करता है जो बदले में सभी जादू को फ़ाइल संभाल लेता है। अगर फॉपेन ओपनफाइल को कॉल करता है या यदि ओपनफाइल कॉल फॉपेन या इन कॉलों में से कोई भी नहीं है तो दूसरा कुछ है जो स्रोत कोड को देखे बिना नहीं बता सकता है (और विभिन्न कार्यान्वयन इसे अलग-अलग कार्यान्वित कर सकते हैं ...)।

+2

ओपनफाइल एक पुराना काम है जो कोई भी उपयोग नहीं करता है, मुझे यकीन है कि सभी सीआरटी कार्यान्वयन CreateFile – Anders

+0

का उपयोग करते हैं, विशेष रूप से, 'ओपनफाइल' एक 16-बिट विंडोज फ़ंक्शन है; 32-बिट विंडोज़ में फ़ाइल बनाने की तुलना में कई और चीजें करने के लिए 'CreateFile' को ओवरलोड किया गया है। लेकिन यह बहुत संभावना है कि 'CreateFile' * * कर्नेल फ़ंक्शन है (यह नहीं कहने के लिए कि इसमें निम्न-स्तर, अप्रत्याशित सहायक कार्य नहीं हैं)। यह 'kernel32.dll' से एक दस्तावेज निर्यात है। –

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