Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Windows содержит большое количество вспомогательных API. Есть отдельные API для работы с электронной почтой (MAPI), модемами (TAPI), базами данных (ODBC). Степень интеграции этих API в системное ядро различна. Например, хотя интерфейс OLE и реализован в виде набора системных динамических библиотек, но рассматривается как часть "ядра" Windows. Остальные API, например, WinSock, можно рассматривать как дополнительные.

Различие между тем, что следует считать "ядром" Windows, а что – дополнительными модулями, довольно произвольно. C точки зрения приложения практически нет разницы между функцией API из ядра, например, из модуля Kernel, и функцией, реализованной в одной из библиотек DLL.

4.1 Функции ядра (модуль Kernel)

Функции ядра обычно делятся на категории: управление файлами, памятью, процессами, потоками и ресурсами. В эти категории попадают далеко не все, а только наиболее часто используемые функции модуля Kernel.

Для доступа к файлам в Windows можно пользоваться обычными потоками Си++ или функциями библиотеки Си. Но функции модуля Kernel имеют больше возможностей. Эти функции работают с файлами как с файловыми объектами. Например, они позволяют создавать файлы, отображаемые в памяти.

В отличие файлового доступа, библиотечных возможностей Си (функция malloc()) или Си++ (оператор new) для большинства приложений оказывается вполне достаточно. В Win32 эти вызовы автоматически преобразуются в соответствующие вызовы Win32 API. Приложения со специфическими требованиями к управлению памятью могут пользоваться более сложными функциями, например, для работы с виртуальной памятью (например, чтобы выделить блок адресного пространства размером несколько сотен мегабайт, но не передавать под него физическую память).

НЕ нашли? Не то? Что вы ищете?

Один из важнейших аспектов в управлении потоками – синхронизация. Т. к. Windows является системой с вытесняющей многозадачностью, то потоки не могут получить никаких сведений о состоянии выполнения других потоков. Чтобы гарантировать, что несколько потоков всегда выполняются в заданном порядке, например, по очереди, и чтобы избежать ситуации блокировки (когда два или более потоков приостанавливаются навсегда), требуется применять один из механизмов синхронизации. В Win32 это делается с помощью объектов синхронизации, которыми потоки пользуются, чтобы проинформировать другие потоки о своем состоянии, для защиты фрагментов кода от повторного вхождения, или для получения информации о других потоках.

В Win32 многие ресурсы ядра (не следует путать их с ресурсами пользовательского интерфейса) представляются в виде объектов ядра. Примерами являются файлы, потоки, процессы, объекты синхронизации. Для обращения к объекту применяются уникальные идентификаторы – дескрипторы (описатели). Некоторые функции предназначены для выполнения действий, общих для всех объектов (например, открытие или закрытие), а другие – для манипуляций с объектами специфического типа.

Модуль Kernel обеспечивает функции для управления ресурсами пользовательского интерфейса. Они включают в себя пиктограммы, курсоры, шаблоны диалогов, строковые ресурсы, битовые карты и др. Функции Kernel не учитывают назначение ресурса. Они обеспечивают выделение памяти для ресурсов, загрузку ресурсов с диска (обычно из исполняемого файла приложения), удаление ресурсов из памяти.

4.2 Функции пользовательского интерфейса (модуль User)

Функции модуля User предназначены для управления компонентами пользовательского интерфейса: окнами, диалогами, меню, курсорами, элементами управления, буфером обмена и др. Эти ресурсы называются объектами модуля User.

В модуле Kernel есть функции для выделения памяти, управления памятью и некоторые другие, необходимые для функционирования окон. Модуль GDI обеспечивает рисование графических примитивов. Но именно модуль User, используя возможности двух других модулей, реализует высокоуровневые компоненты пользовательского интерфейса, например, окно.

Функции управления окнами позволяют изменять размеры окна, его местоположение на экране и внешний вид, заменять оконную процедуру, разрешать и запрещать работу окна, получать информацию о свойствах окна. Эти функции также используются для работы с элементами управления, такими, как кнопки, полосы прокрутки или строки ввода. В модуле User есть функции для управления дочерними окнами программ с многодокументным интерфейсом (MDI).

