Я уже добавил задержку загрузки в свой проект, используя инструкции в
http://msdn.microsoft.com/en-us/library/151kt790.aspx
В "delayhlp.cpp" (пример реализации помощника загрузки DLL) __HrLoadAllImportsForDll
я увидел, что писатель избегает использования каких-либо функций стандартной библиотеки C (MSVCRT). Нужно ли делать то же самое в моей функции-обработчике, которая будет вызываться вспомогательным помощником загрузки DLL?
Я думаю, что причина автора в том, что кто-то может попытаться отложить загрузку MSVCRT. Я не собираюсь этого делать. Будет ли тогда безопасно использовать функции MSVCRT?
Справочная информация. Причина задержки загрузки сторонней библиотеки DLL заключается в том, что между двумя версиями произошла смена сигнатуры функции, и мне нужно запустить мою программу, используя любую версию. Затем я предоставляю простую функцию-обертку, чтобы адаптировать сигнатуру функции DLL к нужной. Эта функция регистрируется обработчиком отложенной загрузки (__pfnDliFailureHook2
), когда GetProcAddress
не удается.
Некоторое тестирование. Я добавил точку останова в начале своей функции обработчика. Я обнаружил, что при достижении точки останова msvcrt.dll
и msvcr90d.dll
и т. Д. Уже загружены (из панели модулей Visual Studio). Значит ли это, что я могу безопасно вызывать функции CRT?