विंडोज एपीआई: Difference between revisions

From Vigyanwiki
Line 48: Line 48:


=== प्रोग्राम इंटरेक्शन ===
=== प्रोग्राम इंटरेक्शन ===
विंडोज एपीआई ज्यादातर [[ऑपरेटिंग सिस्टम]] और एक एप्लिकेशन के बीच बातचीत के लिए डिज़ाइन किया गया है। विभिन्न विंडोज़ अनुप्रयोगों के बीच संचार के लिए, माइक्रोसॉफ्ट ने मुख्य विंडोज़ एपीआई के साथ-साथ प्रौद्योगिकियों की एक श्रृंखला विकसित की है। यह [[डायनेमिक डेटा एक्सचेंज]] (DDE) के साथ शुरू हुआ, जिसे [[जोडकर परनिगरानी और उद्देश् य]] (OLE) और बाद में कंपोनेंट ऑब्जेक्ट मॉडल (COM), OLE ऑटोमेशन, [[एक्टिवेक्स]] कंट्रोल और .NET फ्रेमवर्क द्वारा प्रतिस्थापित किया गया था। इन तकनीकों के बीच हमेशा स्पष्ट अंतर नहीं होता है, और बहुत अधिक ओवरलैप होता है।
विंडोज एपीआई को ज्यादातर [[ऑपरेटिंग सिस्टम]] और एप्लिकेशन के बीच बातचीत के लिए डिज़ाइन किया गया है। विभिन्न विंडोज अनुप्रयोगों के बीच संचार के लिए, माइक्रोसॉफ्ट ने मुख्य विंडोज एपीआई के साथ-साथ कई तकनीकों का विकास किया है। यह डायनेमिक डेटा एक्सचेंज (डीडीई) के साथ शुरू हुआ, जिसे ऑब्जेक्ट लिंकिंग एंड एंबेडिंग (ओएलई) और बाद में कंपोनेंट ऑब्जेक्ट मॉडल (COM), ऑटोमेशन ऑब्जेक्ट्स, [[एक्टिवेक्स]] कंट्रोल्स और .NET फ्रेमवर्क द्वारा अधिक्रमित किया गया था। इन तकनीकों के बीच हमेशा एक स्पष्ट अंतर नहीं होता है, और बहुत कुछ ओवरलैप होता है।
 
