Кіріспе
Windows API, немесе бейресми WinAPI, – компьютерлік бағдарламаға, бағдарлама жұмыс істеп жатқан Microsoft Windows операциялық жүйесінің мүмкіндіктеріне қол жеткізуге мүмкіндік беретін негізгі бағдарламалық интерфейс (API). Windows API-нің әрбір маңызды нұсқасының сол нұсқаның үйлесімділік ерекшелігін анықтайтын тағы бір атауы бар. Мысалы, Win32 – бұл 32 биттік жүйелерде жұмыс істейтін Windows API-нің маңызды нұсқасы. «Windows API» деген атау Windows мүмкіндіктерінің барлық нұсқаларын білдіреді. Microsoft, Windows API-ге негізделген бағдарламалық жасақтама құру үшін құжаттама мен құралдарды қамтитын бағдарламалық дамыту жиынтығы, Microsoft Windows SDK арқылы әзірлеушілерге қолдау көрсетеді.
The Windows API, informally WinAPI, is the foundational application programming interface (API) that allows a computer program to access the features of the Microsoft Windows operating system in which the program is running. Each major version of the Windows API has another name that identifies a compatibility aspect of that version. For example, Win32 is the major version of Windows API that runs on 32 bit systems. The name, Windows API, collectively refers to all versions of this capability of Windows. Microsoft provides developer support via a software development kit, Microsoft Windows SDK, which includes documentation and tools for building software based on the Windows API.
Бағдарламаның өзара әрекеттесуі
Windows API C бағдарламалау тілінде анықталған. Оның функциялары мен дерек құрылымдары C синтаксисінде анықталған (windows.h қараңыз). Дегенмен, API дерек құрылымдарымен және функцияларды шақыру мен кері шақыру конвенцияларымен өзара әрекеттесе алатын кез келген бағдарламалау тілі арқылы қолданылуы мүмкін. Маңыздысы, API функцияларының ішкі іске асырылуы C-ден өзге бірнеше тілде жасалған.
C объектіге бағытталған бағдарламалау (OOP) тілі болмаса да, Windows API тұтқаларды пайдалану арқасында белгілі бір деңгейде объектіге бағытталған болып табылады. Microsoft және басқа да компаниялардың әртүрлі технологиялары C++ сияқты OOP тілін қолдану арқылы осы объектіге бағытталған ерекшелікті одан да анық көрсетеді – мысалы, Microsoft Foundation Class Library (MFC), Visual Component Library (VCL), GDI+. Айта кетейік, Windows 8 Windows API және C++ тілінде іске асырылған, жобалау бойынша объектіге бағытталған WinRT API-ді ұсынады. Windows API бағдарламаның операциялық жүйе мүмкіндіктеріне қол жеткізуіне көбінесе арналған. Windows қолданбалары арасындағы байланыс үшін Microsoft Windows API-мен бірге бірқатар технологияларды әзірледі. Бұл Динамикалық дерек алмасу (DDE) арқылы басталды, одан кейін Объектілерді байланыстыру және енгізу (OLE), содан соң Компоненттік объекті модельдері (COM), Автоматтандыру объектілері, ActiveX элементтері және .NET Framework пайда болды. Бұл технологиялардың арасында әрқашан нақты шекара болмайды және олардың арасында көп ортақ нәрсе бар. Терминдердің алуан түрлілігі негізінен бағдарламалық жасақтаманы әзірлеудің белгілі бір аспектісіне қатысты бағдарламалық механизмдерді топтастырудың нәтижесі болып табылады. Автоматтандыру, ең алдымен, қосымшаның немесе компоненттің функционалдығын экспорттаумен байланысты (қолданбалық бағдарламалау интерфейсі (API) ретінде), осылайша оны пайдаланушылар ғана емес, басқа да қосымшалар басқара алады. .NET – бұл әртүрлі уақыттық (JIT) компиляцияланатын тілдерде жазылған десктоп және веб-қосымшаларын әзірлеуге арналған жеке және жалпы әдістеме және технология.
Негізгі нұсқалары
Microsoft Windows-тың әрбір нұсқасында Windows API нұсқасы бар, және Microsoft Windows-тың әрбір жаңа нұсқасы Windows API-ға қосымшалар мен өзгерістер енгізді. Windows API атауы Windows-тың әрбір нұсқасындағы бірдей мүмкіндіктерге сілтеме жасайды, бірақ осы мүмкіндіктің тағы бір атауы бар, ол оны қамтитын Windows нұсқасының маңызды архитектуралық ерекшеліктеріне негізделген. Тек бір нұсқасы болған кезде ол жай ғана Windows API деп аталды. Алғашқы маңызды жаңарту жасалғанда, Microsoft оны Win32 деп атады, ал алғашқы нұсқа Win16 деп аталды. Windows API термині осы екі нұсқаны да және одан кейін дамытылған барлық маңызды нұсқаларды да білдіреді. 32 биттік және 64 биттік қолданбалардың екі нұсқасын да бір код базасынан құрастыруға болады, бірақ кейбір ескі API функциялары қолданыстан шығарылған, ал Win32-де қолданыстан шығарылған кейбір API функциялары жойылды. Барлық жад мекенжай көрсеткіштері әдепкі бойынша 64 биттік болып табылады (LLP64 моделі), сондықтан Win32-ге үйлесімді бастапқы кодты көшіру 64 биттік көрсеткіш арифметикасын жаңартуды қамтиды. WinCE – Windows CE операциялық жүйесіндегі нұсқа.
Басқа іске асырулар
Wine жобасы Linux ядросының API-ы мен Windows API үшін жазылған бағдарламалар арасында Unix сияқты платформалар үшін Win32 API үйлесімділік қабатын қамтамасыз етеді. ReactOS одан да бір қадам алға басып, Windows операциялық жүйесін толыққанды іске асыруға тырысады, кодты қайта пайдалану және үйлесімділікті арттыру үшін Wine жобасымен тығыз байланыста жұмыс істейді. DosWin32 және HX DOS Extender – DOS командалық жолынан қарапайым Windows бағдарламаларын іске қосуға мүмкіндік беретін Windows API-ін эмуляциялайтын басқа да жобалар. Odin – OS/2 жүйесінде Win32-ні эмуляциялайтын жоба, ол Microsoft кодына негізделген бастапқы Win OS/2 эмуляциясын ығыстырды. Басқа шағын іске асыруларға MEWEL және Zinc кітапханалары жатады, олар DOS жүйесінде Win16 API-інің бір бөлігін іске асыруға арналған (платформадан тәуелсіз GUI кітапханаларының тізіміне қараңыз). Windows Interface Source Environment (WISE) – Microsoft компаниясының лицензиялық бағдарламасы, ол әзірлеушілерге Unix және Macintosh платформаларында Windows негізіндегі қосымшаларды қайта құрастыруға және іске қосуға рұқсат берді. WISE SDK-лары аталған платформаларда жұмыс істейтін Windows API эмуляторына негізделген. Стандарттауға жасалған күш-жігерге Sun компаниясының Win16 үшін Public Windows Interface (PWI) (қараңыз: Sun Windows Application Binary Interface (Wabi)), Win16 және Win32 үшін Willows Software компаниясының Windows қолданбалық бағдарламалау интерфейсі (APIW) (қараңыз: Willows TWIN) және Windows API-ін міндетті түрде стандарттауға тырысқан ECMA 234 кірді.
Компиляторды қолдау
Windows API-ді пайдаланатын бағдарламалық жасақтаманы әзірлеу үшін компилятор жоғарыда көрсетілген Microsoft-тың нақты DLL-дерін қолдана білуі керек (COM объектілері Win32-ден тыс және белгілі бір vtable құрылымын қабылдайды). Компилятор ішкі API функциясының атауларын көрсететін бас файлдарды өңдеуі немесе осындай файлдарды беруі керек. C++ тілі үшін Zortech (кейін Symantec, содан кейін Digital Mars), Watcom және Borland барлығы Win16, Win32s және Win32 жиі қолданылатын белгілі коммерциялық компиляторларды шығарды. Олардың кейбіреулері Win32 бағдарламаларын Win16-да Microsoft-тың қайта таратылатын Win32s DLL-мен орындауға мүмкіндік беретін жад кеңейтушілерін ұсынды. Zortech компиляторы, Microsoft-тың C++ компиляторы болмай тұрып, Windows бағдарламалау үшін тұрақты және қолдануға болатын алғашқы C++ компиляторларының бірі болды. Кейбір қосымшалар кластары үшін компилятор жүйесі интерфейсті сипаттау тілі (IDL) файлдарын да өңдеуге қабілетті болуы тиіс. Бұл қажеттіліктердің барлығы (компиляторлар, құралдар, кітапханалар және бас файлдар) Microsoft Platform SDK деп аталады. Бір кездері Microsoft Visual Studio және Borland-тың интеграцияланған даму ортасы (IDE) мұны қамтамасыз ететін жалғыз IDE болды (бірақ SDK-ны бүкіл IDE жиынтығынан бөлек, Windows 7 және NET Framework 4 үшін Microsoft Windows SDK-дан тегін жүктеуге болады). 2016 жылдан бастап MinGW және Cygwin жобалары сондай-ақ Win32-ге тән DLL-ге байланыстыруды жеңілдету үшін дербес бас файл жиынтығын пайдалана отырып, GNU Compiler Collection (GCC) негізінде осындай ортаны ұсынады. LCC Win32 - Джейкоб Навиямен қамтамасыз етілетін C компиляторы, коммерциялық емес пайдалану үшін тегін. Pelles C - Pelle Orinius ұстап тұратын C компиляторы. Free Pascal - Windows API-ді қолдайтын ашық кодты Object Pascal компиляторы. MASM32 пакеті - платформалық SDK-дан арнайы жасалған немесе түрлендірілген бас файлдар мен кітапханаларды пайдалану арқылы Microsoft Macro Assembler (MASM) арқылы Windows API-ге қолдау көрсететін жетілген жоба. Flat assembler FASM Windows бағдарламаларын сыртқы байланыстырушыны пайдаланбай, тіпті Linux жүйесінде де құруға мүмкіндік береді. Windows-қа тән компиляторды қолдау құрылымдық ерекшеліктерді өңдеуге (SEH) де қажет. Бұл жүйе екі мақсатқа қызмет етеді: ол тілге тән ерекшеліктерді басқаруды жүзеге асыруға болатын негізді қамтамасыз етеді және ядроның жарамсыз көрсеткішті дерексіздендіру немесе стек асығу сияқты ерекше жағдайлар туралы қолданбаны хабарлау тәсілі болып табылады. Microsoft/Borland C++ компиляторлары бұл жүйені Windows 95 және NT жүйелерінде енгізілгеннен кейін пайдалануға мүмкіндік алды, бірақ нақты іске асыру құжатталмаған және Wine жобасы мен ашық кодты компиляторлар үшін кері инженерия жасау қажет болды. SEH ерекшеліктерді басқару фреймдерін стекке итеруге, содан кейін оларды желілік жергілікті сақтау (thread environment block-тың бірінші өрісі) сақталған байланысты тізімге қосуға негізделген. Ерекшелік туындағанда, ядро мен базалық кітапханалар стекті басқарушылар мен сүзгілерді кездескенде қайталайды. Соңында, қолданбамен өңделмеген әрбір ерекшелік әдепкі бэкстоп-тұтынушымен шешіледі, ол Windows-тың әдеттегі қате туралы хабарламасын ашады.