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

From Vigyanwiki
(Created page with "{{Short description|Microsoft's core set of application programming interfaces on Windows}} विंडोज एपीआई, अनौपचारिक रूप स...")
 
No edit summary
 
(12 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Short description|Microsoft's core set of application programming interfaces on Windows}}
{{Short description|Microsoft's core set of application programming interfaces on Windows}}
विंडोज [[एपीआई]], अनौपचारिक रूप से विनएपीआई, [[माइक्रोसॉफ़्ट विंडोज़]] ऑपरेटिंग सिस्टम में उपलब्ध एपीआई (एपीआई) का माइक्रोसॉफ्ट का कोर सेट है। Windows API नाम सामूहिक रूप से कई अलग-अलग प्लेटफ़ॉर्म कार्यान्वयनों को संदर्भित करता है जिन्हें अक्सर उनके अपने नामों से संदर्भित किया जाता है (उदाहरण के लिए, Win32 API); #संस्करण अनुभाग देखें। लगभग सभी विंडोज प्रोग्राम विंडोज एपीआई के साथ इंटरैक्ट करते हैं। ऑपरेटिंग सिस्टम की विंडोज एनटी लाइन पर, एक छोटी संख्या (जैसे कि [[विंडोज एनटी स्टार्टअप प्रक्रिया]] के शुरू में शुरू होने वाले प्रोग्राम) [[देशी एपीआई]] का उपयोग करते हैं।<ref name="technet-nativeapi">{{cite web|website=[[Microsoft Docs]]|date=November 2006|url=https://docs.microsoft.com/en-us/sysinternals/resources/inside-native-applications|title=नेटिव एप्लिकेशन के अंदर|first=Mark|last=Russinovich|author-link=Mark Russinovich|access-date=April 12, 2022}}</ref>
'''विंडोज [[एपीआई]]''', अनौपचारिक रूप से विनएपीआई, [[माइक्रोसॉफ़्ट विंडोज़]] ऑपरेटिंग सिस्टम में उपलब्ध एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई) का माइक्रोसॉफ्ट का कोर सेट है। विंडोज एपीआई, नाम सामूहिक रूप से कई अलग-अलग प्लेटफ़ॉर्म कार्यान्वयनों को संदर्भित करता है जिन्हें प्रायः अपने स्वयं के नामों से संदर्भित किया जाता है (उदाहरण के लिए, विन 32 एपीआई); संस्करण अनुभाग देखें। लगभग सभी विंडोज प्रोग्राम विंडोज एपीआई के साथ इंटरैक्ट करते हैं। ऑपरेटिंग सिस्टम की [[विंडोज एनटी स्टार्टअप प्रक्रिया|विंडोज एनटी]] लाइन पर, एक छोटी संख्या (जैसे कि विंडोज स्टार्टअप प्रक्रिया के प्रारम्भ में प्रारम्भ होने वाले प्रोग्राम) नेटिव [[देशी एपीआई|एपीआई]] का उपयोग करते हैं।<ref name="technet-nativeapi">{{cite web|website=[[Microsoft Docs]]|date=November 2006|url=https://docs.microsoft.com/en-us/sysinternals/resources/inside-native-applications|title=नेटिव एप्लिकेशन के अंदर|first=Mark|last=Russinovich|author-link=Mark Russinovich|access-date=April 12, 2022}}</ref>
डेवलपर समर्थन [[सॉफ़्टवेयर विकास किट]], [[Microsoft Windows SDK]] के रूप में उपलब्ध है, जो Windows API और संबद्ध Windows इंटरफ़ेस पर आधारित सॉफ़्टवेयर बनाने के लिए आवश्यक दस्तावेज़ और टूल प्रदान करता है।


Windows API (Win32) मुख्य रूप से प्रोग्रामिंग भाषा C (प्रोग्रामिंग भाषा) पर केंद्रित है<ref>{{cite web|url=https://docs.microsoft.com/en-us/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp|title=पूर्वाभ्यास: एक पारंपरिक विंडोज़ डेस्कटॉप अनुप्रयोग बनाएँ (C++)|date=February 23, 2022|website=[[Microsoft Docs]]}}</ref> इसमें इसके खुला कार्यों और डेटा संरचनाओं को इसके प्रलेखन के हाल के संस्करणों में उस भाषा में वर्णित किया गया है। हालाँकि, एपीआई का उपयोग किसी भी प्रोग्रामिंग लैंग्वेज [[संकलक]] या असेंबलर (कंप्यूटिंग) द्वारा किया जा सकता है, जो कॉल और [[कॉलबैक (कंप्यूटर प्रोग्रामिंग)]] के लिए निर्धारित [[कॉलिंग कन्वेंशन]] के साथ-साथ (अच्छी तरह से परिभाषित) निम्न-स्तरीय डेटा संरचनाओं को संभालने में सक्षम है। इसी तरह, एपीआई के कार्य का आंतरिक कार्यान्वयन ऐतिहासिक रूप से कई भाषाओं में विकसित किया गया है।{{efn|Both the languages [[Pascal (programming language)|Pascal]] and [[x86 assembly]] had been heavily used in earlier versions of the Windows API, before C became dominant. A reminiscence of this is that the API functions still use the [[Pascal calling convention]] to restore the stack from pushed parameters after a call (although they expect parameters pushed from right to left, as most C compilers do, by default).}} इस तथ्य के बावजूद कि C एक वस्तु-उन्मुख प्रोग्रामिंग भाषा नहीं है, Windows API और Windows दोनों को ऐतिहासिक रूप से वस्तु-उन्मुख के रूप में वर्णित किया गया है। ऑब्जेक्ट-ओरिएंटेड भाषाओं के लिए कई रैपर क्लासेस और एक्सटेंशन (माइक्रोसॉफ्ट और अन्य से) भी हैं जो इस [[वस्तु उन्मुख कार्यकर्म]] को अधिक स्पष्ट ([[माइक्रोसॉफ्ट फाउंडेशन क्लास लाइब्रेरी]] (एमएफसी), [[विजुअल कंपोनेंट लाइब्रेरी]] (वीसीएल), [[जीडीआई+]] +, आदि) बनाते हैं। . उदाहरण के लिए, [[विंडोज 8]] विंडोज एपीआई और [[विनआरटी]] एपीआई प्रदान करता है, जिसे [[सी ++]] में लागू किया गया है<ref name="rtcpp">{{cite book |title=WinRT से पता चला|publisher=Apress |author=Mayberry, Michael |year=2012 |location=New York City |pages=3 |isbn=978-1-4302-4585-8}}</ref> और डिज़ाइन द्वारा ऑब्जेक्ट-ओरिएंटेड है।<ref name="rtcpp"/>
डेवलपर समर्थन [[सॉफ़्टवेयर विकास किट|सॉफ़्टवेयर]] डेवलपमेंट किट, माइक्रोसॉफ्ट विंडोज एसडीके ([[Microsoft Windows SDK]]) के रूप में उपलब्ध है, जो विंडोज एपीआई और संबद्ध विंडोज इंटरफ़ेस पर आधारित सॉफ़्टवेयर बनाने के लिए आवश्यक दस्तावेज़ और टूल प्रदान करता है।


 
विंडोज एपीआई (विन32) मुख्य रूप से प्रोग्रामिंग भाषा सी (C) पर केंद्रित है<ref>{{cite web|url=https://docs.microsoft.com/en-us/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp|title=पूर्वाभ्यास: एक पारंपरिक विंडोज़ डेस्कटॉप अनुप्रयोग बनाएँ (C++)|date=February 23, 2022|website=[[Microsoft Docs]]}}</ref>, जिसमें इसके खुला कार्यों और डेटा संरचनाओं को इसके प्रलेखन के हाल के संस्करणों में उस भाषा में वर्णित किया गया है। हालांकि, एपीआई का उपयोग किसी भी प्रोग्रामिंग लैंग्वेज कंपाइलर या असेंबलर द्वारा किया जा सकता है जो कॉल और [[कॉलबैक (कंप्यूटर प्रोग्रामिंग)|कॉलबैक]] के लिए निर्धारित [[कॉलिंग कन्वेंशन]] के साथ (अच्छी तरह से परिभाषित) निम्न-स्तरीय डेटा संरचनाओं को संभालने में सक्षम है। इसी तरह, एपीआई के कार्य के आंतरिक कार्यान्वयन को ऐतिहासिक रूप से कई भाषाओं में विकसित किया गया है। [इस तथ्य के बावजूद कि सी ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा नहीं है, विंडोज एपीआई और विंडोज दोनों को ऐतिहासिक रूप से ऑब्जेक्ट-ओरिएंटेड के रूप में वर्णित किया गया है। ऑब्जेक्ट-ओरिएंटेड भाषाओं के लिए कई रैपर क्लासेस और एक्सटेंशन (माइक्रोसॉफ्ट और अन्य से) भी हैं जो इस ऑब्जेक्ट-ओरिएंटेड स्ट्रक्चर ([[वस्तु उन्मुख कार्यकर्म]]) को अधिक स्पष्ट (माइक्रोसॉफ्ट [[माइक्रोसॉफ्ट फाउंडेशन क्लास लाइब्रेरी|फाउंडेशन क्लास लाइब्रेरी]] (एमएफसी), विजुअल कंपोनेंट लाइब्रेरी (वीसीएल), [[जीडीआई+]], आदि) बनाते हैं। उदाहरण के लिए, [[विंडोज 8]] विंडोज एपीआई और [[विनआरटी]] एपीआई प्रदान करता है, जो [[सी ++]] (C++)<ref name="rtcpp">{{cite book |title=WinRT से पता चला|publisher=Apress |author=Mayberry, Michael |year=2012 |location=New York City |pages=3 |isbn=978-1-4302-4585-8}}</ref> में लागू किया गया है और डिजाइन द्वारा ऑब्जेक्ट-ओरिएंटेड है।<ref name="rtcpp" />
== सिंहावलोकन ==
== अवलोकन ==
विंडोज एपीआई द्वारा प्रदान किए गए कार्यों को आठ श्रेणियों में बांटा जा सकता है:<ref name="msdn-overview2">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/overview_of_the_windows_api.asp Overview of the Windows API.]'' Retrieved August 28, 2005.</ref>
विंडोज एपीआई द्वारा प्रदान किए गए कार्यों को आठ श्रेणियों में बांटा जा सकता है:<ref name="msdn-overview2">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/overview_of_the_windows_api.asp Overview of the Windows API.]'' Retrieved August 28, 2005.</ref>
; आधार सेवाएं:<ref name="msdn-base">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/base_services.asp Base Services.]'' Retrieved August 28, 2005.</ref> विंडोज सिस्टम के लिए उपलब्ध बुनियादी संसाधनों तक पहुंच प्रदान करें। [[फाइल सिस्टम]], [[संगणक धातु सामग्री]], [[प्रक्रिया (कंप्यूटिंग)]], थ्रेड (कंप्यूटर साइंस) और [[त्रुटि प्रबंधन]] जैसी चीजें शामिल हैं। ये कार्य 16-बिट विंडोज़ पर <samp>kernel.exe</samp>, <samp>krnl286.exe</samp> या <samp>krnl386.exe</samp> फ़ाइलों और <samp>kernel32.dll में रहते हैं और 32 और 64 बिट विंडोज़ पर KernelBase.dll</samp>। ये फ़ाइलें विंडोज़ के सभी संस्करणों पर फोल्डर <samp>\Windows\System32</samp> में रहती हैं।
; बेस सर्विसेज:<ref name="msdn-base">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/base_services.asp Base Services.]'' Retrieved August 28, 2005.</ref> विंडोज सिस्टम के लिए उपलब्ध मूलभूत संसाधनों तक पहुंच प्रदान करें। इसमें [[फाइल सिस्टम]], डिवाइस, प्रोसेस, थ्रेड्स और एरर हैंडलिंग जैसी चीजें सम्मिलित हैं। ये कार्य 16-बिट विंडोज़ पर kernel.exe, krnl286.exe या krnl386.exe फ़ाइलों में रहते हैं, और 32 और 64 बिट विंडोज़ पर kernel32.dll और KernelBase.dll में रहते हैं। ये फ़ाइलें Windows के सभी संस्करणों पर \Windows\System32 फ़ोल्डर में रहती हैं।
; उन्नत सेवाएं
; उन्नत सेवाएं
: कर्नेल से परे कार्यों तक पहुंच प्रदान करें। [[विंडोज रजिस्ट्री]], शटडाउन/सिस्टम को पुनरारंभ करना (या निरस्त करना), [[विंडोज़ सेवा]] शुरू/रोकना/बनाना, उपयोगकर्ता खातों का प्रबंधन जैसी चीजें शामिल हैं। ये कार्य 32-बिट विंडोज़ पर <samp>advapi32.dll</samp> और <samp>advapires32.dll</samp> में रहते हैं।
: कर्नेल से परे कार्यों तक पहुंच प्रदान करें। [[विंडोज रजिस्ट्री]], शटडाउन/सिस्टम को फिर से प्रारम्भ करना (या निरस्त करना), [[विंडोज़ सेवा|विंडोज़]] सेवा प्रारम्भ/रोकना/बनाना और उपयोगकर्ता खातों को प्रबंधित करने जैसी चीजें सम्मिलित हैं। ये कार्य 32-बिट विंडोज पर advapi32.dll और advapires32.dll में रहते हैं।
; [[ग्राफिक्स डिवाइस इंटरफ़ेस]]:<ref name="msdn-gdi">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/graphics_device_interface.asp Graphics Device Interface.]'' Retrieved August 28, 2005.</ref> [[कंप्यूटर प्रदर्शन]], [[संगणक मुद्रक]], और अन्य [[आउटपुट डिवाइस]] के लिए ग्राफिक्स सामग्री को आउटपुट करने के लिए कार्य प्रदान करता है। यह 16-बिट विंडोज़ पर <samp>gdi.exe</samp> में रहता है, और उपयोगकर्ता-मोड में 32-बिट विंडोज़ पर <samp>gdi32.dll</samp> में रहता है। कर्नेल-मोड GDI समर्थन द्वारा प्रदान किया जाता है <code>win32k.sys</code> जो सीधे ग्राफिक्स ड्राइवर के साथ संचार करता है।<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/ms789535.aspx|title=जी|publisher=[[Microsoft Developer Network]]|access-date=2009-01-28}}</ref>
; [[ग्राफिक्स डिवाइस इंटरफ़ेस]]:<ref name="msdn-gdi">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/graphics_device_interface.asp Graphics Device Interface.]'' Retrieved August 28, 2005.</ref> मॉनिटर, प्रिंटर और अन्य [[आउटपुट डिवाइस]] के लिए ग्राफिक्स कंटेंट को आउटपुट करने के लिए फ़ंक्शन प्रदान करता है। यह उपयोगकर्ता मोड में 16-बिट विंडोज़ पर gdi.exe और 32-बिट विंडोज़ पर gdi32.dll में रहता है। कर्नेल-मोड GDI समर्थन win32k.sys द्वारा प्रदान किया जाता है जो सीधे ग्राफिक्स ड्राइवर के साथ संचार करता है।<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/ms789535.aspx|title=जी|publisher=[[Microsoft Developer Network]]|access-date=2009-01-28}}</ref>
; [[विंडोज़ उपयोगकर्ता]]:<ref name="msdn-ui">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/user_interface.asp User Interface.]'' Retrieved August 28, 2005.</ref> स्क्रीन [[विंडो (कम्प्यूटिंग)]] और [[बटन (कंप्यूटिंग)]] और [[स्क्रॉल बार]] जैसे सबसे बुनियादी नियंत्रण, माउस और कीबोर्ड इनपुट प्राप्त करने और विंडोज के [[ग्राफिकल यूज़र इंटरफ़ेस]] (जीयूआई) से जुड़े अन्य कार्यों को बनाने और प्रबंधित करने के लिए कार्य प्रदान करता है। यह कार्यात्मक इकाई 16-बिट विंडोज़ पर <samp>user.exe</samp> और 32-बिट विंडोज़ पर <samp>user32.dll</samp> में रहती है। [[Windows XP]] संस्करणों के बाद से, सामान्य नियंत्रण (कॉमन कंट्रोल लाइब्रेरी) के साथ, मूल नियंत्रण <samp>comctl32.dll</samp> में रहते हैं।
; [[विंडोज़ उपयोगकर्ता|यूजर इंटरफेस]]:<ref name="msdn-ui">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/user_interface.asp User Interface.]'' Retrieved August 28, 2005.</ref> स्क्रीन [[विंडो (कम्प्यूटिंग)|विंडो]] बनाने और प्रबंधित करने के लिए फ़ंक्शन प्रदान करता है और अधिकांश बुनियादी नियंत्रण, जैसे [[बटन (कंप्यूटिंग)|बटन]] और [[स्क्रॉल बार|क्रॉलबार]], माउस और कीबोर्ड इनपुट प्राप्त करते हैं, और विंडोज़ के [[ग्राफिकल यूज़र इंटरफ़ेस]] (जीयूआई) भाग से जुड़े अन्य फ़ंक्शन प्रदान करता है। यह कार्यात्मक इकाई 16-बिट विंडोज़ पर user.exe और 32-बिट विंडोज़ पर user32.dll में स्थित है। विंडोज एक्सपी ([[Windows XP]]) संस्करणों के बाद से, सामान्य नियंत्रण (सामान्य नियंत्रण लाइब्रेरी) के साथ, मूल नियंत्रण comctl32.dll में रहते हैं।
; कॉमन डायलॉग बॉक्स लाइब्रेरी:<ref name="msdn-comdlg">[[Microsoft Developer Network]] (2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary.asp Common Dialog Box Library.]'' Retrieved September 22, 2005.</ref> फ़ाइलों को खोलने और सहेजने, रंग और फ़ॉन्ट चुनने आदि के लिए एप्लिकेशन को मानक [[संवाद बॉक्स]] प्रदान करता है। लाइब्रेरी 16-बिट विंडोज़ पर <samp>commdlg.dll</samp> नामक फ़ाइल में रहती है, और <samp>comdlg32.dll< /samp> 32-बिट विंडोज पर। इसे एपीआई के यूजर इंटरफेस श्रेणी के तहत समूहीकृत किया गया है।
; कॉमन डायलॉग बॉक्स लाइब्रेरी:<ref name="msdn-comdlg">[[Microsoft Developer Network]] (2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary.asp Common Dialog Box Library.]'' Retrieved September 22, 2005.</ref> फ़ाइलों को खोलने और सहेजने, रंग और फ़ॉन्ट चुनने आदि के लिए मानक डायलॉग बॉक्स के साथ एप्लिकेशन प्रदान करता है। पुस्तकालय 16-बिट विंडोज़ पर commdlg.dll नामक फ़ाइल में रहता है, और 32-बिट विंडोज़ पर comdlg32.dll। इसे एपीआई के यूजर इंटरफेस श्रेणी के तहत समूहीकृत किया गया है।
; सामान्य नियंत्रण पुस्तकालय:<ref name="msdn-ccl">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/common_control_library.asp Common Control Library.]'' Retrieved August 28, 2005.</ref> एप्लिकेशन को ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए कुछ उन्नत नियंत्रणों तक पहुंच प्रदान करता है। इनमें [[स्टेटस बार]], [[प्रोगेस बार]], [[उपकरण पट्टी]] और [[टैब (जीयूआई)]] जैसी चीजें शामिल हैं। लाइब्रेरी 16-बिट विंडोज़ पर <samp>commctrl.dll</samp> और 32-बिट विंडोज़ पर <samp>comctl32.dll</samp> नामक [[डायनेमिक-लिंक लाइब्रेरी]] (DLL) फ़ाइल में रहती है। इसे एपीआई के यूजर इंटरफेस श्रेणी के तहत समूहीकृत किया गया है।
; कॉमन कंट्रोल लाइब्रेरी:<ref name="msdn-ccl">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/common_control_library.asp Common Control Library.]'' Retrieved August 28, 2005.</ref> एप्लिकेशन को ऑपरेटिंग सिस्टम द्वारा उपलब्ध कराए गए कुछ उन्नत नियंत्रणों तक पहुंच देता है। इनमें [[स्टेटस बार]], [[प्रोगेस बार]], [[उपकरण पट्टी|टूलबार]] और [[टैब (जीयूआई)|टैब]] जैसी चीज़ें सम्मिलित होती हैं. लाइब्रेरी 16-बिट विंडोज पर commctrl.dll और 32-बिट विंडोज पर comctl32.dll नामक [[डायनेमिक-लिंक लाइब्रेरी]] (DLL) फ़ाइल में स्थित है। यह एपीआई की यूजर इंटरफेस श्रेणी के तहत समूहीकृत है।
; विंडोज़ शैल:<ref name="msdn-shell">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_shell.asp Windows Shell.]'' Retrieved August 28, 2005.</ref><ref name="msdn-shell2">[[Microsoft Developer Network]] (2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_intro.asp Shell Programmer's Guide.]'' Retrieved August 28, 2005.</ref> विंडोज एपीआई का घटक अनुप्रयोगों को [[ऑपरेटिंग सिस्टम खोल]] द्वारा प्रदान किए गए कार्यों तक पहुंचने और इसे बदलने और बढ़ाने की अनुमति देता है। घटक 16-बिट विंडोज़ पर <samp>shell.dll</samp> में, और 32-बिट विंडोज़ पर <samp>shell32.dll</samp> में रहता है। शेल लाइटवेट यूटिलिटी फंक्शन <samp>shlwapi.dll</samp> में हैं। इसे एपीआई के यूजर इंटरफेस श्रेणी के तहत समूहीकृत किया गया है।
; विंडोज़ शैल:<ref name="msdn-shell">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_shell.asp Windows Shell.]'' Retrieved August 28, 2005.</ref><ref name="msdn-shell2">[[Microsoft Developer Network]] (2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_intro.asp Shell Programmer's Guide.]'' Retrieved August 28, 2005.</ref> विंडोज एपीआई का घटक एप्लिकेशन को [[ऑपरेटिंग सिस्टम खोल|ऑपरेटिंग सिस्टम]] शेल द्वारा प्रदान किए गए कार्यों तक पहुंचने और उन्हें बदलने और बढ़ाने की अनुमति देता है। घटक 16-बिट विंडोज़ पर shell.dll और 32-बिट विंडोज़ पर shell32.dll में रहता है। शेल लाइटवेट यूटिलिटी फ़ंक्शंस shlwapi.dll में हैं। यह एपीआई की यूजर इंटरफेस श्रेणी के तहत समूहीकृत है।
; नेटवर्क सेवाएं:<ref name="msdn-network">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/en-us/library/aa969177 Network Services.]'' Retrieved August 28, 2005.</ref> ऑपरेटिंग सिस्टम की विभिन्न [[कंप्यूटर नेटवर्क]] क्षमताओं तक पहुँच प्रदान करें। इसके उप-घटकों में [[NetBIOS]], [[Winsock]], [[NetDDE]], [[दुरस्तह प्रकिया कॉल]] (RPC) और कई अन्य शामिल हैं। यह घटक 32-बिट विंडोज़ पर <samp>netapi32.dll</samp> में रहता है।
; नेटवर्क सर्विसेज:<ref name="msdn-network">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/en-us/library/aa969177 Network Services.]'' Retrieved August 28, 2005.</ref> ऑपरेटिंग सिस्टम की विभिन्न [[कंप्यूटर नेटवर्क|नेटवर्किंग]] क्षमताओं तक पहुंच दें। इसके उप-घटकों में नेटबीआईओएस ([[NetBIOS]]), विनसॉक ([[Winsock]]), नेटडीडीई, दूरस्थ प्रक्रिया कॉल (आरपीसी) और बहुत कुछ सम्मिलित हैं। यह घटक 32-बिट विंडोज पर netapi32.dll में स्थित है।