शब्दों की विविधता मूल रूप से सॉफ्टवेयर तंत्र के समूहीकरण का परिणाम है जो सॉफ्टवेयर विकास के एक दिए गए पहलू से संबंधित है। स्वचालन विशेष रूप से एक एप्लिकेशन या घटक ([[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] (एपीआई) के रूप में) के कार्य को निर्यात करने से संबंधित है ताकि इसे केवल मानव उपयोगकर्ताओं के बजाय अन्य अनुप्रयोगों द्वारा नियंत्रित किया जा सके, .NET एक स्व-निहित सामान्य पद्धति और तकनीक है विभिन्न प्रकार के [[समय-समय पर संकलन]]|जस्ट-इन-टाइम (JIT) संकलित भाषाओं में लिखे गए डेस्कटॉप और वेब एप्लिकेशन विकसित करें।
 
Windows.pas एक [[पास्कल (प्रोग्रामिंग भाषा)]]/डेल्फ़ी (प्रोग्रामिंग भाषा) इकाई है जिसमें Microsoft Windows-विशिष्ट API घोषणाएँ शामिल हैं। यह पास्कल windows.h के समतुल्य है, जिसका उपयोग C में किया जाता है।<ref>{{cite book |url=https://books.google.com/books?id=9JzBn4vcUBoC&q=%22windows.pas%22&pg=PA253 |title=बोर्लैंड डेल्फी 6 डेवलपर गाइड|publisher=Sams |author=Texeira, Steve and Xavier Pacheco |year=2002 |pages=253 |isbn=0672321157}}</ref>


शब्दों की विविधता मूल रूप से सॉफ्टवेयर तंत्र के समूहीकरण का परिणाम है जो सॉफ्टवेयर विकास के एक दिए गए पहलू से संबंधित है। स्वचालन विशेष रूप से एक एप्लिकेशन या घटक ([[अप्लिकेशन प्रोग्रामिंग अंतरफलक|एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस]] (एपीआई) के रूप में) के कार्य को निर्यात करने से संबंधित है ताकि इसे केवल मानव उपयोगकर्ताओं के बजाय अन्य अनुप्रयोगों द्वारा नियंत्रित किया जा सके। विभिन्न प्रकार के जस्ट-इन-टाइम (JIT) संकलित भाषाओं में लिखित डेस्कटॉप और वेब एप्लिकेशन विकसित करें।


Windows.pas एक [[पास्कल (प्रोग्रामिंग भाषा)|पास्कल]]/डेल्फी इकाई है जिसमें विंडोज-विशिष्ट एपीआई घोषणाएं शामिल हैं। यह windows.h का पास्कल समतुल्य है, जिसका उपयोग सी में किया जाता है।<ref>{{cite book |url=https://books.google.com/books?id=9JzBn4vcUBoC&q=%22windows.pas%22&pg=PA253 |title=बोर्लैंड डेल्फी 6 डेवलपर गाइड|publisher=Sams |author=Texeira, Steve and Xavier Pacheco |year=2002 |pages=253 |isbn=0672321157}}</ref>
=== [[रैपर लाइब्रेरी]] ===
=== [[रैपर लाइब्रेरी]] ===
Microsoft द्वारा विभिन्न रैपर लाइब्रेरी विकसित की गई थी, जिसने विंडोज एपीआई के कुछ और निम्न स्तर के कार्यों को संभाला, और अनुप्रयोगों को एपीआई के साथ अधिक अमूर्त तरीके से बातचीत करने की अनुमति दी। Microsoft फाउंडेशन क्लास लाइब्रेरी (MFC) ने C++ क्लास (कंप्यूटर साइंस) में विंडोज एपीआई कार्यक्षमता को लपेटा है, और इस प्रकार अधिक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की अनुमति देता है। एपीआई के साथ इंटरैक्ट करने के लिए ऑब्जेक्ट-ओरिएंटेड तरीका। [[सक्रिय टेम्पलेट लाइब्रेरी]] (ATL) COM के लिए एक [[टेम्पलेट (प्रोग्रामिंग)]] उन्मुख आवरण है। [[विंडोज टेम्पलेट लाइब्रेरी]] (डब्ल्यूटीएल) को एटीएल के विस्तार के रूप में विकसित किया गया था, और एमएफसी के एक छोटे विकल्प के रूप में इसका इरादा था।
माइक्रोसॉफ्ट द्वारा विभिन्न रैपर विकसित किए गए थे जिन्होंने विंडोज़ एपीआई के कुछ और निम्न-स्तरीय कार्यों को संभाला और अनुप्रयोगों को एपीआई के साथ अधिक अमूर्त तरीके से बातचीत करने की अनुमति दी। माइक्रोसॉफ्ट फाउंडेशन क्लास लाइब्रेरी (एमएफसी) ने विंडोज एपीआई कार्यक्षमता को सी ++ कक्षाओं में लपेटा है, और इस प्रकार एपीआई के साथ बातचीत करने के लिए अधिक ऑब्जेक्ट-ओरिएंटेड तरीके की अनुमति देता है। [[सक्रिय टेम्पलेट लाइब्रेरी]] (एटीएल) कॉम के लिए एक [[टेम्पलेट (प्रोग्रामिंग)|टेम्पलेट]]-ओरिएंटेड रैपर है। [[विंडोज टेम्पलेट लाइब्रेरी]] (डब्ल्यूटीएल) को एटीएल के विस्तार के रूप में विकसित किया गया था और एमएफसी के एक छोटे विकल्प के रूप में इसका उद्देश्य था।


विंडोज के लिए अधिकांश [[आवेदन ढांचा]] (कम से कम आंशिक रूप से) विंडोज एपीआई को लपेटते हैं। इस प्रकार, .NET फ्रेमवर्क और [[जावा ([[प्रोग्रामिंग भाषा]])]], इसी तरह विंडोज के तहत कोई अन्य प्रोग्रामिंग लैंग्वेज, रैपर लाइब्रेरी हैं (या शामिल हैं)।
विंडोज के लिए अधिकांश एप्लिकेशन फ्रेमवर्क (कम से कम आंशिक रूप से) विंडोज एपीआई को लपेटते हैं। इस प्रकार, .NET फ्रेमवर्क और जावा, इसी तरह विंडोज के तहत कोई भी अन्य [[प्रोग्रामिंग भाषा|प्रोग्रामिंग]] लैंग्वेज, रैपर लाइब्रेरी हैं (या शामिल हैं)।


== इतिहास ==
== इतिहास ==
विंडोज एपीआई ने हमेशा विंडोज सिस्टम की अंतर्निहित संरचना के एक बड़े हिस्से को प्रोग्रामरों के सामने उजागर किया है। इससे उन्हें अपने अनुप्रयोगों पर अधिक लचीलापन और शक्ति देने का लाभ मिला, लेकिन यह भी बड़ी जिम्मेदारी पैदा करता है कि कैसे एप्लिकेशन विभिन्न निम्न-स्तर, कभी-कभी थकाऊ, संचालन को संभालते हैं जो एक ग्राफिकल यूजर इंटरफेस से जुड़े होते हैं।
विंडोज एपीआई ने हमेशा विंडोज सिस्टम की अंतर्निहित संरचना के एक बड़े हिस्से को प्रोग्रामरों के सामने उजागर किया है। इससे उन्हें अपने अनुप्रयोगों पर अधिक लचीलापन और शक्ति देने का लाभ मिला, लेकिन यह भी बड़ी जिम्मेदारी पैदा करता है कि कैसे एप्लिकेशन विभिन्न निम्न-स्तर, कभी-कभी थकाऊ, संचालन को संभालते हैं जो एक ग्राफिकल यूजर इंटरफेस से जुड़े होते हैं।


उदाहरण के लिए, एक शुरुआत सी प्रोग्रामर अक्सर सरल हैलो वर्ल्ड को अपने पहले असाइनमेंट के रूप में लिखेंगे। कार्यक्रम का कामकाजी हिस्सा मुख्य सबरूटीन के भीतर केवल एक प्रिंटफ लाइन है। मानक I/O लाइब्रेरी से लिंक करने के लिए ओवरहेड भी केवल एक पंक्ति है:
उदाहरण के लिए, शुरुआती सी प्रोग्रामर अक्सर अपने पहले असाइनमेंट के रूप में सरल "हैलो वर्ल्ड" लिखेंगे। मुख्य उपनेमका के भीतर कार्यक्रम का कामकाजी हिस्सा केवल एक प्रिंटएफ लाइन है। मानक I/O लाइब्रेरी से लिंक करने का ओवरहेड भी केवल एक लाइन है:{{Wikibooks|Computer Programming|Hello world#Windows API (in C)}}
{{Wikibooks|Computer Programming|Hello world#Windows API (in C)}}
<syntaxhighlight lang="c++">#include <stdio.h>
<syntaxhighlight lang= c >#include <stdio.h>


पूर्णांक मुख्य (शून्य) {
int main(void) {
     प्रिंटफ (हैलो, विश्व! \ n);
     printf("Hello, World!\n");
}</syntaxhighlight>
}</syntaxhighlight>


विंडोज संस्करण अभी भी कोड की केवल एक कामकाजी लाइन थी लेकिन इसके लिए ओवरहेड की कई और अधिक लाइनों की आवश्यकता थी। विंडोज एपीआई के लिए प्रोग्रामिंग के बारे में कई किताबें लिखने वाले [[चार्ल्स पेटज़ोल्ड]] ने कहा: विंडोज 1.0 एसडीके में मूल [[हैलो वर्ल्ड प्रोग्राम]] थोड़ा सा घोटाला था। HELLO.C लगभग 150 लाइन लंबी थी, और HELLO.RC संसाधन स्क्रिप्ट में 20 या उससे अधिक लाइनें थीं। (...) वयोवृद्ध प्रोग्रामर अक्सर विंडोज हैलो-वर्ल्ड प्रोग्राम का सामना करते समय डरावनी या हँसी में डूब जाते हैं।<ref name="petzold-47">[[Charles Petzold]] (December 2001). ''Programming Microsoft Windows with C#''. Microsoft Press. Beyond the Console, page 47.</ref>
विंडोज संस्करण अभी भी कोड की केवल एक कामकाजी लाइन थी लेकिन इसके लिए ओवरहेड की कई और अधिक लाइनों की आवश्यकता थी। विंडोज एपीआई के लिए प्रोग्रामिंग के बारे में कई किताबें लिखने वाले [[चार्ल्स पेटज़ोल्ड]] ने कहा: "विंडोज 1.0 एसडीके में मूल [[हैलो वर्ल्ड प्रोग्राम]] थोड़ा सा स्कैंडल था। HELLO.C लगभग 150 लाइन लंबी थी, और HELLO.RC संसाधन स्क्रिप्ट और 20 या उससे अधिक पंक्तियाँ थीं। (...) अनुभवी प्रोग्रामर अक्सर विंडोज हैलो-वर्ल्ड प्रोग्राम का सामना करते समय डरावनी या हँसी में डूब जाते थे।"<ref name="petzold-47">[[Charles Petzold]] (December 2001). ''Programming Microsoft Windows with C#''. Microsoft Press. Beyond the Console, page 47.</ref>
इन वर्षों में, विंडोज सिस्टम में कई बदलाव और परिवर्धन किए गए, और इसे दर्शाने के लिए विंडोज एपीआई बदल गया और बढ़ा।<ref name="winapi-changes">''[http://abi-laboratory.pro/index.php?view=winapi Detailed analysis of changes in the Windows API from XP to 10.]'' Retrieved September 08, 2016.</ref> विंडोज 1.0 के लिए विंडोज एपीआई 450 से कम [[सबरूटीन]] का समर्थन करता है, जबकि विंडोज एपीआई के आधुनिक संस्करण हजारों का समर्थन करते हैं। हालाँकि, सामान्य तौर पर, इंटरफ़ेस काफी सुसंगत रहा, और एक पुराना विंडोज 1.0 एप्लिकेशन अभी भी एक प्रोग्रामर से परिचित होगा जो आधुनिक विंडोज एपीआई के लिए उपयोग किया जाता है।<ref name="petzold-9">[[Charles Petzold]] (November 11, 1998). ''Programming Windows, Fifth Edition''. Microsoft Press. APIs and Memory Models, page 9.</ref>
 
Microsoft ने [[पश्च संगतता]] बनाए रखने का प्रयास किया है। इसे प्राप्त करने के लिए, विंडोज़ के नए संस्करण विकसित करते समय, माइक्रोसॉफ्ट ने कभी-कभी वर्कअराउंड लागू किया<ref>{{cite web |last1=Smith |first1=Graham |title=विंडोज 95 में मूल सिमसीटी में बग को ठीक करने के लिए विशेष कोड था|url=https://www.rockpapershotgun.com/windows-95-had-special-code-just-to-fix-a-bug-in-the-original-simcity |website=Rock, Paper, Shotgun |language=en |date=8 October 2022}}</ref> तृतीय-पक्ष सॉफ़्टवेयर के साथ संगतता की अनुमति देने के लिए जिसने पूर्व संस्करण का उपयोग बिना दस्तावेज या यहां तक ​​कि अनुचित तरीके से किया था। [[रेमंड चेन (माइक्रोसॉफ्ट)]], एक माइक्रोसॉफ्ट डेवलपर जो विंडोज एपीआई पर काम करता है, ने कहा है: मैं शायद महीनों तक पूरी तरह से खराब चीजों के बारे में लिख सकता हूं जो ऐप्स करते हैं और उन्हें फिर से काम करने के लिए हमें क्या करना था (अक्सर खुद के बावजूद) . यही कारण है कि जब लोग माइक्रोसॉफ्ट पर ओएस अपग्रेड के दौरान दुर्भावनापूर्ण रूप से तोड़ने वाले अनुप्रयोगों का आरोप लगाते हैं तो मैं विशेष रूप से उग्र हो जाता हूं। यदि विंडोज 95 पर कोई भी एप्लिकेशन चलने में विफल रहता है, तो मैंने इसे व्यक्तिगत विफलता के रूप में लिया।<ref name="chen-bozos">[[Raymond Chen (Microsoft)|Raymond Chen]] (October 15, 2003). ''[https://devblogs.microsoft.com/oldnewthing/20031015-00/?p=42163 What about BOZOSLIVEHERE and TABTHETEXTOUTFORWIMPS?]'' Retrieved June 29, 2022.</ref>
इन वर्षों में, विंडोज सिस्टम में कई बदलाव और परिवर्धन किए गए, और विंडोज एपीआई इसे बदलने के लिए बदल गया और बढ़ा।<ref name="winapi-changes">''[http://abi-laboratory.pro/index.php?view=winapi Detailed analysis of changes in the Windows API from XP to 10.]'' Retrieved September 08, 2016.</ref> विंडोज 1.0 के लिए विंडोज एपीआई 450 से कम फ़ंक्शन कॉल का समर्थन करता है, जबकि विंडोज एपीआई के आधुनिक संस्करण हजारों का समर्थन करते हैं। हालांकि, सामान्य तौर पर, इंटरफ़ेस काफी सुसंगत रहा, और एक पुराना विंडोज 1.0 एप्लिकेशन अभी भी एक प्रोग्रामर को परिचित लगेगा जो आधुनिक विंडोज एपीआई के लिए उपयोग किया जाता है।<ref name="petzold-9">[[Charles Petzold]] (November 11, 1998). ''Programming Windows, Fifth Edition''. Microsoft Press. APIs and Memory Models, page 9.</ref>
Windows API में सबसे बड़े परिवर्तनों में से एक Win16 (Windows 3.1 और पुराने में भेज दिया गया) से [[Win32]] (Windows NT और Windows 95 और ऊपर) में संक्रमण था। जबकि Win32 को मूल रूप से Windows NT 3.1 के साथ पेश किया गया था और [[Win32s]] ने Windows 95 से पहले Win32 सबसेट के उपयोग की अनुमति दी थी, यह Windows 95 तक नहीं था कि Win32 के लिए अनुप्रयोगों की व्यापक पोर्टिंग शुरू हुई। संक्रमण को आसान बनाने के लिए, [[खिड़कियाँ]] 95 में, माइक्रोसॉफ्ट के बाहर और अंदर के डेवलपर्स के लिए, एपीआई [[थंक (संगतता मानचित्रण)]] की एक जटिल योजना का उपयोग किया गया था जो 32-बिट कोड को 16-बिट कोड में कॉल करने की अनुमति दे सकता है (अधिकांश Win16 एपीआई के लिए) और विपरीतता से। फ्लैट थंक्स ने 32-बिट कोड को 16-बिट पुस्तकालयों में कॉल करने की अनुमति दी, और पूरे ओएस को एक बैच में Win32 में पोर्ट करने से बचने के लिए योजना का उपयोग विंडोज 95 के पुस्तकालयों के अंदर बड़े पैमाने पर किया गया था। विंडोज एनटी में, ओएस शुद्ध 32-बिट था, 16-बिट अनुप्रयोगों के साथ संगतता के लिए भागों को छोड़कर, और विंडोज 95 के लिए Win16 से Win32 तक थंक करने के लिए केवल जेनेरिक थंक्स उपलब्ध थे। प्लेटफ़ॉर्म एसडीके एक कंपाइलर के साथ भेज दिया गया जो उत्पादन कर सकता था इन थैंक्स के लिए आवश्यक कोड। 64-बिट विंडोज़ के संस्करण भी [[वाह64]] के माध्यम से 32-बिट अनुप्रयोगों को चलाने में सक्षम हैं। OS ड्राइव पर Windows फ़ोल्डर में स्थित SysWOW64 फ़ोल्डर में 32-बिट अनुप्रयोगों का समर्थन करने के लिए कई उपकरण हैं।{{Citation needed|date= January 2016}}


माइक्रोसॉफ्ट ने [[पश्च संगतता]] बनाए रखने का प्रयास किया है। इसे प्राप्त करने के लिए, विंडोज़ के नए संस्करणों को विकसित करते समय, माइक्रोसॉफ्ट ने कभी-कभी वर्कअराउंड<ref>{{cite web |last1=Smith |first1=Graham |title=विंडोज 95 में मूल सिमसीटी में बग को ठीक करने के लिए विशेष कोड था|url=https://www.rockpapershotgun.com/windows-95-had-special-code-just-to-fix-a-bug-in-the-original-simcity |website=Rock, Paper, Shotgun |language=en |date=8 October 2022}}</ref> को तीसरे पक्ष के सॉफ़्टवेयर के साथ संगतता की अनुमति देने के लिए लागू किया था, जो पूर्व संस्करण का उपयोग अनिर्दिष्ट या यहां तक कि अनुचित तरीके से करता था। विंडोज एपीआई पर काम करने वाले एक माइक्रोसॉफ्ट डेवलपर [[रेमंड चेन (माइक्रोसॉफ्ट)|रेमंड चेन]] ने कहा है: "मैं शायद महीनों तक पूरी तरह से खराब चीजों के बारे में लिख सकता हूं जो ऐप्स करते हैं और उन्हें फिर से काम करने के लिए हमें क्या करना था (अक्सर खुद के बावजूद)। यह यही कारण है कि जब लोग माइक्रोसॉफ्ट पर ओएस उन्नयन के दौरान दुर्भावनापूर्ण रूप से अनुप्रयोगों को तोड़ने का आरोप लगाते हैं तो मैं विशेष रूप से क्रोधित हो जाता हूं। अगर कोई भी आवेदन विंडोज 95 पर चलने में विफल रहा, तो मैंने इसे व्यक्तिगत विफलता के रूप में लिया।"<ref name="chen-bozos">[[Raymond Chen (Microsoft)|Raymond Chen]] (October 15, 2003). ''[https://devblogs.microsoft.com/oldnewthing/20031015-00/?p=42163 What about BOZOSLIVEHERE and TABTHETEXTOUTFORWIMPS?]'' Retrieved June 29, 2022.</ref>


=={{anchor|Win16|Win32|Win32c|Win32s|Win64|WinCE}}संस्करण ==
विंडोज एपीआई में सबसे बड़े परिवर्तनों में से एक विन 16 (विंडोज़ 3.1 और पुराने में शिप किया गया) से विन32 ([[Win32]]) (विंडोज़ एनटी और विंडोज 95 और ऊपर) में परिवर्तन था। जबकि विन32 को मूल रूप से विंडोज एनटी 3.1 (NT3.1) के साथ पेश किया गया था और विन32एस ([[Win32s]]) ने विंडोज 95 से पहले एक विन32 सबसेट के उपयोग की अनुमति दी थी, यह विंडोज 95 तक नहीं था कि विन32 के लिए अनुप्रयोगों की व्यापक पोर्टिंग शुरू हो गई। संक्रमण को आसान बनाने के लिए, विंडोज 95 में, माइक्रोसॉफ्ट के बाहर और अंदर के डेवलपर्स के लिए, एपीआई थंक्स की एक जटिल योजना का उपयोग किया गया था जो 32-बिट कोड को 16-बिट कोड (अधिकांश विन16 एपीआई के लिए) और इसके विपरीत कॉल करने की अनुमति दे सकता था। फ्लैट थंक्स ने 32-बिट कोड को 16-बिट पुस्तकालयों में कॉल करने की अनुमति दी, और एक बैच में पूरे ओएस को विन32 में पोर्ट करने से बचने के लिए इस योजना का उपयोग विंडोज 95 के पुस्तकालयों के अंदर बड़े पैमाने पर किया गया था। विंडोज एनटी में, ओएस शुद्ध 32-बिट था, 16-बिट अनुप्रयोगों के साथ संगतता के लिए भागों को छोड़कर, और विंडोज 95 के लिए विन 16 से विन 32 तक थंक करने के लिए केवल जेनेरिक थंक्स उपलब्ध थे। प्लेटफ़ॉर्म एसडीके एक कंपाइलर के साथ भेज दिया गया जो कर सकता था इन थैंक्स के लिए आवश्यक कोड तैयार करें। 64-बिट विंडोज़ के संस्करण भी [[वाह64]]  के माध्यम से 32-बिट एप्लिकेशन चलाने में सक्षम हैं। ओएस (OS) ड्राइव पर विंडोज फोल्डर में स्थित सिसवाउ64 फ़ोल्डर में 32-बिट अनुप्रयोगों का समर्थन करने के लिए कई उपकरण हैं।{{Citation needed|date= January 2016}}
Microsoft Windows के लगभग हर नए संस्करण ने Windows API में अपने स्वयं के परिवर्धन और परिवर्तन पेश किए हैं।<ref name="win32faq-history">The Iseran Project (1996–2001). ''[https://web.archive.org/web/20020802081510/http://www.iseran.com/Win32/FAQ/history.html History of the Windows API.]'' Retrieved October 7, 2005.</ref> हालांकि, एपीआई का नाम विंडोज के विभिन्न संस्करणों के बीच एक जैसा बना रहा और नाम परिवर्तन को विंडोज के लिए प्रमुख वास्तुशिल्प और प्लेटफॉर्म परिवर्तनों तक सीमित रखा गया। Microsoft ने अंततः तत्कालीन वर्तमान Win32 API परिवार का नाम Windows API में बदल दिया और इसे पिछले और भविष्य के दोनों API संस्करणों के लिए कैच-ऑल टर्म में बदल दिया।<ref name="msdn-overview2"/>
==संस्करण ==
माइक्रोसॉफ्ट विंडोज के लगभग हर नए संस्करण ने विंडोज एपीआई में अपने स्वयं के परिवर्धन और परिवर्तन पेश किए हैं।<ref name="win32faq-history">The Iseran Project (1996–2001). ''[https://web.archive.org/web/20020802081510/http://www.iseran.com/Win32/FAQ/history.html History of the Windows API.]'' Retrieved October 7, 2005.</ref> हालांकि, एपीआई का नाम विंडोज के विभिन्न संस्करणों के बीच एक जैसा बना रहा, और नाम परिवर्तन को विंडोज के लिए प्रमुख आर्किटेक्चरल और प्लेटफॉर्म परिवर्तनों तक सीमित रखा गया। माइक्रोसॉफ्ट ने अंततः तत्कालीन विन 32 एपीआई परिवार का नाम विंडोज एपीआई  में बदल दिया और इसे पिछले और भविष्य के दोनों एपीआई संस्करणों के लिए कैच-ऑल टर्म में बदल दिया।<ref name="msdn-overview2" />


* Win16 पहले, [[16-बिट कंप्यूटिंग]] के लिए API है|Microsoft Windows के 16-बिट संस्करण। इन्हें शुरू में केवल 'विंडोज एपीआई' के रूप में संदर्भित किया गया था, लेकिन बाद में उन्हें विंडोज एपीआई के नए, 32-बिट संस्करण से अलग करने के प्रयास में विन 16 का नाम बदल दिया गया। Win16 API के कार्य मुख्य रूप से OS की कोर फाइलों में रहते हैं: ''kernel.exe'' (या ''krnl286.exe'' या ''krnl386.exe''), ''user.exe'' और ' 'gdi.exe''। <samp>exe</samp> के [[दस्तावेज़ विस्तारण]] के बावजूद, ये वास्तव में डायनामिक-लिंक लाइब्रेरी|डायनामिक-लिंक लाइब्रेरी हैं।
* '''विन16 (Win16)''' माइक्रोसॉफ्ट विंडोज के पहले, [[16-बिट कंप्यूटिंग|16-बिट]] संस्करणों के लिए एपीआई है। इन्हें शुरू में केवल विंडोज एपीआई के रूप में संदर्भित किया गया था, लेकिन बाद में उन्हें विंडोज एपीआई के नए, 32-बिट संस्करण से अलग करने के प्रयास में विन 16 का नाम बदल दिया गया। विन16 API के कार्य मुख्य रूप से OS की कोर फाइलों में रहते हैं: kernel.exe (या krnl286.exe या krnl386.exe), user.exe और gdi.exe। एक्सई के फ़ाइल एक्सटेंशन के बावजूद, ये वास्तव में डायनेमिक-लिंक लाइब्रेरी हैं।
* Win32 [[32-बिट कंप्यूटिंग]] है | 32-बिट एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (API) विंडोज के 32-बिट संस्करणों (NT, 95 और बाद के संस्करणों) के लिए है। एपीआई में सिस्टम डीएलएल में विन 16 के साथ लागू किए गए कार्य शामिल हैं। Win32 के मुख्य DLL हैं- kernel32.dll, Windows USER|user32.dll, और gdi32.dll। Win32 को [[Windows NT]] के साथ पेश किया गया था। विंडोज 95 के साथ शिप किए गए Win32 के संस्करण को शुरू में Win32c के रूप में संदर्भित किया गया था, जिसमें '' c '' का अर्थ '' अनुकूलता '' था। यह शब्द बाद में Microsoft द्वारा Win32 के पक्ष में छोड़ दिया गया था।
*'''Win32''' विंडोज के [[32-बिट कंप्यूटिंग|32-बिट]] संस्करणों (NT, 95, और बाद के संस्करणों) के लिए 32-बिट एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (API) है। एपीआई में सिस्टम डीएलएल में विन 16 के साथ लागू किए गए कार्य होते हैं। Win32 के मूल DLL हैं- kernel32.dll, user32.dll और gdi32.dll। विन32 को विंडोज एनटी के साथ पेश किया गया था। विंडोज 95 के साथ शिप किए गए Win32 के संस्करण को शुरू में Win32c के रूप में संदर्भित किया गया था, जिसमें c अर्थ अनुकूलता थी। इस शब्द को बाद में Microsoft ने Win32 के पक्ष में छोड़ दिया।
* Win32s विंडोज 3.1x#विंडोज 3.1 | माइक्रोसॉफ्ट विंडोज के विंडोज 3.1x परिवार के लिए एक एक्सटेंशन है जिसने इन सिस्टमों के लिए Win32 एपीआई का एक [[सबसेट]] लागू किया है। एस सबसेट के लिए खड़ा है।
*'''Win32s''' माइक्रोसॉफ्ट विंडोज के विंडोज 3.1x के Windows 3.1x परिवार के लिए एक विस्तार है जिसने इन प्रणालियों के लिए Win32 API का एक सबसेट लागू किया है। "एस" "[[सबसेट]]" के लिए खड़ा है।
* Win64 [[64-बिट कंप्यूटिंग]] पर कार्यान्वित API का संस्करण है|64-बिट Windows NT#Windows NT ऑपरेटिंग सिस्टम लाइन के आर्किटेक्चर के समर्थित प्लेटफ़ॉर्म ({{as of|2021|lc=on}}, [[x86-64]] और [[AArch64]])।{{efn|Nomenclature of released 64-bit versions includes [[Windows XP Professional x64 Edition]] and x64 Editions of Windows Server 2003, Windows Vista and Windows Server 2008 on the x86-64 (AMD64) platform, and [[Windows 2000]] Server Limited Edition, [[Windows XP 64-bit Edition]], Windows Advanced Server 2003 for [[Itanium]] and Windows 2008 Advanced Server for [[Itanium]] on the [[IA-64]] platform.}}<ref name="XPx64">{{cite web |url=http://www.microsoft.com/windowsxp/64bit/ |title=Windows XP Professional x64 संस्करण होम पेज|publisher=Microsoft}}</ref><ref name="2003x64">{{cite web |url=http://www.microsoft.com/servers/64bit/ |title=Microsoft 64-बिट कम्प्यूटिंग अवलोकन|publisher=Microsoft}}</ref> किसी एप्लिकेशन के 32-बिट और 64-बिट दोनों संस्करणों को अभी भी एक [[codebase]] से संकलित किया जा सकता है, हालांकि कुछ पुराने एपीआई को पदावनत कर दिया गया है, और कुछ एपीआई जो पहले से ही Win32 में बहिष्कृत थे, हटा दिए गए थे। सभी मेमोरी पॉइंटर (कंप्यूटर प्रोग्रामिंग) डिफ़ॉल्ट रूप से 64-बिट ([[एलएलपी64]] 64 मॉडल) हैं, इसलिए 64-बिट पॉइंटर अंकगणित के साथ संगतता के लिए स्रोत कोड की जांच की जानी चाहिए और आवश्यकतानुसार फिर से लिखा जाना चाहिए।<ref name="64bitMigration">{{cite web |url=http://msdn.microsoft.com/en-us/library/aa384198(VS.85).aspx |title=एमएसडीएन: 64-बिट विंडोज के लिए तैयार होना|publisher=Microsoft}}</ref>
*'''Win64''' विंडोज आर्किटेक्चर के '''64-बिट''' प्लेटफॉर्म पर लागू एपीआई का संस्करण है (2021 तक, [[x86-64]] और [[AArch64]])।{{efn|Nomenclature of released 64-bit versions includes [[Windows XP Professional x64 Edition]] and x64 Editions of Windows Server 2003, Windows Vista and Windows Server 2008 on the x86-64 (AMD64) platform, and [[Windows 2000]] Server Limited Edition, [[Windows XP 64-bit Edition]], Windows Advanced Server 2003 for [[Itanium]] and Windows 2008 Advanced Server for [[Itanium]] on the [[IA-64]] platform.}}<ref name="XPx64">{{cite web |url=http://www.microsoft.com/windowsxp/64bit/ |title=Windows XP Professional x64 संस्करण होम पेज|publisher=Microsoft}}</ref><ref name="2003x64">{{cite web |url=http://www.microsoft.com/servers/64bit/ |title=Microsoft 64-बिट कम्प्यूटिंग अवलोकन|publisher=Microsoft}}</ref> एक आवेदन के 32-बिट और 64-बिट संस्करण दोनों अभी भी एक कोडबेस से संकलित किया जा सकता है, हालांकि कुछ पुराने एपीआई को पदावनत कर दिया गया है, और कुछ एपीआई जो पहले से ही Win32 में पदावनत थे, को हटा दिया गया था। डिफ़ॉल्ट रूप से सभी मेमोरी पॉइंटर्स 64-बिट होते हैं ([[एलएलपी64]] मॉडल), इसलिए 64-बिट पॉइंटर अंकगणित के साथ संगतता के लिए स्रोत कोड की जांच की जानी चाहिए और आवश्यकतानुसार फिर से लिखा जाना चाहिए। [24]
* WinCE, [[Windows CE]] ऑपरेटिंग सिस्टम के लिए Windows API का कार्यान्वयन है।
*विनसीई विंडोज सीई ([[Windows CE]]) ऑपरेटिंग सिस्टम के लिए विंडोज एपीआई का कार्यान्वयन है।


== अन्य कार्यान्वयन ==
== अन्य कार्यान्वयन ==

Revision as of 14:46, 25 December 2022

विंडोज एपीआई, अनौपचारिक रूप से विनएपीआई, माइक्रोसॉफ़्ट विंडोज़ ऑपरेटिंग सिस्टम में उपलब्ध एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई) का माइक्रोसॉफ्ट का कोर सेट है। विंडोज एपीआई, नाम सामूहिक रूप से कई अलग-अलग प्लेटफ़ॉर्म कार्यान्वयनों को संदर्भित करता है जिन्हें अक्सर अपने स्वयं के नामों से संदर्भित किया जाता है (उदाहरण के लिए, विन 32 एपीआई); संस्करण अनुभाग देखें। लगभग सभी विंडोज प्रोग्राम विंडोज एपीआई के साथ इंटरैक्ट करते हैं। ऑपरेटिंग सिस्टम की विंडोज एनटी लाइन पर, एक छोटी संख्या (जैसे कि विंडोज स्टार्टअप प्रक्रिया के शुरू में शुरू होने वाले प्रोग्राम) नेटिव एपीआई का उपयोग करते हैं।[1]

डेवलपर समर्थन सॉफ़्टवेयर डेवलपमेंट किट, माइक्रोसॉफ्ट विंडोज एसडीके (Microsoft Windows SDK) के रूप में उपलब्ध है, जो विंडोज एपीआई और संबद्ध विंडोज इंटरफ़ेस पर आधारित सॉफ़्टवेयर बनाने के लिए आवश्यक दस्तावेज़ और टूल प्रदान करता है।

विंडोज एपीआई (विन32) मुख्य रूप से प्रोग्रामिंग भाषा सी (C) पर केंद्रित है[2], जिसमें इसके खुला कार्यों और डेटा संरचनाओं को इसके प्रलेखन के हाल के संस्करणों में उस भाषा में वर्णित किया गया है। हालांकि, एपीआई का उपयोग किसी भी प्रोग्रामिंग लैंग्वेज कंपाइलर या असेंबलर द्वारा किया जा सकता है जो कॉल और कॉलबैक के लिए निर्धारित कॉलिंग कन्वेंशन के साथ (अच्छी तरह से परिभाषित) निम्न-स्तरीय डेटा संरचनाओं को संभालने में सक्षम है। इसी तरह, एपीआई के कार्य के आंतरिक कार्यान्वयन को ऐतिहासिक रूप से कई भाषाओं में विकसित किया गया है। [ए] इस तथ्य के बावजूद कि सी ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा नहीं है, विंडोज एपीआई और विंडोज दोनों को ऐतिहासिक रूप से ऑब्जेक्ट-ओरिएंटेड के रूप में वर्णित किया गया है। ऑब्जेक्ट-ओरिएंटेड भाषाओं के लिए कई रैपर क्लासेस और एक्सटेंशन (माइक्रोसॉफ्ट और अन्य से) भी हैं जो इस ऑब्जेक्ट-ओरिएंटेड स्ट्रक्चर (वस्तु उन्मुख कार्यकर्म) को अधिक स्पष्ट (माइक्रोसॉफ्ट फाउंडेशन क्लास लाइब्रेरी (एमएफसी), विजुअल कंपोनेंट लाइब्रेरी (वीसीएल), जीडीआई+, आदि) बनाते हैं। . उदाहरण के लिए, विंडोज 8 विंडोज एपीआई और विनआरटी एपीआई प्रदान करता है, जो सी ++ (C++)[3] में लागू किया गया है और डिजाइन द्वारा ऑब्जेक्ट-ओरिएंटेड है।[3]

अवलोकन

विंडोज एपीआई द्वारा प्रदान किए गए कार्यों को आठ श्रेणियों में बांटा जा सकता है:[4]

बेस सर्विसेज
[5] विंडोज सिस्टम के लिए उपलब्ध मूलभूत संसाधनों तक पहुंच प्रदान करें। इसमें फाइल सिस्टम, डिवाइस, प्रोसेस, थ्रेड्स और एरर हैंडलिंग जैसी चीजें शामिल हैं। ये कार्य 16-बिट विंडोज़ पर kernel.exe, krnl286.exe या krnl386.exe फ़ाइलों में रहते हैं, और 32 और 64 बिट विंडोज़ पर kernel32.dll और KernelBase.dll में रहते हैं। ये फ़ाइलें Windows के सभी संस्करणों पर \Windows\System32 फ़ोल्डर में रहती हैं।
उन्नत सेवाएं
कर्नेल से परे कार्यों तक पहुंच प्रदान करें। विंडोज रजिस्ट्री, शटडाउन/सिस्टम को फिर से शुरू करना (या निरस्त करना), विंडोज़ सेवा शुरू/रोकना/बनाना और उपयोगकर्ता खातों को प्रबंधित करने जैसी चीजें शामिल हैं। ये कार्य 32-बिट विंडोज पर advapi32.dll और advapires32.dll में रहते हैं।
ग्राफिक्स डिवाइस इंटरफ़ेस
[6] मॉनिटर, प्रिंटर और अन्य आउटपुट डिवाइस के लिए ग्राफिक्स कंटेंट को आउटपुट करने के लिए फ़ंक्शन प्रदान करता है। यह उपयोगकर्ता मोड में 16-बिट विंडोज़ पर gdi.exe और 32-बिट विंडोज़ पर gdi32.dll में रहता है। कर्नेल-मोड GDI समर्थन win32k.sys द्वारा प्रदान किया जाता है जो सीधे ग्राफिक्स ड्राइवर के साथ संचार करता है।[7]
यूजर इंटरफेस
[8] स्क्रीन विंडो बनाने और प्रबंधित करने के लिए फ़ंक्शन प्रदान करता है और अधिकांश बुनियादी नियंत्रण, जैसे बटन और क्रॉलबार, माउस और कीबोर्ड इनपुट प्राप्त करते हैं, और विंडोज़ के ग्राफिकल यूज़र इंटरफ़ेस (जीयूआई) भाग से जुड़े अन्य फ़ंक्शन प्रदान करता है। यह कार्यात्मक इकाई 16-बिट विंडोज़ पर user.exe और 32-बिट विंडोज़ पर user32.dll में स्थित है। विंडोज एक्सपी (Windows XP) संस्करणों के बाद से, सामान्य नियंत्रण (सामान्य नियंत्रण लाइब्रेरी) के साथ, मूल नियंत्रण comctl32.dll में रहते हैं।
कॉमन डायलॉग बॉक्स लाइब्रेरी
[9] फ़ाइलों को खोलने और सहेजने, रंग और फ़ॉन्ट चुनने आदि के लिए मानक डायलॉग बॉक्स के साथ एप्लिकेशन प्रदान करता है। पुस्तकालय 16-बिट विंडोज़ पर commdlg.dll नामक फ़ाइल में रहता है, और 32-बिट विंडोज़ पर comdlg32.dll। इसे एपीआई के यूजर इंटरफेस श्रेणी के तहत समूहीकृत किया गया है।
कॉमन कंट्रोल लाइब्रेरी
[10] एप्लिकेशन को ऑपरेटिंग सिस्टम द्वारा उपलब्ध कराए गए कुछ उन्नत नियंत्रणों तक पहुंच देता है। इनमें स्टेटस बार, प्रोगेस बार, टूलबार और टैब जैसी चीज़ें शामिल होती हैं. लाइब्रेरी 16-बिट विंडोज पर commctrl.dll और 32-बिट विंडोज पर comctl32.dll नामक डायनेमिक-लिंक लाइब्रेरी (DLL) फ़ाइल में स्थित है। यह एपीआई की यूजर इंटरफेस श्रेणी के तहत समूहीकृत है।
विंडोज़ शैल
[11][12] विंडोज एपीआई का घटक एप्लिकेशन को ऑपरेटिंग सिस्टम शेल द्वारा प्रदान किए गए कार्यों तक पहुंचने और उन्हें बदलने और बढ़ाने की अनुमति देता है। घटक 16-बिट विंडोज़ पर shell.dll और 32-बिट विंडोज़ पर shell32.dll में रहता है। शेल लाइटवेट यूटिलिटी फ़ंक्शंस shlwapi.dll में हैं। यह एपीआई की यूजर इंटरफेस श्रेणी के तहत समूहीकृत है।
नेटवर्क सर्विसेज
[13] ऑपरेटिंग सिस्टम की विभिन्न नेटवर्किंग क्षमताओं तक पहुंच दें। इसके उप-घटकों में नेटबीआईओएस (NetBIOS), विनसॉक (Winsock), नेटडीडीई, दूरस्थ प्रक्रिया कॉल (आरपीसी) और बहुत कुछ शामिल हैं। यह घटक 32-बिट विंडोज पर netapi32.dll में स्थित है।

वेब

इंटरनेट एक्स्प्लोरर (आईई) वेब ब्राउजर भी कई एपीआई को अनावृत करता है जो अक्सर अनुप्रयोगों द्वारा उपयोग किया जाता है, और इस तरह इसे विंडोज एपीआई का एक हिस्सा माना जा सकता है। आईई को विंडोज 95 ओएसआर2 के बाद से ऑपरेटिंग सिस्टम के साथ शामिल किया गया है और विंडोज 98 के बाद से अनुप्रयोगों के लिए वेब-संबंधित सेवाएं प्रदान की गई हैं।[14] विशेष रूप से, यह प्रदान करने के लिए प्रयोग किया जाता है:

  • एक एम्बेड करने योग्य वेब ब्राउज़र नियंत्रण, shdocvw.dll और mshtml.dll में समाहित है।
  • urlmon.dll में आयोजित URL मोनिकर सेवा, जो URL को हल करने के लिए एप्लिकेशन को कॉम (COM) ऑब्जेक्ट प्रदान करती है। एप्लिकेशन अन्य लोगों द्वारा उपयोग किए जाने के लिए अपने स्वयं के URL हैंडलर भी प्रदान कर सकते हैं।
  • एक एचटीटीपी क्लाइंट लाइब्रेरी जो सिस्टम-वाइड प्रॉक्सी सेटिंग्स (wininet.dll) को भी ध्यान में रखती है; हालाँकि, Microsoft ने winhttp.dll नामक एक अन्य HTTP क्लाइंट लाइब्रेरी को जोड़ा है जो कुछ अनुप्रयोगों के लिए छोटा और अधिक उपयुक्त है।
  • बहु-भाषा और अंतर्राष्ट्रीय पाठ समर्थन (mlang.dll) के साथ सहायता करने के लिए एक पुस्तकालय।
  • डायरेक्टएक्स ट्रांसफ़ॉर्म, इमेज फ़िल्टर घटकों का एक सेट।
  • XML समर्थन (एमएसएक्सएमएल घटक, msxml*.dll में रखा गया है)।
  • विंडोज एड्रेस बुक्स तक पहुंच।

मल्टीमीडिया

क्लासिक विंडोज मल्टीमीडिया एपीआई को winmm.dll में रखा गया है और इसमें ध्वनि फ़ाइलों को चलाने, मिडी संदेश भेजने और प्राप्त करने, जॉयस्टिक्स तक पहुंचने और विंडोज के तथाकथित एमसीआई सबसिस्टम की अन्य सभी सुविधाओं को सुविधाजनक बनाने के लिए कार्य शामिल हैं, जो उपलब्ध मल्टीमीडिया एक्सटेंशन से उत्पन्न होता है। विंडोज 3.0 के लिए अलग से और विंडोज 3.1 के बाद से ऑपरेटिंग सिस्टम के अभिन्न अंग के रूप में, जिस समय वे mmsystem.dll में स्थित थे।

इसके अलावा, विंडोज 95 OSR2 के बाद से प्रत्येक विंडोज संस्करण के हिस्से के रूप में, माइक्रोसॉफ्ट ने डायरेक्टएक्स एपीआई प्रदान किया है - ग्राफिक्स और गेमिंग सेवाओं का एक शिथिल संबंधित सेट, जिसमें शामिल हैं:

  • Direct2D हार्डवेयर-त्वरित 2D वेक्टर ग्राफिक्स के लिए।
  • Direct3D हार्डवेयर-त्वरित 3D ग्राफ़िक्स के लिए।
  • निम्न-स्तरीय हार्डवेयर-त्वरित साउंड कार्ड एक्सेस के लिए डायरेक्टसाउंड।
  • जॉयस्टिक और गेमपैड जैसे इनपुट उपकरणों के साथ संचार के लिए डायरेक्ट इनपुट (DirectInput)।
  • डायरेक्टप्ले एक मल्टीप्लेयर गेमिंग इंफ्रास्ट्रक्चर है। इस घटक को डायरेक्टएक्स 9 के रूप में बहिष्कृत कर दिया गया है, और Microsoft अब गेम के विकास के लिए इसके उपयोग की अनुशंसा नहीं करता है।
  • पहले के डायरेक्टएक्स संस्करणों में 2D ग्राफ़िक्स के लिए डायरेक्टड्रा (DirectDraw) को अब हटा दिया गया है और Direct2D के साथ बदल दिया गया है।
  • विंडोज़ 3.एक्स संस्करणों के लिए लिखे गए 16-बिट गेम में 2D ग्राफ़िक्स के लिए विनजी (WinG)। विंडोज 95 रिलीज के साथ पदावनत।

मीडिया एन्कोडिंग और प्लेबैक के लिए माइक्रोसॉफ्ट कई एपीआई भी प्रदान करता है:

  • डायरेक्टशो, जो सामान्य मल्टीमीडिया पाइपलाइनों का निर्माण और संचालन करता है। यह जी स्ट्रीमर (जी स्ट्रीमर) फ्रेमवर्क के बराबर है और अक्सर इन-गेम वीडियो रेंडर करने और मीडिया प्लेयर बनाने के लिए उपयोग किया जाता है (विंडोज़ मीडिया प्लेयर इस पर आधारित है)। गेम डेवलपमेंट के लिए अब डायरेक्टशो की अनुशंसा नहीं की जाती है।
  • मीडिया फाउंडेशन, एक नया डिजिटल मीडिया एपीआई, जो डायरेक्टशो को बदलने का इरादा रखता है।

प्रोग्राम इंटरेक्शन

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

शब्दों की विविधता मूल रूप से सॉफ्टवेयर तंत्र के समूहीकरण का परिणाम है जो सॉफ्टवेयर विकास के एक दिए गए पहलू से संबंधित है। स्वचालन विशेष रूप से एक एप्लिकेशन या घटक (एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (एपीआई) के रूप में) के कार्य को निर्यात करने से संबंधित है ताकि इसे केवल मानव उपयोगकर्ताओं के बजाय अन्य अनुप्रयोगों द्वारा नियंत्रित किया जा सके। विभिन्न प्रकार के जस्ट-इन-टाइम (JIT) संकलित भाषाओं में लिखित डेस्कटॉप और वेब एप्लिकेशन विकसित करें।

Windows.pas एक पास्कल/डेल्फी इकाई है जिसमें विंडोज-विशिष्ट एपीआई घोषणाएं शामिल हैं। यह windows.h का पास्कल समतुल्य है, जिसका उपयोग सी में किया जाता है।[15]

रैपर लाइब्रेरी

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

विंडोज के लिए अधिकांश एप्लिकेशन फ्रेमवर्क (कम से कम आंशिक रूप से) विंडोज एपीआई को लपेटते हैं। इस प्रकार, .NET फ्रेमवर्क और जावा, इसी तरह विंडोज के तहत कोई भी अन्य प्रोग्रामिंग लैंग्वेज, रैपर लाइब्रेरी हैं (या शामिल हैं)।

इतिहास

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

उदाहरण के लिए, शुरुआती सी प्रोग्रामर अक्सर अपने पहले असाइनमेंट के रूप में सरल "हैलो वर्ल्ड" लिखेंगे। मुख्य उपनेमका के भीतर कार्यक्रम का कामकाजी हिस्सा केवल एक प्रिंटएफ लाइन है। मानक I/O लाइब्रेरी से लिंक करने का ओवरहेड भी केवल एक लाइन है:

#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
}

विंडोज संस्करण अभी भी कोड की केवल एक कामकाजी लाइन थी लेकिन इसके लिए ओवरहेड की कई और अधिक लाइनों की आवश्यकता थी। विंडोज एपीआई के लिए प्रोग्रामिंग के बारे में कई किताबें लिखने वाले चार्ल्स पेटज़ोल्ड ने कहा: "विंडोज 1.0 एसडीके में मूल हैलो वर्ल्ड प्रोग्राम थोड़ा सा स्कैंडल था। HELLO.C लगभग 150 लाइन लंबी थी, और HELLO.RC संसाधन स्क्रिप्ट और 20 या उससे अधिक पंक्तियाँ थीं। (...) अनुभवी प्रोग्रामर अक्सर विंडोज हैलो-वर्ल्ड प्रोग्राम का सामना करते समय डरावनी या हँसी में डूब जाते थे।"[16]

इन वर्षों में, विंडोज सिस्टम में कई बदलाव और परिवर्धन किए गए, और विंडोज एपीआई इसे बदलने के लिए बदल गया और बढ़ा।[17] विंडोज 1.0 के लिए विंडोज एपीआई 450 से कम फ़ंक्शन कॉल का समर्थन करता है, जबकि विंडोज एपीआई के आधुनिक संस्करण हजारों का समर्थन करते हैं। हालांकि, सामान्य तौर पर, इंटरफ़ेस काफी सुसंगत रहा, और एक पुराना विंडोज 1.0 एप्लिकेशन अभी भी एक प्रोग्रामर को परिचित लगेगा जो आधुनिक विंडोज एपीआई के लिए उपयोग किया जाता है।[18]

माइक्रोसॉफ्ट ने पश्च संगतता बनाए रखने का प्रयास किया है। इसे प्राप्त करने के लिए, विंडोज़ के नए संस्करणों को विकसित करते समय, माइक्रोसॉफ्ट ने कभी-कभी वर्कअराउंड[19] को तीसरे पक्ष के सॉफ़्टवेयर के साथ संगतता की अनुमति देने के लिए लागू किया था, जो पूर्व संस्करण का उपयोग अनिर्दिष्ट या यहां तक कि अनुचित तरीके से करता था। विंडोज एपीआई पर काम करने वाले एक माइक्रोसॉफ्ट डेवलपर रेमंड चेन ने कहा है: "मैं शायद महीनों तक पूरी तरह से खराब चीजों के बारे में लिख सकता हूं जो ऐप्स करते हैं और उन्हें फिर से काम करने के लिए हमें क्या करना था (अक्सर खुद के बावजूद)। यह यही कारण है कि जब लोग माइक्रोसॉफ्ट पर ओएस उन्नयन के दौरान दुर्भावनापूर्ण रूप से अनुप्रयोगों को तोड़ने का आरोप लगाते हैं तो मैं विशेष रूप से क्रोधित हो जाता हूं। अगर कोई भी आवेदन विंडोज 95 पर चलने में विफल रहा, तो मैंने इसे व्यक्तिगत विफलता के रूप में लिया।"[20]

विंडोज एपीआई में सबसे बड़े परिवर्तनों में से एक विन 16 (विंडोज़ 3.1 और पुराने में शिप किया गया) से विन32 (Win32) (विंडोज़ एनटी और विंडोज 95 और ऊपर) में परिवर्तन था। जबकि विन32 को मूल रूप से विंडोज एनटी 3.1 (NT3.1) के साथ पेश किया गया था और विन32एस (Win32s) ने विंडोज 95 से पहले एक विन32 सबसेट के उपयोग की अनुमति दी थी, यह विंडोज 95 तक नहीं था कि विन32 के लिए अनुप्रयोगों की व्यापक पोर्टिंग शुरू हो गई। संक्रमण को आसान बनाने के लिए, विंडोज 95 में, माइक्रोसॉफ्ट के बाहर और अंदर के डेवलपर्स के लिए, एपीआई थंक्स की एक जटिल योजना का उपयोग किया गया था जो 32-बिट कोड को 16-बिट कोड (अधिकांश विन16 एपीआई के लिए) और इसके विपरीत कॉल करने की अनुमति दे सकता था। फ्लैट थंक्स ने 32-बिट कोड को 16-बिट पुस्तकालयों में कॉल करने की अनुमति दी, और एक बैच में पूरे ओएस को विन32 में पोर्ट करने से बचने के लिए इस योजना का उपयोग विंडोज 95 के पुस्तकालयों के अंदर बड़े पैमाने पर किया गया था। विंडोज एनटी में, ओएस शुद्ध 32-बिट था, 16-बिट अनुप्रयोगों के साथ संगतता के लिए भागों को छोड़कर, और विंडोज 95 के लिए विन 16 से विन 32 तक थंक करने के लिए केवल जेनेरिक थंक्स उपलब्ध थे। प्लेटफ़ॉर्म एसडीके एक कंपाइलर के साथ भेज दिया गया जो कर सकता था इन थैंक्स के लिए आवश्यक कोड तैयार करें। 64-बिट विंडोज़ के संस्करण भी वाह64 के माध्यम से 32-बिट एप्लिकेशन चलाने में सक्षम हैं। ओएस (OS) ड्राइव पर विंडोज फोल्डर में स्थित सिसवाउ64 फ़ोल्डर में 32-बिट अनुप्रयोगों का समर्थन करने के लिए कई उपकरण हैं।[citation needed]

संस्करण

माइक्रोसॉफ्ट विंडोज के लगभग हर नए संस्करण ने विंडोज एपीआई में अपने स्वयं के परिवर्धन और परिवर्तन पेश किए हैं।[21] हालांकि, एपीआई का नाम विंडोज के विभिन्न संस्करणों के बीच एक जैसा बना रहा, और नाम परिवर्तन को विंडोज के लिए प्रमुख आर्किटेक्चरल और प्लेटफॉर्म परिवर्तनों तक सीमित रखा गया। माइक्रोसॉफ्ट ने अंततः तत्कालीन विन 32 एपीआई परिवार का नाम विंडोज एपीआई  में बदल दिया और इसे पिछले और भविष्य के दोनों एपीआई संस्करणों के लिए कैच-ऑल टर्म में बदल दिया।[4]

  • विन16 (Win16) माइक्रोसॉफ्ट विंडोज के पहले, 16-बिट संस्करणों के लिए एपीआई है। इन्हें शुरू में केवल विंडोज एपीआई के रूप में संदर्भित किया गया था, लेकिन बाद में उन्हें विंडोज एपीआई के नए, 32-बिट संस्करण से अलग करने के प्रयास में विन 16 का नाम बदल दिया गया। विन16 API के कार्य मुख्य रूप से OS की कोर फाइलों में रहते हैं: kernel.exe (या krnl286.exe या krnl386.exe), user.exe और gdi.exe। एक्सई के फ़ाइल एक्सटेंशन के बावजूद, ये वास्तव में डायनेमिक-लिंक लाइब्रेरी हैं।
  • Win32 विंडोज के 32-बिट संस्करणों (NT, 95, और बाद के संस्करणों) के लिए 32-बिट एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (API) है। एपीआई में सिस्टम डीएलएल में विन 16 के साथ लागू किए गए कार्य होते हैं। Win32 के मूल DLL हैं- kernel32.dll, user32.dll और gdi32.dll। विन32 को विंडोज एनटी के साथ पेश किया गया था। विंडोज 95 के साथ शिप किए गए Win32 के संस्करण को शुरू में Win32c के रूप में संदर्भित किया गया था, जिसमें c अर्थ अनुकूलता थी। इस शब्द को बाद में Microsoft ने Win32 के पक्ष में छोड़ दिया।
  • Win32s माइक्रोसॉफ्ट विंडोज के विंडोज 3.1x के Windows 3.1x परिवार के लिए एक विस्तार है जिसने इन प्रणालियों के लिए Win32 API का एक सबसेट लागू किया है। "एस" "सबसेट" के लिए खड़ा है।
  • Win64 विंडोज आर्किटेक्चर के 64-बिट प्लेटफॉर्म पर लागू एपीआई का संस्करण है (2021 तक, x86-64 और AArch64)।[lower-alpha 1][22][23] एक आवेदन के 32-बिट और 64-बिट संस्करण दोनों अभी भी एक कोडबेस से संकलित किया जा सकता है, हालांकि कुछ पुराने एपीआई को पदावनत कर दिया गया है, और कुछ एपीआई जो पहले से ही Win32 में पदावनत थे, को हटा दिया गया था। डिफ़ॉल्ट रूप से सभी मेमोरी पॉइंटर्स 64-बिट होते हैं (एलएलपी64 मॉडल), इसलिए 64-बिट पॉइंटर अंकगणित के साथ संगतता के लिए स्रोत कोड की जांच की जानी चाहिए और आवश्यकतानुसार फिर से लिखा जाना चाहिए। [24]
  • विनसीई विंडोज सीई (Windows CE) ऑपरेटिंग सिस्टम के लिए विंडोज एपीआई का कार्यान्वयन है।

अन्य कार्यान्वयन

शराब (सॉफ्टवेयर) प्रोजेक्ट यूनिक्स जैसे प्लेटफॉर्म के लिए लिनक्स कर्नेल एपीआई और विंडोज एपीआई के लिए लिखे गए प्रोग्राम के बीच एक Win32 एपीआई संगतता परत प्रदान करता है। रिएक्टोस एक कदम और आगे जाता है और कोड पुन: उपयोग और अनुकूलता को बढ़ावा देने के लिए वाइन प्रोजेक्ट के साथ मिलकर काम करते हुए पूर्ण विंडोज ऑपरेटिंग सिस्टम को लागू करने का लक्ष्य रखता है। DosWin32 और HX DOS एक्सटेंडर अन्य प्रोजेक्ट हैं जो DOS कमांड लाइन से सरल विंडोज प्रोग्राम को निष्पादित करने की अनुमति देने के लिए Windows API का अनुकरण करते हैं। ओडिन (कोड रूपांतरण सॉफ्टवेयर) ओएस/2 पर विन32 का अनुकरण करने के लिए एक परियोजना है, जो माइक्रोसॉफ्ट कोड पर आधारित मूल विन-ओएस/2 अनुकरण का स्थान लेती है। अन्य छोटे कार्यान्वयन में MEWEL और जिंक एप्लीकेशन फ्रेमवर्क लाइब्रेरी शामिल हैं, जिनका उद्देश्य DOS पर Win16 API के एक सबसेट को लागू करना था (प्लेटफ़ॉर्म-स्वतंत्र जीयूआई पुस्तकालयों की सूची देखें)।

विंडोज इंटरफ़ेस स्रोत पर्यावरण (WISE) माइक्रोसॉफ्ट का एक लाइसेंसिंग प्रोग्राम था, जिसने डेवलपर्स को यूनिक्स और मैकिनटोश प्लेटफॉर्म पर विंडोज-आधारित एप्लिकेशन को फिर से कंपाइल और चलाने की अनुमति दी थी। WISE SDKs Windows API के एक एमुलेटर पर आधारित थे जो उन प्लेटफॉर्म पर चल सकते थे।[24] मानकीकरण के प्रयासों में Win16 के लिए सन का सार्वजनिक विंडोज इंटरफ़ेस (PWI) शामिल है (यह भी देखें: सन विंडोज एप्लीकेशन बाइनरी इंटरफेस (Wabi (सॉफ्टवेयर))), Win16 और Win32 के लिए विलो सॉफ्टवेयर का विंडोज के लिए एप्लीकेशन प्रोग्रामिंग इंटरफेसAPIW) के लिए (यह भी देखें: Willows TWIN) ), और ECMA-234, जिसने Windows API को बाध्यकारी रूप से मानकीकृत करने का प्रयास किया।

संकलक समर्थन

Windows API का उपयोग करने वाले सॉफ़्टवेयर को विकसित करने के लिए, एक कंपाइलर ऊपर सूचीबद्ध Microsoft-विशिष्ट DLL का उपयोग करने में सक्षम होना चाहिए (COM-ऑब्जेक्ट्स Win32 के बाहर हैं और एक निश्चित व्यवहार्य लेआउट मानते हैं)। कंपाइलर को या तो हेडर फाइलों को संभालना चाहिए जो आंतरिक एपीआई फ़ंक्शन नामों को उजागर करता है, या ऐसी फाइलों की आपूर्ति करता है।

C++ भाषा के लिए, ज़ोर्टेक (बाद में नॉर्टनलाइफ लॉक, फिर डिजिटल मंगल), वाटकॉम और बोरलैंड ने सभी प्रसिद्ध व्यावसायिक संकलक तैयार किए हैं जिनका उपयोग अक्सर Win16, Win32s और Win32 के साथ किया जाता है। उनमें से कुछ ने मेमोरी एक्सटेंडर की आपूर्ति की, जिससे Win32 प्रोग्राम को Microsoft के पुनर्वितरण योग्य Win32s DLL के साथ Win16 पर चलने की अनुमति मिली। Microsoft के पास C++ कंपाइलर होने से पहले, Zortech कंपाइलर शायद Windows प्रोग्रामिंग के लिए पहले स्थिर और प्रयोग करने योग्य C++ कंपाइलरों में से एक था।

एप्लिकेशन के कुछ वर्गों के लिए, कंपाइलर सिस्टम को इंटरफ़ेस विवरण भाषा (IDL) फ़ाइलों को संभालने में भी सक्षम होना चाहिए। सामूहिक रूप से, इन पूर्वापेक्षाओं (कंपाइलर, टूल, लाइब्रेरी और हेडर) को Microsoft प्लेटफ़ॉर्म SDK के रूप में जाना जाता है। एक समय के लिए, Microsoft विजुअल स्टूडियो और बोरलैंड की एकीकृत विकास प्रणाली एकमात्र एकीकृत विकास वातावरण (IDEs) थी जो इसे प्रदान कर सकती थी (हालाँकि, SDK पूरे IDE सुइट से अलग से मुफ्त में डाउनलोड करने योग्य है, microsoft.com/download/en/details.aspx?displaylang=en&id=8279 विंडोज 7 और .NET फ्रेमवर्क 4 के लिए माइक्रोसॉफ्ट विंडोज एसडीके)।

As of 2016, MinGW और Cygwin प्रोजेक्ट भी जीएनयू संकलक संग्रह (GCC) पर आधारित एक ऐसा वातावरण प्रदान करते हैं, जो Win32-विशिष्ट DLL के विरुद्ध लिंकिंग को सरल बनाने के लिए स्टैंड-अलोन हेडर फ़ाइल सेट का उपयोग करता है। LCC-Win32 जैकब नविया द्वारा अनुरक्षित एक C संकलक है, जो गैर-व्यावसायिक उपयोग के लिए फ्रीवेयर है। Pelles C, Pelle Orinius द्वारा अनुरक्षित एक फ्रीवेयर C संकलक है। फ़्री पास्कल एक मुफ्त सॉफ्टवेयर वस्तु पास्कल कंपाइलर है जो विंडोज एपीआई को सपोर्ट करता है। MASM32 पैकेज एक परिपक्व परियोजना है जो प्लेटफ़ॉर्म SDK से कस्टम मेड या परिवर्तित हेडर और लाइब्रेरी का उपयोग करके Microsoft मैक्रो असेंबलर (MASM) के तहत Windows API के लिए समर्थन प्रदान करता है। फ्लैट असेंबलर FASM लिनक्स पर चलने पर भी बाहरी लिंकर का उपयोग किए बिना विंडोज प्रोग्राम बनाने की अनुमति देता है।

माइक्रोसॉफ्ट-विशिष्ट अपवाद हैंडलिंग तंत्र # संरचित अपवाद हैंडलिंग (एसईएच) के लिए विंडोज़ विशिष्ट कंपाइलर समर्थन की भी आवश्यकता है। यह सिस्टम दो उद्देश्यों को पूरा करता है: यह एक सब्सट्रेट प्रदान करता है जिस पर भाषा-विशिष्ट अपवाद हैंडलिंग को लागू किया जा सकता है, और यह है कि कैसे कर्नेल असाधारण स्थितियों के अनुप्रयोगों को सूचित करता है जैसे कि एक अमान्य सूचक या ढेर अतिप्रवाह को संदर्भित करना। Microsoft/Borland C++ कंपाइलर्स में विंडोज 95 और NT में पेश होते ही इस सिस्टम का उपयोग करने की क्षमता थी, हालांकि वास्तविक कार्यान्वयन अनियंत्रित था और वाइन प्रोजेक्ट और फ्री कंपाइलर्स के लिए रिवर्स इंजीनियर होना था। एसईएच अपवाद हैंडलर फ्रेम को स्टैक पर धकेलने पर आधारित है, फिर उन्हें थ्रेड-लोकल स्टोरेज (थ्रेड एनवायरनमेंट ब्लॉक का पहला फील्ड) में स्टोर की गई लिंक्ड लिस्ट में जोड़ा जाता है। जब एक अपवाद फेंका जाता है, तो कर्नेल और बेस लाइब्रेरी स्टैक चल रहे हैंडलर और फ़िल्टर को खोलते हैं, जैसा कि उनका सामना होता है। आखिरकार, एप्लिकेशन द्वारा बिना हैंडल किए गए हर अपवाद को डिफ़ॉल्ट बैकस्टॉप हैंडलर द्वारा निपटाया जाएगा, जो विंडोज कॉमन क्रैश डायलॉग को पॉप अप करता है।

यह भी देखें

टिप्पणियाँ

  1. Nomenclature of released 64-bit versions includes Windows XP Professional x64 Edition and x64 Editions of Windows Server 2003, Windows Vista and Windows Server 2008 on the x86-64 (AMD64) platform, and Windows 2000 Server Limited Edition, Windows XP 64-bit Edition, Windows Advanced Server 2003 for Itanium and Windows 2008 Advanced Server for Itanium on the IA-64 platform.


संदर्भ

  1. Russinovich, Mark (November 2006). "नेटिव एप्लिकेशन के अंदर". Microsoft Docs. Retrieved April 12, 2022.
  2. "पूर्वाभ्यास: एक पारंपरिक विंडोज़ डेस्कटॉप अनुप्रयोग बनाएँ (C++)". Microsoft Docs. February 23, 2022.
  3. 3.0 3.1 Mayberry, Michael (2012). WinRT से पता चला. New York City: Apress. p. 3. ISBN 978-1-4302-4585-8.
  4. 4.0 4.1 Microsoft Developer Network (July 2005). Overview of the Windows API. Retrieved August 28, 2005.
  5. Microsoft Developer Network (July 2005). Base Services. Retrieved August 28, 2005.
  6. Microsoft Developer Network (July 2005). Graphics Device Interface. Retrieved August 28, 2005.
  7. "जी". Microsoft Developer Network. Retrieved 2009-01-28.
  8. Microsoft Developer Network (July 2005). User Interface. Retrieved August 28, 2005.
  9. Microsoft Developer Network (2005). Common Dialog Box Library. Retrieved September 22, 2005.
  10. Microsoft Developer Network (July 2005). Common Control Library. Retrieved August 28, 2005.
  11. Microsoft Developer Network (July 2005). Windows Shell. Retrieved August 28, 2005.
  12. Microsoft Developer Network (2005). Shell Programmer's Guide. Retrieved August 28, 2005.
  13. Microsoft Developer Network (July 2005). Network Services. Retrieved August 28, 2005.
  14. Microsoft Developer Network (January 2006); Programming and reusing the browser Retrieved January 22, 2006.
  15. Texeira, Steve and Xavier Pacheco (2002). बोर्लैंड डेल्फी 6 डेवलपर गाइड. Sams. p. 253. ISBN 0672321157.
  16. Charles Petzold (December 2001). Programming Microsoft Windows with C#. Microsoft Press. Beyond the Console, page 47.
  17. Detailed analysis of changes in the Windows API from XP to 10. Retrieved September 08, 2016.
  18. Charles Petzold (November 11, 1998). Programming Windows, Fifth Edition. Microsoft Press. APIs and Memory Models, page 9.
  19. Smith, Graham (8 October 2022). "विंडोज 95 में मूल सिमसीटी में बग को ठीक करने के लिए विशेष कोड था". Rock, Paper, Shotgun (in English).
  20. Raymond Chen (October 15, 2003). What about BOZOSLIVEHERE and TABTHETEXTOUTFORWIMPS? Retrieved June 29, 2022.
  21. The Iseran Project (1996–2001). History of the Windows API. Retrieved October 7, 2005.
  22. "Windows XP Professional x64 संस्करण होम पेज". Microsoft.
  23. "Microsoft 64-बिट कम्प्यूटिंग अवलोकन". Microsoft.
  24. WISE Archived 2008-03-30 at the Wayback Machine


बाहरी संबंध