Шаг 69.
Библиотека OWL.
Особенности применения DLL
На этом шаге мы перечислим особенности использования DLL.
Как видите, создание простой DLL совсем несложно. Однако при составлении ваших собственных DLL вы должны помнить
о некоторых особенностях:
- В отличие от программы, которая имеет свой собственный сегмент кода, сегмент данных и сегмент стеков,
DLL может иметь только свои собственные сегмент кода и сегмент данных. DLL использует стек
вызывающей программы, что приводит к условию DS != SS.
- Все функции в DLL должны быть описаны как far ("удаленные"), также far должны быть
все указатели, передаваемые в и получаемые из DLL.
- У DLL отсутствует цикл обработки сообщений, и поэтому они не получают сообщений от окна.
Однако DLL может вызвать функции GetMessage() или PeekMessage() для проверки
сообщений, адресованных программе, которая вызвала эту DLL.
- Статические данные в DLL доступны для любой программы, которая ее вызывает.
- В DLL вы можете пользоваться модульными диалоговыми окнами. При создании диалогового окна
используйте дескриптор экземпляра DLL и присвойте родительскому окну диалогового окна значение NULL.
- В пределах DLL вы можете регистрировать и создавать окна. Однако сообщения для этих окон
посылаются экземпляру вызывающей программы, а не DLL.
- Обычный код начальной загрузки, который добавляется в Windows-программу в процессе компоновки,
к DLL не добавляется. Это означает, что вы не можете пользоваться функциями getenv() или putenv() в DLL.
- DLL может выделить глобальную память для экземпляра программы, который вызывал эту библиотеку.
Выделенная память освобождается, когда завершается выполнение экземпляра программы.
- DLL может загружать ресурсы как из своего собственного файла, так и из файла экземпляра вызывающей
программы. Файл, из которого загружаются ресурсы, зависит от дескриптора экземпляра, используемого функцией,
загружающей ресурсы.
На следующем шаге мы рассмотрим процесс динамической компоновки.
Предыдущий шаг
Содержание
Следующий шаг