=== वेब ===
=== वेब ===
[[इंटरनेट एक्स्प्लोरर]] (आईई) वेब ब्राउजर भी कई एपीआई को उजागर करता है जो अक्सर अनुप्रयोगों द्वारा उपयोग किया जाता है, और इस तरह इसे विंडोज एपीआई का एक हिस्सा माना जा सकता है। IE को विंडोज 95 OSR2 के बाद से ऑपरेटिंग सिस्टम के साथ शामिल किया गया है और [[विंडोज 98]] के बाद से अनुप्रयोगों के लिए वेब-संबंधित सेवाएं प्रदान की हैं।<ref name="msdn-browser">[[Microsoft Developer Network]] (January 2006); ''[http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/prog_browser_node_entry.asp Programming and reusing the browser]'' Retrieved January 22, 2006.</ref> विशेष रूप से, यह प्रदान करने के लिए प्रयोग किया जाता है:
[[इंटरनेट एक्स्प्लोरर]] (आईई) वेब ब्राउजर भी कई एपीआई को अनावृत करता है जो प्रायः अनुप्रयोगों द्वारा उपयोग किया जाता है, और इस तरह इसे विंडोज एपीआई का एक हिस्सा माना जा सकता है। आईई को विंडोज 95 ओएसआर2 के बाद से ऑपरेटिंग सिस्टम के साथ सम्मिलित किया गया है और [[विंडोज 98]] के बाद से अनुप्रयोगों के लिए वेब-संबंधित सेवाएं प्रदान की गई हैं।<ref name="msdn-browser">[[Microsoft Developer Network]] (January 2006); ''[http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/prog_browser_node_entry.asp Programming and reusing the browser]'' Retrieved January 22, 2006.</ref> विशेष रूप से, यह प्रदान करने के लिए प्रयोग किया जाता है:
* एम्बेड करने योग्य वेब ब्राउज़र नियंत्रण, <samp>shdocvw.dll</samp> और <samp>Trident (लेआउट इंजन)|mshtml.dll</samp> में निहित है।
 
