Jump to content

Windows API

(Перенаправлен с Win32 )

Windows API
Разработчик (ы) Microsoft
Первоначальный выпуск 20 ноября 1985 г .; 38 лет назад ( 1985-11-20 )
Операционная система Microsoft Windows , OS/2
Предшественник Два API
Тип API
Лицензия Запатентованный
Веб -сайт https://learn.microsoft.com/en-us/windows/apps/

Windows API , неформально Winapi , является основополагающим интерфейсом программирования приложений (API) , который позволяет компьютерной программе получить доступ к функциям Microsoft Windows операционной системы , в которой работает программа.

Каждая крупная версия Windows API имеет отчетливое имя, которое идентифицирует аспект совместимости этой версии. Например, Win32 является основной версией Windows API, которая работает в 32-битных системах. Название, Windows API, в совокупности относится ко всем версиям этой возможности Windows.

Microsoft предоставляет поддержку разработчиков через комплект разработки программного обеспечения Microsoft Windows SDK , который включает документацию и инструменты для создания программного обеспечения на основе API Windows.

Функции, предоставленные API Windows, могут быть сгруппированы в восемь категорий: [ 1 ]

Базовые услуги
Предоставляет доступ к основным ресурсам, доступным для системы Windows. Включены такие вещи, как файловые системы , устройства , процессы , потоки и обработка ошибок . Эти функции находятся в kernel.exe , Krnl286.exe или Krnl386.exe файлы на 16-битные Windows и kernel32.dll и kernelbase.dll В 32 и 64 -разрядные окна. Эти файлы находятся в папке \ Windows \ System32 На всех версиях Windows. [ 2 ]
Продвинутые услуги
Обеспечивает доступ к функциям за пределами ядра. Включены такие вещи, как реестр Windows , выключение/перезапуск системы (или прервать), запуск/остановка/создание службы Windows , управление учетными записями пользователей. Эти функции находятся в Advapi32.dll и Advapires32.dll на 32-битных окнах.
Интерфейс графического устройства
Предоставляет функции для вывода графического контента для мониторов , принтеров и других выходных устройств . Он находится в gdi.exe на 16-битных окнах и GDI32.dll В 32-битных Windows в пользовательском режиме. Поддержка GDI-режима ядра предоставляется win32k.sys который связывается напрямую с графическим драйвером. [ 3 ] [ 4 ]
Пользовательский интерфейс
Предоставляет функции для создания и управления окнами экрана и основных элементов управления, таких как кнопки и полосы прокрутки , получение ввода мыши и клавиатуры и других функций, связанных с частью графического пользовательского интерфейса (GUI) части Windows. Эта функциональная единица находится в user.exe на 16-битных окнах и user32.dll на 32-битных окнах. Поскольку версии Windows XP , основные элементы управления находятся в comctl32.dll , вместе с общими элементами управления (библиотека общего управления). [ 5 ]
Библиотека общего диалогового окна
Предоставляет приложения стандартные диалоговые окна для открытия и сохранения файлов, выбора цвета и шрифта и т. Д. Библиотека находится в файле, вызываемом Commdlg.dll на 16-битных окнах и comdlg32.dll на 32-битных окнах. Он сгруппирован в категории пользовательского интерфейса API. [ 6 ]
Библиотека общего контроля
Предоставляет приложения доступ к некоторым расширенным элементам управления, предоставляемых операционной системой. К ним относятся такие вещи, как панели состояния , панели хода , панели инструментов и вкладки . Библиотека проживает в библиотеки динамической линии (DLL) файле commctrl.dll на 16-битных окнах и comctl32.dll на 32-битных окнах. Он сгруппирован в категории пользовательского интерфейса API. [ 7 ]
Windows Shell
Компонент Windows API позволяет приложениям получать доступ к функциям, предоставленным оболочкой операционной системы , а также изменять и улучшить его. Компонент находится в Shell.dll на 16-битных окнах и Shell32.dll на 32-битных окнах. Легкие функции утилиты оболочки находятся в Shalwapi.dll Полем Он сгруппирован в категории пользовательского интерфейса API. [ 8 ] [ 9 ]
Сетевые сервисы
Дайте доступ к различным сетевым способностям операционной системы. Его подкомпоненты включают NetBios , Winsock , NetDDE , удаленную процедуру вызов (RPC) и многие другие. Этот компонент находится в NetApi32.dll на 32-битных окнах. [ 10 ]
Веб -
Веб -браузер Internet Explorer (IE) также открывает множество API, которые часто используются приложениями, и как таковые можно считать частью API Windows. IE была включена в операционную систему со времен Windows 95 OSR2 и предоставил услуги, связанные с веб-сайтами, со времен Windows 98 . [ 11 ] В частности, он используется для обеспечения:
  • Встраиваемое управление веб -браузером, содержащимся в shdocvw.dll и mshhtml.dll .
  • Служба прозвища URL, проходившая в urlmon.dll , который предоставляет объекты COM для приложений для разрешения URL -адресов. Приложения также могут предоставлять свои собственные обработчики URL для других.
  • Клиентская библиотека HTTP, которая также учитывает настройки прокси по всей системе (wininet.dll); Тем не менее, Microsoft добавила еще одну клиентскую библиотеку HTTP под названием Winhttp.dll, которая меньше и более подходит для некоторых приложений.
  • Библиотека для помощи многоязычной и международной текстовой поддержке (mlang.dll).
  • Transforms DirectX, набор компонентов фильтра изображения.
  • Поддержка XML (компоненты MSXML, удерживаемые в msxml*.dll ).
  • Доступ к адресным книгам Windows.

