Точки входа библиотеки DLL

Точки входа библиотеки DLL

Для каждой создаваемой DLL вы можете указать точку входа запуска библиотеки, которая обычно автоматически вызывается при каждом подключении или отключении процесса. В то же время, в функции LoadLibraryEx предусмотрена опция, позволяющая подавить вызов точки входа. В случае неявно связываемых (связываемых во время выполнения) библиотек DLL подключение и отключение процесса происходит, соответственно, при его запуске и завершении. В случае же явно связываемых DLL это осуществляется при вызове функций LoadLibrary, LoadLibraryEx и FreeLibrary. 

Кроме того, точка входа вызывается всякий раз, когда процесс создает новый поток (глава 7) или прекращает его выполнение.

Точкой входа с именем DllMain, прототип которой приводится ниже, мы воспользуемся в полной мере только в главе 12 (программа 12.4), где она предоставит потокам удобный способ управления ресурсами и так называемыми локальными областями хранения потоков (Thread Local Storage, SLT) в DLL с многопоточной поддержкой. 

BOOL DllMain(HINSTANCE hDll, DWORD Reason, LPVOID Reserved) 

Параметр hDll является дескриптором экземпляра DLL, возвращенным функцией LoadLibrary. Значение NULL параметра Reserved указывает на то, что подключение процесса к библиотеке произошло в результате вызова функции Load-Library; иные значения этого параметра свидетельствуют о подключении к библиотеке в результате неявного связывания во время загрузки. Подобным образом, к значению NULL параметра Reserved приводит и отключение процесса от библиотеки в результате вызова функции FreeLibrary.

Параметр Reason может иметь одно из четырех значений: DLL_PROCESS_ATTACH, DLL_THREAD_ATTACH, DLL_THREAD_DETACH и DLL_PROCESS_DETACH. Функции точки входа DLL обычно используют операторы switch и в качестве индикатора успешного выполнения возвращают значение TRUE.

Система сериализует вызовы DllMain таким образом, что в каждый момент времени выполнять ее может только один поток (к подробному обсуждению потоков мы приступим в главе 7). Эта сериализация весьма существенна, поскольку операции инициализации, которые должна выполнять DllMain, не должны прерываться до их завершения. По этой же причине внутри точки входа не рекомендуется использовать блокирующие вызовы функций, например, функций ввода/вывода или функций ожидания (см. главу 8), поскольку они будут препятствовать запуску точки входа другими потоками. В частности, не следует вызывать внутри точки входа DLL функции LoadLibrary и LoadLibraryEx, поскольку это будет порождать дополнительные вызовы точек входа DLL.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Список пользователей окна входа в систему

Из книги Тонкости реестра Windows Vista. Трюки и эффекты автора Клименко Роман Александрович

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


Настройки входа в систему

Из книги Windows Vista без напряга автора Жвалевский Андрей Валентинович

Настройки входа в систему Большинство настроек входа в систему хранится в параметрах ветви реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem.• VerboseStatus – если значение данного параметра REG_DWORD-типа равно 1, то при входе пользователя в систему (и при завершении работы) будут


Варианты входа в Сеть

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Варианты входа в Сеть Сегодня существует множество способов подключения к Интернету. Для этого используют следующие средства связи.• Модем – специальное устройство, которое подключается к телефонной розетке; этот доступ еще называется коммутируемым или dial-up.•


Сценарии входа для всех локальных пользователей

Из книги Инфраструктуры открытых ключей автора Полянская Ольга Юрьевна

Сценарии входа для всех локальных пользователей Сценарии входа групповой политики подключаются в разделе Конфигурация пользователя|Конфигурация Windows|Сценарии (вход/выход из системы) (User Configuration|Windows Configuration|Scripts (Logon/Logoff)). В этом разделе нужно выбрать свойство Вход в


Сценарий входа для одного пользователя 

Из книги Добавьте в корзину. Ключевые принципы повышения конверсии веб-сайтов автора Айзенберг Джеффри

Сценарий входа для одного пользователя  Сценарии входа для отдельных пользователей назначаются с помощью оснастки Локальные пользователи и группы (Local users and groups). Замечание  В Windows NT для этого использовался Диспетчер пользователей (User Manager for Domain). Для добавления этой


Примеры сценариев входа/выхода 

Из книги Самоучитель работы на Macintosh автора Скрылина Софья

Примеры сценариев входа/выхода  Ниже рассмотрены несколько сценариев (два из которых являются обычными командными файлами), которые можно использовать в качестве сценариев входа или


Дополнения точек входа в САС

Из книги Windows Vista. Трюки и эффекты автора Зозуля Юрий

Дополнения точек входа в САС Международный Союз по телекоммуникациям ввел несколько дополнений точек входа в САС X.509 v2 [78]. Они связывают с точками входа в САС некоторые дополнительные атрибуты. Каждое дополнение может быть помечено как критичное или некритичное.


Точка входа в воронку продаж

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

Точка входа в воронку продаж Точками входа являются страницы сайта, позволяющие пользователю включиться в процесс покупки. Иными словами, точка входа – это дверь (или несколько дверей) в дом, выставленный на продажу. Здесь вы уже можете управлять процессом убеждения и


1.10.2. Настройки входа в систему

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

1.10.2. Настройки входа в систему Настройка параметров входа в систему происходит в окне мини-утилиты Учетные записи (Accounts), вызов которой осуществляется из окна Системные настройки (System Preferences). Прежде чем перейти к настройкам, необходимо произвести щелчок мышью на значке


2.1. Выбор способа входа в систему

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

2.1. Выбор способа входа в систему Для начала работы в Windows Vista нужно выполнить вход в систему с использованием одной из имеющихся в системе учетных записей. По умолчанию для этого используется экран приветствия, где отображаются названия всех учетных записей и их значки


3.9. Экран входа в систему. Изменение темы GDM

Из книги UNIX — универсальная среда программирования автора Пайк Роб

3.9. Экран входа в систему. Изменение темы GDM При установке Ubuntu вам предлагалось выбрать возможность автоматического входа пользователя в систему. Если вы почему-то этого не сделали, и вам надоело каждый раз вводить свой пароль, выберите конфигуратор Система |


Новый диалог входа пользователя в систему

Из книги Linux Mint и его Cinnamon. Очерки применителя автора Федорчук Алексей Викторович

Новый диалог входа пользователя в систему В Windows XP появился новый диалог для входа пользователя в систему, применяемый по умолчанию. Если раньше в операционной системе Windows 2000 вас встречало компактное окно для ввода имени пользователя и пароля, то теперь вас ждет красиво


24.2. Изменение фона страницы входа в систему

Из книги автора

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


Окно входа в систему

Из книги автора

Окно входа в систему Строго говоря этот модуль тоже не часть среды Cinnamon, а является инструментом настройки дисплейного менеджера MDM (изначально аббревиатура Mint Display Manager, ныне превратившаяся в рекурсивное MDM Display Manager), обеспечивающего во всех редакциях дистрибутива Mint