Программное обеспечение

Что такое "библиотека DLL отладчика уровня ядра"?

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

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

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

Другое отличие модулей от DLL состоит в том, что модули мо-
гут экспортировать типы, константы, данные и объекты, а DLL -
только процедуры и функции.

Чтобы ее можно было использовать в программе Borland Pascal,
DLL не обязательно должна быть написана на Borland Pascal. Кроме
того, программы, написанные на других языках, могут использовать
DLL, написанные на Borland Pascal. DLL, таким образом, идеально
подходит при программных проектах, реализуемых на нескольких язы-
ках.

Использование DLL

Чтобы модуль мог использовать процедуру или функцию в DLL,
он должен импортировать процедуру или функцию с помощью описания
external. Например, в следующем описании из DLL и именем KERNEL
(ядро Windows) импортируется функция с именем GlobalAlloc:

function GlobalAlloc(Glags: Word; Bytes: Longint): THandle;
far; external 'KERNEL' index 15;

В импортируемой процедуре или функции директива external за-
нимает место описательной и операторной части, которые нужно было
бы включить в противном случае. В импортируемых процедурах и
функциях должна использоваться дальняя модель вызова, выбранная
ключевым словом far или директивой компилятора {$F+}; во всем ос-
тальном их поведение не отличается от обычных процедур и функций.

Borland Pascal импортирует процедуры и функции тремя спосо-
бами:

- по имени;
- по новому имени;
- по порядковому номеру.

Формат директив external для каждого из трех методов показан
в приведенном ниже примере.

Когда оператор index или name не указан, процедура или функ-
ция экспортируются по имени. Это имя совпадает с идентификатором
процедуры или функции. В данном примере процедура ImportByName
импортируется из библиотеки 'TESTLIB' по имени 'IMPORTBYNAME':

procedure ImportByName; external 'TESTLIB';

Когда задан оператор name, процедура или функция импортиру-
ется под именем, отличным от имени идентификатора. В следующем
примере процедура ImportByName импортируется из библиотеки
'TESTLIB' по имени 'REALNAME':

procedure ImportByName; external 'TESTLIB'name 'REALNAME'

Наконец, при наличии оператор index процедура или функция
импортируется по порядковому значению. Такой вид импорта уменьша-
ет время загрузки модуля,
Юрий Ягафаров
Юрий Ягафаров
13 826
Лучший ответ
Это специальный файл, в котором хранятся описания функций, необходимых для отладки кода ядра операционной системы.
Решил с помощью WindowFix эту проблему.

Похожие вопросы