Программное взаимодействие

[ редактировать ]

API Windows определяется на языке программирования C. [ 12 ] Его функции и структуры данных определяются в синтаксисе C (см. Windows.H ). Тем не менее, API может использоваться через любой язык программирования, который может взаимодействовать со структурами данных API и вызовами соглашений для вызовов функций и обратных вызовов .

Следует отметить, что внутренняя реализация функций API была разработана на нескольких языках, отличных от C. [ А ]

Несмотря на то, что C не является объектно-ориентированным языком программирования (OOP), API Windows несколько объектно ориентирован из-за использования ручек. Различные другие технологии от Microsoft и других делают этот объектно-ориентированный аспект более очевидным, используя язык ООП, такой как C ++-см. Библиотеку классов Microsoft Foundation (MFC), библиотека визуальных компонентов (VCL), GDI+ . Следует отметить, что Windows 8 предоставляет API Windows и Winrt API, который реализован в C ++ [ 13 ] и ориентирован на объект по дизайну. [ 13 ]

Windows.PAS - это блок Pascal / Delphi , который разоблачает функции Windows API. Это паскаль, эквивалентный языковым окнам C. [ 14 ]

API Windows по большей части предназначен для программы для доступа к функциям операционной системы . Для связи между различными приложениями Windows Microsoft разработала ряд технологий наряду с Windows API. Это началось с динамического обмена данными (DDE), который был заменен связыванием объектов и внедрением (OLE), а затем и моделью компонента объекта (COM), объектами автоматизации , элементами управления ActiveX и структурой .NET . Не всегда есть четкое различие между этими технологиями, и есть много совпадения.

Разнообразие терминов в основном является результатом группировки программных механизмов, которые связаны с данным аспектом разработки программного обеспечения. Автоматизация конкретно относится к экспорту функции приложения или компонента (как интерфейс прикладного программирования (API)), чтобы его можно было управлять другими приложениями, а не человеческими пользователями, .NET-это самостоятельная общая методология и технология для Разработка настольных и веб-приложений, написанных на различных скомпилированных языках (JIT).

[ редактировать ]

Многие Microsoft Technologies используют API Windows - как и большинство программного обеспечения, работающего в Windows. Поскольку средняя площадка между Windows API и приложением, эти технологии обеспечивают некоторый доступ к Windows API. Некоторые технологии описываются как API обертывания Windows, но это спорно, поскольку ни одна другая технология не предоставляет и не раскрывает все возможности Windows API.

Хотя почти все программы Windows используют API Windows, в линейке операционных систем Windows NT, программы, которые начинаются в начале процесса запуска Windows, используют вместо этого натуральный API . [ 15 ]

API Windows всегда выявляла большую часть базовой структуры систем Windows программистам. Это имело преимущество в том, что они дали им большую гибкость и власть над их приложениями, но также создают большую ответственность за то, как приложения обрабатывают различные низкоуровневые, иногда утомительные операции, которые связаны с графическим интерфейсом пользователя .

Например, начальный программист C часто пишет простой «Hello World» в качестве первого задания. Рабочая часть программы представляет собой лишь одну линию печати в основной подпрограмме. Накладные расходы для ссылки на стандартную библиотеку ввода/вывода также составляют только одну строку:

#include <stdio.h>

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