Перечислим еще несколько групп функций модуля User:

·  работа с меню (создание, отображение, изменение строки меню и выпадающих меню);

·  управление формой и положением указателя мыши и текстового курсора;

·  работа с буфером обмена;

·  управление сообщениями и очередью сообщений потока.

Приложения могут использовать функции User для проверки содержимого очередей сообщений, для получения и обработки сообщений, а также для посылки сообщений каким-либо окнам. Сообщения любому окну можно посылать либо синхронно (функция SendMessage), либо асинхронно (PostMessage). При асинхронной посылке сообщение просто помещается в очередь сообщений потока, который владеет окном-адресатом. В отличие от него, синхронное сообщение передается непосредственно в оконную процедуру окна-адресата. Функция SendMessage возвращает управление только после обработки сообщения окном-адресатом. Этот позволяет приложению-передатчику получить результат обработки перед продолжением выполнения.

4.3 Функции графического вывода (модуль GDI)

Функции модуля GDI (Graphics Device Interface, интерфейс графических устройств) обеспечивают рисование графических примитивов аппаратно-независимым образом. Для абстракции от конкретного устройства применяется понятие контекст устройства. Это системный объект, обеспечивающий интерфейс с конкретным графическим устройством. С помощью контекста можно выполнять графический вывод на устройство или получать информацию о его свойствах (имя устройства, разрешение, цветовые возможности и др.).

При рисовании примитивов (отрезков, прямоугольников, эллипсов, текста и т. п.) функциям рисования передается дескриптор контекста устройства. Контекст устройства преобразует общие, независимые от устройства, графические команды в набор команд конкретного устройства. Например, когда приложение вызывает из GDI функцию Ellipse, то сначала контекст устройства определяет, какой драйвер будет выполнять это действие. Затем драйвер устройства может передать вызов аппаратному ускорителю (если он есть в видеоадаптере) или нарисовать эллипс по точкам.

Контексты устройств GDI представляют широкий спектр устройств. Типичными контекстами являются дисплейный контекст устройства (для выполнения вывода непосредственно на экран компьютера), контекст устройства в памяти (для рисования поверх изображения, хранящегося в оперативной памяти), и принтерный контекст устройства (при выводе в этот контекст вызовы приложения в конечном счете преобразуются в управляющие коды принтера и посылаются на принтер).

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

При рисовании примитивов часто указываются их свойства: цвет, толщина и стиль линии и т. п. Для этого служат объекты GDI: перья, кисти, шрифты, растровые изображения и палитры. Их можно создавать и выбирать в контексте устройства для того, чтобы рисуемые впоследствии примитивы выглядели нужным образом.

Кроме рисования графических примитивов, часто используются функции GDI для бит-блиттинга, предназначенные для быстрого копирования растровых изображений. В некоторых приложениях их скорости недостаточно, т. к. при рисовании эти функции используют контекст устройства в качестве посредника между приложением и устройством. Поэтому для непосредственного обращения к видеосистеме был разработан менее безопасный, но существенно более быстрый набор функций для манипуляций с растровыми изображениями – DirectDraw API.

Модуль GDI обеспечивает работу с регионами (структурами, описывающими экранные области, возможно, непрямоугольные) и выполняет отсечение (clipping). Отсечение – это очень важная операция для среды Windows, т. к. она позволяет приложениям рисовать на экране, не отслеживая границ области рисования (например, границы клиентской области окна). Отсечение применяется для корректного отображения на экране перекрывающихся окон.

4.4 Дополнительные API

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

·  Стандартные элементы управления. Эти функции позволяют работать с элементами управления, появившимися в Windows 95.

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

·  MAPI служит стандартным интерфейсом для доступа к различным программам электронной почты и электронных сообщений.

·  DirectX API. Для некоторых приложений (в особенности, игр) опосредованный доступ к аппаратным устройствам через драйверы Windows оказывается неэффективным. Поэтому Microsoft разработала набор технологий под общим названием DirectX, который ускоряет доступ к аппаратуре. В набор библиотек DirectX входит библиотека DirectDraw для экранных операций, DirectInput для чтения информации с устройств ввода, DirectSound для работы со звуком и Direct3D для построения трехмерных сцен.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32