* URL मॉनीकर सेवा, <samp>urlmon.dll</samp> में आयोजित की जाती है, जो URL को हल करने के लिए एप्लिकेशन को [[घटक वस्तु मॉडल]] ऑब्जेक्ट प्रदान करती है। एप्लिकेशन दूसरों के उपयोग के लिए अपने स्वयं के URL हैंडलर भी प्रदान कर सकते हैं।
* एम्बेड करने योग्य वेब ब्राउज़र नियंत्रण, shdocvw.dll और mshtml.dll में समाहित है।
* एक HTTP क्लाइंट लाइब्रेरी जो सिस्टम-वाइड प्रॉक्सी सेटिंग्स (wininet.dll) को भी ध्यान में रखती है; हालाँकि, Microsoft ने winhttp.dll नामक एक अन्य HTTP क्लाइंट लाइब्रेरी जोड़ी है जो कुछ अनुप्रयोगों के लिए छोटी और अधिक उपयुक्त है।
* urlmon.dll में आयोजित URL मोनिकर सेवा, जो URL को हल करने के लिए एप्लिकेशन को कॉम (COM) ऑब्जेक्ट प्रदान करती है। एप्लिकेशन अन्य लोगों द्वारा उपयोग किए जाने के लिए अपने स्वयं के URL हैंडलर भी प्रदान कर सकते हैं।
* बहु-भाषा और अंतर्राष्ट्रीय पाठ समर्थन (mlang.dll) की सहायता के लिए एक पुस्तकालय।
* एचटीटीपी क्लाइंट लाइब्रेरी जो सिस्टम-वाइड प्रॉक्सी सेटिंग्स (wininet.dll) को भी ध्यान में रखती है; हालाँकि, Microsoft ने winhttp.dll नामक एक अन्य HTTP क्लाइंट लाइब्रेरी को जोड़ा है जो कुछ अनुप्रयोगों के लिए छोटा और अधिक उपयुक्त है।
* डायरेक्टएक्स ट्रांसफॉर्म, छवि फ़िल्टर घटकों का एक सेट।
* बहु-भाषा और अंतर्राष्ट्रीय पाठ समर्थन (mlang.dll) के साथ सहायता करने के लिए पुस्तकालय।
* XML समर्थन (MSXML घटक, <samp>msxml*.dll</samp> में रखे जाते हैं)।
* डायरेक्टएक्स ट्रांसफ़ॉर्म, इमेज फ़िल्टर घटकों का एक सेट।
* XML समर्थन (एमएसएक्सएमएल घटक, msxml*.dll में रखा गया है)।
* विंडोज एड्रेस बुक्स तक पहुंच।
* विंडोज एड्रेस बुक्स तक पहुंच।


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