Чарльз Петцольд , который написал несколько книг о программировании для API Windows, сказал: «Оригинальная программа Hello World в Windows 1.0 SDK была чем -то вроде скандала. Hello.c был около 150 строк, и сценарий ресурса hello.rc Было еще 20 или около того линий. [ 16 ] Петцольд объясняет, что, хотя это были первые разработчики программ Windows, это было довольно «причудливым» и сложнее, чем это было необходимо. Устал от людей, высмеивающих длину образца, он в конечном итоге уменьшил его до простого вызова Messagebox. [ 17 ]

За прошедшие годы были внесены различные изменения и дополнения в Windows Systems, и API Windows изменился и рос, чтобы отразить это. [ 18 ] API Windows для Windows 1.0 поддерживал менее 450 вызовов функций , тогда как современные версии API Windows поддерживают тысячи. Однако, в целом, интерфейс оставался довольно последовательным, и старое приложение Windows 1.0 все равно будет выглядеть знакомым программисту, который используется для современного API Windows. [ 19 ]

Microsoft приложила усилия для поддержания обратной совместимости . Чтобы достичь этого, при разработке новых версий Windows, Microsoft иногда внедряла обходные пути [ 20 ] Чтобы позволить совместимость с сторонним программным обеспечением, которое использовало предыдущую версию незарегистрированным или даже невыразимым способом. Раймонд Чен , разработчик Microsoft, который работает в API Windows, сказал: «Я, вероятно, мог бы писать в течение нескольких месяцев только о плохих вещах и о том, что мы должны были сделать, чтобы заставить их снова работать (часто несмотря на себя). Что). Что мы должны были сделать, чтобы они снова работали (часто несмотря на себя). Что). Что мы должны были сделать, чтобы они снова работали (часто, несмотря на себя). Что). Что мы должны были сделать, чтобы снова работать (часто, несмотря на себя). Что). Что мы должны были сделать, чтобы снова работать (часто, несмотря на себя). Что мы должны были сделать. Я становлюсь особенно в ярости, когда люди обвиняют Microsoft в злонамеренных приложениях во время обновления ОС. [ 21 ]

Одним из самых больших изменений в API Windows был переход от Win16 (отправлен в Windows 3.1 и старше) в Win32 (Windows NT и Windows 95 и выше). В то время как Win32 был первоначально введен с Windows NT 3.1 , а Win32s позволил использовать подмножество Win32 перед Windows 95, только в Windows 95 началось широкое перенос приложений в Win32. Чтобы облегчить переход, в Windows 95, для разработчиков вне и внутри Microsoft была использована сложная схема API Thunks , которая может позволить 32-разрядному коду вызвать 16-битный код (для большинства API WIN16) и наоборот. Плоские толчки позволили 32-разрядному коду вызову в 16-битные библиотеки, и схема широко использовалась в библиотеках Windows 95, чтобы избежать переноса всей ОС в Win32 в одну партию. В Windows NT ОС была чистой 32-разрядной, за исключением части совместимости с 16-битными приложениями, и только общие толчки были доступны для Thunk от Win16 до Win32, как для Windows 95. Код, необходимый для этих толчков. Версии 64-бит Windows также способны запускать 32-разрядные приложения через WOW64 . Папка Syswow64, расположенная в папке Windows на приводе ОС, содержит несколько инструментов для поддержки 32-разрядных приложений. [ 22 ]

Основные версии

[ редактировать ]

Каждая версия Microsoft Windows содержит версию Windows API, и почти каждая новая версия Microsoft Windows представила дополнения и изменения в API Windows. [ 23 ]

Название, Windows API, относится к по существу одинаковой возможности в каждой версии Windows, но есть другое название для этой возможности, которая основана на основных архитектурных аспектах версии Windows, которая ее содержит. Когда была только одна версия, ее просто называли Windows API. Затем, когда было сделано первое крупное обновление, Microsoft дала ему имя Win32 и дала первой версии имя Win16. Термин Windows API относится как к как версии, так и впоследствии разработал основные версии. [ 1 ]

Другие реализации

[ редактировать ]
Reactos -это бесплатная операционная система с открытым исходным кодом , целью которой является реализация Windows API

Винный и программами , Win32 проект обеспечивает слой совместимости для платформ , похожих на UNIX , между API Linux ядра написанными для API Windows. Reactos идет еще дальше и стремится реализовать полную операционную систему Windows, тесно сотрудничая с винным проектом для продвижения повторного использования кода и совместимости. DOSWIN32 и HX DOS Extender - это другие проекты, которые эмулируют API Windows, позволяющие выполнять простые программы Windows из командной строки DOS . Один -это проект по эмуляции Win32 на OS/2 , заменяя оригинальную эмуляцию Win-OS/2, которая была основана на коде Microsoft. Другие незначительные реализации включают библиотеки Mewel и Zinc , которые были предназначены для реализации подмножества API WIN16 на DOS (см. Список платформных библиотек GUI ).

