Windows - статьи

       

Ntdll.dll


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

Функции библиотек подсистемы окружения Win32 необходимо разделить на две группы. К первой относятся функции, не требующие перехода в режим ядра, т. е. полностью реализованные в соответствующей DLL (GetCurrentProcess). Вторая группа функций - функции, требующие вызова к Ntdll.dll и как следствие переключения в режим ядра (WriteFile).

В режиме ядра также работают USER и GDI (подсистемы, реализующие GUI-интерфейс). Но в отличие от библиотек Kernel32.dll и Advapi32.dll, библиотеки User32.dll и Gdi32.dll транслируют свои вызовы в драйвер режима ядра Win32k.sys, который также является частью подсистемы Win32.



Содержание раздела