इसके अलावा, [[विंडोज 95]] OSR2 के बाद से प्रत्येक विंडोज संस्करण के हिस्से के रूप में, माइक्रोसॉफ्ट ने [[डायरेक्टएक्स]] एपीआई प्रदान किया है - ग्राफिक्स और गेमिंग सेवाओं का एक शिथिल संबंधित सेट, जिसमें शामिल हैं:
क्लासिक विंडोज मल्टीमीडिया एपीआई को winmm.dll में रखा गया है और इसमें ध्वनि फ़ाइलों को चलाने, मिडी संदेश भेजने और प्राप्त करने, जॉयस्टिक्स तक पहुंचने और विंडोज के तथाकथित एमसीआई सबसिस्टम की अन्य सभी सुविधाओं को सुविधाजनक बनाने के लिए कार्य सम्मिलित हैं, जो उपलब्ध मल्टीमीडिया एक्सटेंशन से उत्पन्न होता है। विंडोज 3.0 के लिए अलग से और विंडोज 3.1 के बाद से ऑपरेटिंग सिस्टम के अभिन्न अंग के रूप में, जिस समय वे mmsystem.dll में स्थित थे।
* हार्डवेयर-त्वरित 2D वेक्टर ग्राफिक्स के लिए [[Direct2D]]।
* हार्डवेयर-त्वरित 3डी ग्राफिक्स के लिए [[Direct3D]]।
* निम्न-स्तरीय हार्डवेयर-त्वरित साउंड कार्ड एक्सेस के लिए [[सीधी आवाज]]।
* जॉयस्टिक और गेमपैड जैसे इनपुट उपकरणों के साथ संचार के लिए [[DirectInput]]।
* मल्टीप्लेयर गेमिंग इंफ्रास्ट्रक्चर के रूप में [[डायरेक्टप्ले]]। इस घटक को DirectX 9 के रूप में बहिष्कृत कर दिया गया है, और Microsoft अब गेम के विकास के लिए इसके उपयोग की अनुशंसा नहीं करता है।
* पिछले DirectX संस्करणों में 2D ग्राफ़िक्स के लिए [[DirectDraw]], अब हटा दिया गया है और Direct2D के साथ बदल दिया गया है।
* विंडोज 3.x संस्करणों के लिए लिखे गए 16-बिट गेम में 2डी ग्राफिक्स के लिए विनजी। विंडोज 95 रिलीज के साथ पदावनत।


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


