Динамическое связывание, выполняемое при загрузке
Когда система начинает программу, которая использует выполняемую при загрузке динамическую связь, используется информация помещенная в файл компоновщиком, чтобы определить местонахождение имен DLLs, которые используются процессом. Затем система определяет DLLs. Используемый порядок поиска зависит от значения ключа реестра
HKLM\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode |
Windows 2000/NT, Windows Me/98/95: значение SafeDllSearchMode не существует.
Если SafeDllSearchMode равно 1 (это по умолчанию), порядок поиска происходит как указано ниже:
Если SafeDllSearchMode равно 0, порядок поиска происходит как указано ниже:
Если система не может определить местонахождение требуемой DLL, она завершает работу процесса и показывает на экране диалоговое окно, которое сообщает пользователю об ошибке. В противном случае, система проецирует данные DLL в виртуальное адресное пространство процесса и увеличивает итоговое число ссылок на DLL.
Система вызывает функцию точки входа. Функция получает код, указывающий, что процесс загружает DLL. Если функция точки входа не возвращает значение ИСТИНА (TRUE), система завершает работу процесса и сообщает об ошибке. Дополнительную информацию о функции точки входа, см. в статье Функция точки входа динамически подключаемой библиотеки (DLL).
Наконец, система изменяет таблицу адресов функций стартовыми адресами импортируемых функций DLL.
DLL отображается в виртуальное адресное пространство процесса в ходе его инициализации и загружается в физическую память только тогда, когда это необходимо.