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