Библиотеки динамической компоновки
DLL-библиотека WIN32 состоит из одной специальной функции DLLEntryPoint и произвольного набора функций, выполняющих ту работу, для которой разрабатывалась данная библиотека. В заголовке загрузочного модуля DLL-библиотеки должны быть описаны экспортируемые точки входа, соответствующие всем или некоторым определенным в ней функциям. Приложения могут вызывать только те функции DLL-библиотеки, которые экспортируются ей. Неэкспортируемые библиотекой функции могут использоваться как вспомогательные только внутри библиотеки. Функция DLLEntryPoint вызывается каждый раз, когда выполняется инициализация процесса или потока, обращающихся к функциям библиотеки, при завершении этих процессов и потоков, а также при явной загрузке и выгрузке библиотеки функциями LoadLibrary и FreeLibrary. Эта функция создается программистом и служит обычно для выполнения некоторых предварительных операций необходимых для инициализации библиотеки (например, выделение блока памяти для его дальнейшего использования функциями библиотеки), а также выполнения операций, необходимых перед выгрузкой библиотеки (например, освобождение ранее выделенного блока). Функция DLLEntryPoint имеет следующий прототип:
BOOL WINAPI DllEntryPoint(
HINSTANCE hinstDLL, // идентификатор модуля библиотеки DLL
DWORD fdwReason, // причина вызова функции
LPVOID lpvReserved // резерв );
Второй параметр, передаваемый этой функции может принимать следующие значения:
- DLL_PROCESS_ATTACH – библиотека загружена в результате запуска процесса, требующего библиотеку, или в результате вызова функции LoadLibrary;
- DLL_THREAD_ATTACH – процесс, использующий библиотеку создал новый поток;
предыдущаяследующая