Среда исходной среды интерфейса Windows (WISE) была программой лицензирования от Microsoft, которая позволила разработчикам перекомпилировать и запускать приложения на основе Windows на платформах UNIX и Macintosh . Мудрые SDK были основаны на эмуляторе API Windows, который мог работать на этих платформах. [ 27 ]

Sun Усилия в отношении стандартизации включали общественный интерфейс Windows (PWI) для Win16 (см. Также: двоичный интерфейс приложения Sun Windows ( WABI APIW )), интерфейс программного обеспечения Willows Software для Windows ) для Win16 и Win32 (также см ( . ECMA-234 , который попытался стандартизировать привязанную API Windows.

Поддержка компилятора

[ редактировать ]

Для разработки программного обеспечения, которое использует API Windows, компилятор должен иметь возможность использовать DLL, специфичные для Microsoft, перечисленные выше (com-объекты находятся за пределами Win32 и предполагать определенный макет VTable). Компилятор должен либо обрабатывать файлы заголовков, которые обнажают имена функций интерьера API, либо подавать такие файлы.

Для языка C ++ Zortech (позже Symantec , затем Digital Mars ), Watcom и Borland выпустили хорошо известные коммерческие компиляторы, которые часто использовались с Win16, Win32S и Win32. Некоторые из них предоставили расширителям памяти , что позволило программам Win32 работать на Win16 с перераспределимым Microsoft Win32S DLL. Компилятор Zortech, вероятно, был одним из первых стабильных и удобных компиляторов C ++ для программирования Windows, прежде чем Microsoft имел компилятор C ++.

Для определенных классов приложений система компилятора также должна иметь возможность обрабатывать языка языка (IDL) интерфейса файлы (IDL). В совокупности эти предпосылки (компиляторы, инструменты, библиотеки и заголовки) известны как SDK Microsoft Platform . Некоторое время, интегрированная система разработки Microsoft Visual Studio и Borland были единственными интегрированными средами разработки (IDE), которые могли бы предоставить это (хотя SDK можно загрузить бесплатно отдельно от всего пакета IDE, от Microsoft Windows SDK для Windows 7 и .NET Framework 4 ).

По состоянию на 2016 год Проекты Mingw и Cygwin также предоставляют такую ​​среду, основанную на коллекции компиляторов GNU (GCC), используя автономный набор файлов заголовка, для того, чтобы упростить связь с DLLS, специфичными для WIN32. LCC-WIN32 -это компилятор C, который поддерживает Jacob Navia, бесплатное программное обеспечение для некоммерческого использования. Pelles C - бесплатный компилятор C, поддерживаемый Пеллом Ориньюсом. Free Pascal - это бесплатный программный объект Pascal Compiler, который поддерживает API Windows. Пакет MASM32 представляет собой зрелый проект, обеспечивающий поддержку API Windows под макрософтом Microsoft (MASC), используя пользовательские или преобразованные заголовки и библиотеки с платформы SDK. Flat Assembler FASM позволяет создавать программы Windows без использования внешнего линкера, даже при запуске на Linux.

Поддержка компилятора Windows также необходима для обработки исключений (SEH). Эта система служит двум целям: она предоставляет подложку, в какой языковой обработке исключений может быть реализована обработка исключений , и это то, как ядро ​​уведомляет приложения о исключительных условиях, таких как остановка неверного указателя или переполнения стека. Компиляторы Microsoft/Borland C ++ имели возможность использовать эту систему, как только она была введена в Windows 95 и NT, однако фактическая реализация была незарегистрирована и должна была быть обратно разработана для винного проекта и бесплатных компиляторов. SEH основан на толкании кадров обработчика исключений в стек, а затем добавляет их в связанный список, хранящийся в резьбе-локальном хранилище (первое поле блока среды потока). Когда исключение брошено, библиотеки ядра и базовые библиотеки раскручивают стек, используя обработчики и фильтры, когда они встречаются. В конце концов, каждое исключение, не которое, не связанное с приложением, будет рассмотрено по умолчанию обработчика Backstop, который всплывает в диалоговом окне Common Crash Windows.

Смотрите также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ И Паскаля и сборка X86 широко использовались в более ранних версиях, прежде чем C стал доминирующим. Напоминание об этом заключается в том, что функции API по -прежнему используют Конвенцию о вызове Паскаля , чтобы восстановить стек из подтолковых параметров после вызова (хотя они ожидают, что параметры, выдвинутые слева влево, как это делают большинство компиляторов C, по умолчанию).
  2. ^ Номенклатура выпущенных 64-битных версий включает в себя Windows XP Professional X64 Edition и X64 Editions of Windows Server 2003, Windows Vista и Windows Server 2008 на платформе x86-64 (AMD64) и Windows 2000 Limited Edition , Windows XP 64-бит. Edition , Windows Advanced Server 2003 для Itanium и Windows 2008 Advanced Server для Itanium на платформе IA-64 .
  1. ^ Jump up to: а беременный Microsoft Developer Network (июль 2005 г.). Обзор API Windows. Получено 28 августа 2005 г.
  2. ^ Microsoft Developer Network (июль 2005 г.). Базовые услуги. Получено 28 августа 2005 г.
  3. ^ Microsoft Developer Network (июль 2005 г.). Интерфейс графического устройства. Получено 28 августа 2005 г.
  4. ^ "G" . Microsoft Developer Network . Получено 28 января 2009 г.
  5. ^ Microsoft Developer Network (июль 2005 г.). Пользовательский интерфейс. Получено 28 августа 2005 г.
  6. ^ Microsoft Developer Network (2005). Библиотека общего диалогового окна. Получено 22 сентября 2005 г.
  7. ^ Microsoft Developer Network (июль 2005 г.). Библиотека общего контроля. Получено 28 августа 2005 г.
  8. ^ Microsoft Developer Network (июль 2005 г.). Windows Shell. Получено 28 августа 2005 г.
  9. ^ Microsoft Developer Network (2005). Руководство программиста Shell. Получено 28 августа 2005 г.
  10. ^ Microsoft Developer Network (июль 2005 г.). Сетевые сервисы. Получено 28 августа 2005 г.
  11. ^ Microsoft Developer Network (январь 2006 г.); Программирование и повторное использование браузера, полученного 22 января 2006 года.
  12. ^ «Прохождение: создайте традиционное настольное приложение Windows (C ++)» . Microsoft Docs . 23 февраля 2022 года.
  13. ^ Jump up to: а беременный Mayberry, Michael (2012). Винрт рассказал . Нью -Йорк: Апресс. п. 3. ISBN  978-1-4302-4585-8 .
  14. ^ Texeira, Steve и Xavier Pacheco (2002). Борланд Дельфи 6 Руководство разработчика . Саму п. 253. ISBN  0672321157 .
  15. ^ РУССИНОВИЧ, Марк (ноябрь 2006 г.). «Внутри местных приложений» . Microsoft Docs . Получено 12 апреля 2022 года .
  16. ^ Чарльз Петцольд (декабрь 2001 г.). Программирование Microsoft Windows с C# . Microsoft Press. За пределами консоли, стр. 47.
  17. ^ Петзольд, Чарльз. «Печальные окна« Hello World » . www.charlespetzold.com . Получено 30 июня 2024 года .
  18. ^ Подробный анализ изменений в API Windows с XP до 10. Получено 8 сентября 2016 года.
  19. ^ Чарльз Петзольд (11 ноября 1998 г.). Программирование Windows, пятое издание . Microsoft Press. API и модели памяти, стр. 9.
  20. ^ Смит, Грэм (8 октября 2022 г.). «У Windows 95 был специальный код, просто чтобы исправить ошибку в оригинальной Simcity» . Рок, бумага, дробовик .
  21. ^ Раймонд Чен (15 октября 2003 г.). А как насчет Bozoslivehere и TabtheTextOutForWimps? Получено 29 июня 2022 года.
  22. ^ Хоффман, Крис. «В чем разница между папками« System32 »и« Syswow64 »в Windows?» Полем Как делать гик . Получено 11 апреля 2023 года .
  23. ^ Проект ISERAN (1996–2001). История Windows API. Получено 7 октября 2005 года.
  24. ^ "Windows XP Professional X64 Edition Home Page" . Microsoft.
  25. ^ "Microsoft 64-битный обзор вычислений" . Microsoft.
  26. ^ «MSDN: Готовимся к 64-битным окнам» . Microsoft.
  27. ^ Мудрый архив 2008-03-30 на машине Wayback
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 44a4bf3feeb76f1a6a17f899f48adbb7__1722799020
URL1:https://arc.ask3.ru/arc/aa/44/b7/44a4bf3feeb76f1a6a17f899f48adbb7.html
Заголовок, (Title) документа по адресу, URL1:
Windows API - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)