пятница, 15 мая 2015 г.

Вызов dll из драйвера

Dll-библиотека (Dynamic Link Library) - программный модуль, который может быть динамически подключен к выполняющемуся процессу.

Данная статья посвящена именно этому вопросу, а именно - программирование DLL в Borland.

Ну а теперь разберем непосредственно саму библиотеку DLL: Пример 3.

Имена параметров функции или процедуры; Par1Type, Par2Type.

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

При этом сама программа обязательно должна предусматривать наличие таких дополнений и позволять им выполнять свое предназначение.

В качестве типа проекта выберите Win32 Dynamic-Link Library.



DLL name FunctionName ProcedureName - директива, указывающая точное имя функции в самой DLL.

Функция будет определять, присутствует ли в системе необходимый драйвер и попытаться подключиться к нему.

Гораздо лучше - предоставить для него понятный интерфейс API-функций для работы с устройством.

DLL name ProcedureName index ProcIndex; Здесь: FunctionName (либо ProcedureName) - имя функции (или процедуры которое будет использоваться в Вашей программе; Par1, Par2.

Плагины - дополнения к программе, расширяющие ее возможности.

В данном случае за счет большего числа вызовов, через которые проходит запрос на ввод-вывод, снижается быстродействие работы системы.

Dll - библиотека может содержать функции и данные.



Функция будет определять, присутствует ли в системе необходимый драйвер и попытаться подключиться к нему.

Это гораздо более сложный, но и более элегантный метод.

DLL procedure Button1Click(Sender: TObject begin И используем ее ShowMessage(StrPas(GetSimpleText(True ShowMessage(StrPas(GetSimpleText(False ShowMessage - показывает диалоговое окно с указанной надписью; StrPas - преобразует строку PChar в string end; Теперь то же самое, но вторым способом - с динамической загрузкой: Пример 2.

Итак, для начала - общая форма этого приема: implementation.

В качестве примера можно привести библиотеки таких известных пакетов, как: DirectX, icqapi (API для ICQ OpenGL и т.д.

Как было упомянуть выше, в настоящее время для связи с драйвером используется схема Приложение - Библиотека dll - Драйвер.

Замечу лишь, что для загрузки ресурса нужно загрузить DLL, а затем, получив ее дескриптор, - загружать сам ресурс соотвествующей функцией (LoadIcon, LoadCursor, и т.д.).

Гораздо лучше - предоставить для него понятный интерфейс API-функций для работы с устройством.



При его использовании существуют проблемы с разделением памяти.

GetProcAddress (Module: THandle; ProcName: PChar) - считывает адpес экспоpтиpованной библиотечной функции.

DLL - директива, указывающая имя внешней DLL, из которой будет импортирована данная функция или процедура (в данном случае - dllname.

Уже приведенные выше примеры помогут Вам легко разобраться в львиной части программирования DLL.

имена параметров функции или процедуры; Par1Type, Par2Type.

Если это удастся - функция вернет true, в противном случае - false.

Dll-библиотека (Dynamic Link Library) - программный модуль, который может быть динамически подключен к выполняющемуся процессу.


Комментариев нет:

Отправить комментарий