=== प्रोग्राम इंटरेक्शन ===
* [[Direct2D]] हार्डवेयर-त्वरित 2D वेक्टर ग्राफिक्स के लिए।
विंडोज एपीआई ज्यादातर [[ऑपरेटिंग सिस्टम]] और एक एप्लिकेशन के बीच बातचीत के लिए डिज़ाइन किया गया है। विभिन्न विंडोज़ अनुप्रयोगों के बीच संचार के लिए, माइक्रोसॉफ्ट ने मुख्य विंडोज़ एपीआई के साथ-साथ प्रौद्योगिकियों की एक श्रृंखला विकसित की है। यह [[डायनेमिक डेटा एक्सचेंज]] (DDE) के साथ शुरू हुआ, जिसे [[जोडकर परनिगरानी और उद्देश् य]] (OLE) और बाद में कंपोनेंट ऑब्जेक्ट मॉडल (COM), OLE ऑटोमेशन, [[एक्टिवेक्स]] कंट्रोल और .NET फ्रेमवर्क द्वारा प्रतिस्थापित किया गया था। इन तकनीकों के बीच हमेशा स्पष्ट अंतर नहीं होता है, और बहुत अधिक ओवरलैप होता है।
* [[Direct3D]] हार्डवेयर-त्वरित 3D ग्राफ़िक्स के लिए।
* निम्न-स्तरीय हार्डवेयर-त्वरित साउंड कार्ड एक्सेस के लिए डायरेक्टसाउंड।
* जॉयस्टिक और गेमपैड जैसे इनपुट उपकरणों के साथ संचार के लिए डायरेक्ट इनपुट ([[DirectInput]])
* डायरेक्टप्ले एक मल्टीप्लेयर गेमिंग इंफ्रास्ट्रक्चर है। इस घटक को डायरेक्टएक्स 9 के रूप में बहिष्कृत कर दिया गया है, और Microsoft अब गेम के विकास के लिए इसके उपयोग की अनुशंसा नहीं करता है।
* पहले के डायरेक्टएक्स संस्करणों में 2D ग्राफ़िक्स के लिए डायरेक्टड्रा ([[DirectDraw]]) को अब हटा दिया गया है और Direct2D के साथ बदल दिया गया है।
* विंडोज़ 3.एक्स संस्करणों के लिए लिखे गए 16-बिट गेम में 2D ग्राफ़िक्स के लिए विनजी (WinG)। विंडोज 95 रिलीज के साथ पदावनत।


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


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


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


