Основные системные DLL'ки

Думаю, для большинства наших читателей не является секретом то, что внутри операционная система Windows состоит из большого количества разнообразных компонентов, многие из которых реализованы в виде DLL-библиотек. Некоторые из них более важны, некоторые - менее. О том, для чего нужны некоторые системные DLL-библиотеки, я сейчас и расскажу.

Говорить будем о 32-битных системах - они пока что всё-таки более распространённые. Хочу сразу предупредить, что мы с вами сейчас не будем рассматривать, как именно устроены внутри системные DLL-библиотеки и чем именно (количественно и качественно) они отличаются от остальных DLL'ек. Как правило, для продвинутого пользователя эти знания имеют не слишком большую практическую ценность, и, кроме того, для того, чтобы подробно рассказать обо всём этом, придётся очень сильно углубляться в дебри работы операционной системы, а это значит, что, скорее всего, при таком раскладе места в статье на сами DLL'ки уже, увы и ах, совершенно не останется.

Системные библиотеки лежат в системной папке - на то они и системные. В старых версиях Windows (9x и ME) они помещались в поддиректории "System" папки с системой, в ОС линейки Windows NT они находятся в папке "System32". Лучше без надобности в эти папки не залезать, но если вы встретите их где-то в другом месте, то лучше сразу их удалить, потому что это, скорее всего, будут какие-нибудь трояны. Даже если это и копии системных библиотек, всё равно при их удалении из несистемных папок ничего плохого не произойдёт.

Для чего же пользователю знать назначение той или иной библиотеки? В самом простом случае - если система выдаст Blue Screen of Death (BSOD), чтобы можно было хотя бы примерно представить, с чем именно он связан. Но на самом деле здесь вопрос не только в сугубо практическом применении таких знаний - лично я считаю, что для того, чтобы быть продвинутым пользователем, просто необходимо знать подобные вещи.

Впрочем, что-то я опять заговорился. Это уже профессиональное :). Давайте уже, наконец, перейдём к нашим DLL'кам.


Hal.dll

Эта DLL - сердце операционной системы. Расшифровывается её название как Hardware Abstraction Layer - уровень аппаратной абстракции. Именно благодаря наличию такого уровня Windows имеет возможность работы на разных аппаратных платформах. В зависимости от того, какая именно аппаратная платформа наличествует на вашем компьютере, вместо hal.dll может присутствовать один из следующих файлов: Halapic.dll, Halmps.dll, Halacpi.dll, Halaacpi.dll, Halmacpi.dll.


Kernel32.dll

Следующая после уровня аппаратной абстракции библиотека из состава ядра операционной системы. О том, что без этой библиотеки работа ядра ОС невозможна, говорит уже само её название. Kernel32.dll отвечает за обработку памяти, операции ввода-вывода и прерывания - то есть, за все основные действия операционной системы с приложениями.


Ntdll.dll

Эта библиотека - своеобразный мост между теми библиотеками, которые работают в ядре операционной системы, и библиотеками, работающими в пользовательском режиме. Эти два режима имеют ряд существенных отличий, и без существования этой DLL'ки было бы невозможно применять многие старые приложения в новых версиях Windows - во многом совместимость между разными версиями ОС держится именно на ней.


Gdi32.dll

Немаловажная часть операционной системы Windows - это графический интерфейс пользователя, который в самых глубоких своих основах зиждется именно на этой DLL-библиотеке. Gdi32.dll предоставляет приложениям и другим библиотекам графические примитивы, которые используются для отрисовки окон и разных оконных элементов управления.


User32.dll, Comctl32.dll, Comdlg32.dll

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


Advapi32.dll

Думаю, понятие системного реестра знакомо каждому читателю "Компьютерных вестей". Вполне естественен тот факт, что ОС Windows предоставляет пользовательским приложениям специальные функции доступа к реестру, которые как раз и вынесены в Advapi32.dll.


Mpr.dll

Работа с сетью - тоже прерогатива операционной системы. Собственно, именно для работы с сетью и нужна mpr.dll. Взаимодействие с другими компьютерами в локальной сети, поддержка работы с сетевыми устройствами, поддержка соединения - вот далеко не полный список того, что ложится на плечи этой библиотеки.


Msvcrt.dll

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

Конечно, обо всех системных DLL'ках в одной заметке не расскажешь, но мы всегда можем продолжить разговор о них, если попросите.

Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by

Версия для печатиВерсия для печати

Номер: 

17 за 2008 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя Андрей Дашкевич
Считаю что стоит продолжить заметку. Когда какой либо комп выдает ошибку связанную с *.dll, то ищу инфу в нете, на поиск толкового ответа уходит время, а так краткий толковый справочник будет ;)
Аватар пользователя ZloVred
В данной статье неправильная информация по поводу двух DLL, а именно hal.dll и kernel32.dll.

Автор пишет про hal.dll: "Эта DLL - сердце операционной системы.". Это утверждение не верно, сердце операционной системы Windows - это ntoskrnl.exe

Так же информация про Kernel32 - это вообще, если честно, чушь. Данная библиотека не следующая после hal.dll и она не входит в состав ядра ОС. Она является часть подсистемы Windows куда помимо нее входят: csrss.exe, user32.dll, gdi32.dll, advapi32.dll. Так же она не занимается обработкой прерываний эта обязанность возложена на hal.dll. Эта библиотека работает в пользовательском режиме, а ядро содержится в файле ntoskrnl.exe (могут быть различные названия в зависимости от системы), так же в месте с ядром данный файл содержит исполнительную систему, которая находится на более высоком уровне чем собственно ядро

Аватар пользователя Вадим Станкевич
Что касается "сердца системы", то тут спорить можно долго. А что касается kernel32.dll, то я брал информацию отсюда: http://securitylab.ru/processinfo/265828.php. Если не сложно, приведите свой источник.
Аватар пользователя Savely
>то я брал информацию отсюда

Хм, стиль изложения уже настораживает. "отвечает за обработку памяти" - хе-хе..

Аватар пользователя ZloVred
Мой источник: Марк Руссинович "Inside Windows 2000, XP"
Аватар пользователя ZloVred
Все таки я утверждаю что сердце системы это ntoskrnl.exe. В hal.dll в основном обеспечивается переносимость между аппаратурой. Теоретически, если бы существовала только одна модель аппаратной архитектуры то и hal.dll не нужно было бы писать
Аватар пользователя Вадим Станкевич
Ваш источник, однако, солиднее:( Сложно с Вами не согласиться.
Аватар пользователя ZloVred
Если надо ету книжечку то можешь найти ее здесь www.infanata.org. Там ток зарегитсо нужно.
Аватар пользователя Вадим Станкевич
Спасибо.