Обновление динамически подключаемой библиотеки (DLL)


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

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

  1. Используйте функцию MoveFileEx, чтобы переименовать DLL, которая была заменена. Не устанавливайте флажок MOVEFILE_COPY_ALLOWED и удостоверьтесь, что переименованный файл включен тот же самый том, который содержит исходный файл. Вы можете также просто переименовать файл в том же самом каталоге, давая ему другое расширение.
  2. Копируете новую DLL в каталог, который содержит переименованную DLL. Все приложения будут теперь использовать новую DLL.
  3. Используйте MoveFileEx с флажком MOVEFILE_DELAY_UNTIL_REBOOT, чтобы удалить переименованную DLL.

Прежде, чем Вы сделаете эту замену, прикладные программы будут использовать первоначальную DLL, до тех пор, пока не она не выгрузится. После того, как Вы сделаете замену, приложения будут использовать новую DLL. Когда Вы записываете DLL, Вы должны быть осторожными, чтобы гарантировать подготовку  этой ситуации, особенно, если DLL обслуживает информацию о глобальном состоянии или связана с другими услугами. Если DLL не готова к изменению информации о глобальном состоянии или в коммуникационных протоколах, обновление DLL потребует, чтобы Вы перезагрузили компьютер, гарантируя этим, что все прикладные программы используют одну и ту же версию DLL.

Windows Me/98/95:  Поскольку MoveFileEx не поддерживается, необходимо перезагрузить компьютер. Дополнительную информацию см. разделе Замечания в описании MoveFileEx.

 

Назад в оглавление
На главную страницу

Hosted by uCoz