उदाहरण के लिए, एक शुरुआत सी प्रोग्रामर अक्सर सरल हैलो वर्ल्ड को अपने पहले असाइनमेंट के रूप में लिखेंगे। कार्यक्रम का कामकाजी हिस्सा मुख्य सबरूटीन के भीतर केवल एक प्रिंटफ लाइन है। मानक 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>
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 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>


=={{anchor|Win16|Win32|Win32c|Win32s|Win64|WinCE}}संस्करण ==
माइक्रोसॉफ्ट ने [[पश्च संगतता]] बनाए रखने का प्रयास किया है। इसे प्राप्त करने के लिए, विंडोज़ के नए संस्करणों को विकसित करते समय, माइक्रोसॉफ्ट ने कभी-कभी वर्कअराउंड<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>
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"/>


* 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 (विंडोज़ 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|WoW64]] के माध्यम से 32-बिट एप्लिकेशन चलाने में सक्षम हैं। ओएस (OS) ड्राइव पर विंडोज फोल्डर में स्थित सिसवाउ64 फ़ोल्डर में 32-बिट अनुप्रयोगों का समर्थन करने के लिए कई उपकरण हैं।{{Citation needed|date= January 2016}}
* 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 के पक्ष में छोड़ दिया गया था।
==संस्करण ==
* Win32s विंडोज 3.1x#विंडोज 3.1 | माइक्रोसॉफ्ट विंडोज के विंडोज 3.1x परिवार के लिए एक एक्सटेंशन है जिसने इन सिस्टमों के लिए Win32 एपीआई का एक [[सबसेट]] लागू किया है। एस सबसेट के लिए खड़ा है।
माइक्रोसॉफ्ट विंडोज के लगभग हर नए संस्करण ने विंडोज एपीआई में अपने स्वयं के परिवर्धन और परिवर्तन पेश किए हैं।<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" />
* 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>
 
* WinCE, [[Windows CE]] ऑपरेटिंग सिस्टम के लिए Windows API का कार्यान्वयन है।
* '''विन16 (Win16)''' माइक्रोसॉफ्ट विंडोज के पहले, [[16-बिट कंप्यूटिंग|16-बिट]] संस्करणों के लिए एपीआई है। इन्हें प्रारम्भ में केवल विंडोज एपीआई के रूप में संदर्भित किया गया था, लेकिन बाद में उन्हें विंडोज एपीआई के नए, 32-बिट संस्करण से अलग करने के प्रयास में विन 16 का नाम बदल दिया गया। विन16 API के कार्य मुख्य रूप से OS की कोर फाइलों में रहते हैं: kernel.exe (या krnl286.exe या krnl386.exe), user.exe और gdi.exe। एक्सई के फ़ाइल एक्सटेंशन के बावजूद, ये वास्तव में डायनेमिक-लिंक लाइब्रेरी हैं।
*'''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 के Windows 3.1x परिवार के लिए एक विस्तार है जिसने इन प्रणालियों के लिए Win32 API का सबसेट लागू किया है। "एस" "[[सबसेट]]" के लिए खड़ा है।
*'''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]
*विनसीई विंडोज सीई ([[Windows CE]]) ऑपरेटिंग सिस्टम के लिए विंडोज एपीआई का कार्यान्वयन है।


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


