Программирование драйверов Windows


Подсистема Win32


В качестве основного для Windows 2000/XP/Server 2003 интерфейса API (32-разрядных версий), подсистема Win32 ответственна за:

  • графический пользовательский интерфейс (Graphical User Interface, GUI), который наблюдает пользователь системы. Win32 отвечает за реализацию видимых окон, диалоговых элементов и элементов управления (кнопок, полос прокрутки и т.п.), то есть общий стиль оформления системы.
  • Консольный ввод/вывод, включая клавиатуру, мышь и дисплей для всей операционной системы и других подсистем.
  • Функционирование Win32 API, при помощи которого приложения и другие подсистемы взаимодействуют с исполнительными компонентами режима ядра.

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

  • Функции, которые предоставляются пользователю для управления окнами, меню, диалогами и элементами контроля (кнопками, полосами прокрутки, переключателями, закладками и т.п.).
  • Функции GDI, реализующие прорисовку изображений на физических устройствах, экране, принтере, графопостроителе.
  • Функции, которые управляют неграфическими ресурсами, такими как процессы, программные потоки, файлы и объекты синхронизации. KERNEL-функции тесно связаны с системными службами исполнительных компонентов.

Со времен NT 4.0 большая часть функций первых двух категорий из приведенной выше классификации была реализована в режиме ядра. Пользовательские процессы, которые запрашивают услуги GUI, обращаются непосредственно к коду режима ядра при использовании System Service Interface (Интерфейса Системных Служб). Код, представляющий эти функции и работающие в режиме ядра, локализован в модуле WIN32K.SYS.

Функции третьей категории при обработке запросов от пользовательских процессов опираются на стандартный серверный процесс CSRSS.exe (Client-Server Runtime Subsystem), который и обращается собственно к коду исполнительных компонентов для завершения обработки этих обращений.




Начало  Назад  Вперед