[[विंडोज इंटरफ़ेस स्रोत पर्यावरण]] (WISE) माइक्रोसॉफ्ट का एक लाइसेंसिंग प्रोग्राम था, जिसने डेवलपर्स को यूनिक्स और [[मैकिनटोश]] प्लेटफॉर्म पर विंडोज-आधारित एप्लिकेशन को फिर से कंपाइल और चलाने की अनुमति दी थी। WISE SDKs Windows API के एक एमुलेटर पर आधारित थे जो उन प्लेटफॉर्म पर चल सकते थे।<ref>[http://hyper.sunjapan.com.cn/~hz/win32/wise.htm WISE] {{webarchive|url=https://web.archive.org/web/20080330032918/http://hyper.sunjapan.com.cn/~hz/win32/wise.htm |date=2008-03-30 }}</ref>
[[विंडोज इंटरफ़ेस स्रोत पर्यावरण|विंडोज इंटरफेस सोर्स एनवायरनमेंट]] (वाइज) माइक्रोसॉफ्ट का लाइसेंसिंग प्रोग्राम था, जो डेवलपर्स को यूनिक्स और [[मैकिनटोश]] प्लेटफॉर्म पर विंडोज-आधारित एप्लिकेशन को फिर से कंपाइल और चलाने की अनुमति देता था। वाइज एसडीके विंडोज एपीआई के एक इम्यूलेटर पर आधारित थे जो उन प्लेटफॉर्म पर चल सकते थे।<ref>[http://hyper.sunjapan.com.cn/~hz/win32/wise.htm WISE] {{webarchive|url=https://web.archive.org/web/20080330032918/http://hyper.sunjapan.com.cn/~hz/win32/wise.htm |date=2008-03-30 }}</ref>  
मानकीकरण के प्रयासों में Win16 के लिए सन का [[सार्वजनिक विंडोज इंटरफ़ेस]] (PWI) शामिल है (यह भी देखें: सन विंडोज एप्लीकेशन बाइनरी इंटरफेस (Wabi (सॉफ्टवेयर))), Win16 और Win32 के लिए विलो सॉफ्टवेयर का [[विंडोज के लिए एप्लीकेशन प्रोग्रामिंग इंटरफेस]]APIW) के लिए (यह भी देखें: [[Willows TWIN]]) ), और [[ECMA-234]], जिसने Windows API को बाध्यकारी रूप से मानकीकृत करने का प्रयास किया।


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


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


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


{{As of|2016}}, [[MinGW]] और [[Cygwin]] प्रोजेक्ट भी [[जीएनयू संकलक संग्रह]] (GCC) पर आधारित एक ऐसा वातावरण प्रदान करते हैं, जो Win32-विशिष्ट DLL के विरुद्ध लिंकिंग को सरल बनाने के लिए स्टैंड-अलोन हेडर फ़ाइल सेट का उपयोग करता है। [[LCC-Win32]] जैकब नविया द्वारा अनुरक्षित एक C संकलक है, जो गैर-व्यावसायिक उपयोग के लिए [[फ्रीवेयर]] है। [[Pelles C]], Pelle Orinius द्वारा अनुरक्षित एक फ्रीवेयर C संकलक है। [[फ़्री पास्कल]] एक [[मुफ्त सॉफ्टवेयर]] [[वस्तु पास्कल]] कंपाइलर है जो विंडोज एपीआई को सपोर्ट करता है। MASM32 पैकेज एक परिपक्व परियोजना है जो प्लेटफ़ॉर्म SDK से कस्टम मेड या परिवर्तित हेडर और लाइब्रेरी का उपयोग करके Microsoft मैक्रो असेंबलर (MASM) के तहत Windows API के लिए समर्थन प्रदान करता है। फ्लैट असेंबलर [[FASM]] लिनक्स पर चलने पर भी बाहरी लिंकर का उपयोग किए बिना विंडोज प्रोग्राम बनाने की अनुमति देता है।
अनुप्रयोगों के कुछ वर्गों के लिए, कंपाइलर सिस्टम को [[इंटरफ़ेस विवरण भाषा]] (आईडीएल) फ़ाइलों को संभालने में भी सक्षम होना चाहिए। सामूहिक रूप से, ये पूर्वापेक्षाएँ (संकलक, उपकरण, पुस्तकालय और शीर्षलेख) माइक्रोसॉफ्ट प्लेटफ़ॉर्म एसडीके के रूप में जानी जाती हैं। एक समय के लिए, माइक्रोसॉफ्ट [[विजुअल स्टूडियो]] और बोरलैंड की एकीकृत विकास प्रणाली एकमात्र एकीकृत विकास वातावरण (आईडीईस) थी जो इसे प्रदान कर सकती थी (हालाँकि, एसडीके पूरे आईडीई सूट से अलग से डाउनलोड करने योग्य है,माइक्रोसॉफ्ट विंडोज एसडीके से विंडोज़ 7 और .NET फ्रेमवर्क 4) ( [http://www. microsoft.com/download/en/details.aspx?displaylang=en&id=8279 विंडोज 7 और .NET फ्रेमवर्क 4 के लिए माइक्रोसॉफ्ट विंडोज एसडीके])।।


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


== यह भी देखें ==
== यह भी देखें ==
Line 105: Line 106:
* [[इंटरिक्स]]
* [[इंटरिक्स]]
* लिनक्स कर्नेल एपीआई
* लिनक्स कर्नेल एपीआई
* [[Microsoft Windows लाइब्रेरी फ़ाइलें]]
* [[Microsoft Windows लाइब्रेरी फ़ाइलें|माइक्रोसॉफ्ट विंडोज लाइब्रेरी फ़ाइलें]]  
* [[विंडोज विरासत ऑडियो घटक]]
*[[विंडोज विरासत ऑडियो घटक|विंडोज लिगेसी ऑडियो कंपोनेंट्स]]
* C++/WinRT, एक लाइब्रेरी जो [[विंडोज रनटाइम]] तक पहुंच प्रदान करती है
* C++/WinRT, लाइब्रेरी जो [[विंडोज रनटाइम]] तक पहुंच प्रदान करती है


==टिप्पणियाँ==
==टिप्पणियाँ==
{{Notelist}}
{{Notelist}}
==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}
==इस पेज में लापता आंतरिक लिंक की सूची==
*सी (प्रोग्रामिंग भाषा)
*कोडांतरक (कम्प्यूटिंग)
*धागा (कंप्यूटर विज्ञान)
*विंडोज 95 ओएसआर2
*विंग
*डेल्फी (प्रोग्रामिंग भाषा)
*ओएलई स्वचालन
*कक्षा (कंप्यूटर विज्ञान)
*विंडोज एनटी ऑपरेटिंग सिस्टम लाइन का आर्किटेक्चर
*सूचक (कंप्यूटर प्रोग्रामिंग)
*संकेतक अंकगणित
*UNIX- जैसे
*एचएक्स टू एक्सटेंडर
*अनुकूलता परत
*वाबी (सॉफ्टवेयर)
*समन्वित विकास पर्यावरण
*माइक्रोसॉफ्ट प्लेटफार्म एसडीके
*माइक्रोसॉफ्ट मैक्रो असेंबलर
*एक्सेप्शन हेंडलिंग
==बाहरी संबंध==
==बाहरी संबंध==
{{wikibooks|Windows Programming}}
{{wikibooks|Windows Programming}}
Line 150: Line 125:
{{Widget toolkits}}
{{Widget toolkits}}


{{DEFAULTSORT:Windows Api}}[[Category: विंडोज़ एपीआई| ]]
{{DEFAULTSORT:Windows Api}}
[[Category: माइक्रोसॉफ्ट एप्लीकेशन प्रोग्रामिंग इंटरफेस]]
[[Category: उदाहरण सी कोड वाले लेख]]
 


[[Category: Machine Translated Page]]
[[Category:All articles needing additional references|Windows Api]]
[[Category:Created On 16/12/2022]]
[[Category:All articles with unsourced statements|Windows Api]]
[[Category:Articles needing additional references from January 2016|Windows Api]]
[[Category:Articles with invalid date parameter in template|Windows Api]]
[[Category:Articles with short description|Windows Api]]
[[Category:Articles with unsourced statements from January 2016|Windows Api]]
[[Category:CS1 English-language sources (en)|Windows Api]]
[[Category:CS1 français-language sources (fr)|Windows Api]]
[[Category:CS1 maint|Windows Api]]
[[Category:CS1 Ελληνικά-language sources (el)|Windows Api]]
[[Category:Citation Style 1 templates|W]]
[[Category:Collapse templates|Windows Api]]
[[Category:Created On 16/12/2022|Windows Api]]
[[Category:Lua-based templates|Windows Api]]
[[Category:Machine Translated Page|Windows Api]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Windows Api]]
[[Category:Pages with script errors|Windows Api]]
[[Category:Short description with empty Wikidata description|Windows Api]]
[[Category:Sidebars with styles needing conversion|Windows Api]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Windows Api]]
[[Category:Templates based on the Citation/CS1 Lua module|Windows Api]]
[[Category:Templates generating COinS|Cite web]]
[[Category:Templates generating microformats|Windows Api]]
[[Category:Templates that add a tracking category|Windows Api]]
[[Category:Templates that are not mobile friendly|Windows Api]]
[[Category:Templates that generate short descriptions|Windows Api]]
[[Category:Templates used by AutoWikiBrowser|Cite web]]
[[Category:Templates using TemplateData|Windows Api]]
[[Category:Webarchive template wayback links|Windows Api]]
[[Category:Wikipedia fully protected templates|Cite web]]
[[Category:Wikipedia metatemplates|Windows Api]]
[[Category:उदाहरण सी कोड वाले लेख|Windows Api]]
[[Category:माइक्रोसॉफ्ट एप्लीकेशन प्रोग्रामिंग इंटरफेस|Windows Api]]
[[Category:विंडोज़ एपीआई| ]]

Latest revision as of 12:52, 4 September 2023

विंडोज एपीआई, अनौपचारिक रूप से विनएपीआई, माइक्रोसॉफ़्ट विंडोज़ ऑपरेटिंग सिस्टम में उपलब्ध एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई) का माइक्रोसॉफ्ट का कोर सेट है। विंडोज एपीआई, नाम सामूहिक रूप से कई अलग-अलग प्लेटफ़ॉर्म कार्यान्वयनों को संदर्भित करता है जिन्हें प्रायः अपने स्वयं के नामों से संदर्भित किया जाता है (उदाहरण के लिए, विन 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 फ्रेमवर्क और जावा, इसी तरह विंडोज के तहत कोई भी अन्य प्रोग्रामिंग लैंग्वेज, रैपर लाइब्रेरी हैं (या सम्मिलित हैं)।

इतिहास

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

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

विंडोज इंटरफेस सोर्स एनवायरनमेंट (वाइज) माइक्रोसॉफ्ट का लाइसेंसिंग प्रोग्राम था, जो डेवलपर्स को यूनिक्स और मैकिनटोश प्लेटफॉर्म पर विंडोज-आधारित एप्लिकेशन को फिर से कंपाइल और चलाने की अनुमति देता था। वाइज एसडीके विंडोज एपीआई के एक इम्यूलेटर पर आधारित थे जो उन प्लेटफॉर्म पर चल सकते थे।[24]

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

कंपाइलर सपोर्ट

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

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

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

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

स्ट्रक्चर्ड एक्सेप्शन हैंडलिंग (एसईएच) के लिए विंडोज-स्पेसिफिक कंपाइलर सपोर्ट की भी जरूरत होती है। यह सिस्टम दो उद्देश्यों को पूरा करता है: यह सब्सट्रेट प्रदान करता है जिस पर भाषा-विशिष्ट अपवाद हैंडलिंग को लागू किया जा सकता है, और यह है कि कैसे कर्नेल असाधारण स्थितियों के अनुप्रयोगों को सूचित करता है जैसे कि अमान्य सूचक या ढेर अतिप्रवाह को संदर्भित करना। माइक्रोसॉफ्ट/बोरलैंड 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

बाहरी संबंध