Здравствуйте, Aniskin, Вы писали:
O>>А какие нибудь глобальные объекты с конструкторами есть, которые конструируются _до_ dllmain (а по сути — внутри него)? Я с делфями давно дел не имел, не помню как у него с этим.
A>Не понятно, что подразумевается под термином "до dllmain". Как мой код может получить управление до вызова dllmain? В любом случае в dllmain происходит только выделение небольшого количества памяти под список и его заполнение.
На самом деле при загрузке dll-ки производится вызов кода "DllMainImpl", из конторого вызываются конструкторы глобальных объектов и тп. И только потом управление из него передается в DllMain.
Эта DllMainImpl предоставляется рантайм библиотекой твоей среды разработки
Здравствуйте, Aniskin, Вы писали:
M>>На самом деле при загрузке dll-ки производится вызов кода "DllMainImpl"
A>Это специфика сишного рантайма? Гугл по запросу "DllMainImpl" не дает ничего.
Это специфика практически любого рантайма, которому нужно инициализировать глобальные объекты и производить прочие подобные действия. Имя "DllMainImpl" я от балды придумал
Здравствуйте, ononim, Вы писали:
O>Хочу заметить что AV внутри DllMain будет словлено SEH фильром загрузчика и наверх вылезет тот же самый ERROR_DLL_INIT_FAILED
Оно вроде пропагейтит код исключения, то есть будет STATUS_ACCESS_VIOLATION == EXCEPTION_ACCESS_VIOLATION == 0xC000'0005
(так, можно интересный результат получить, бросив SEH-нуль оттуда)
O>>А какие нибудь глобальные объекты с конструкторами есть, которые конструируются _до_ dllmain (а по сути — внутри него)? Я с делфями давно дел не имел, не помню как у него с этим. A>Не понятно, что подразумевается под термином "до dllmain". Как мой код может получить управление до вызова dllmain? В любом случае в dllmain происходит только выделение небольшого количества памяти под список и его заполнение.
Это может быть и не ваш код. Поскрипев мозгами, я вспомнил про unit initialization — так xnj например, все что в секции initialization подключенных модулей в вашем проекте (включая сторонные bpl или как они там нынче зовуться) — будет исполнено внутри dllmain.
Как много веселых ребят, и все делают велосипед...
M>>выложите, желательно так, чтобы ее можно было запустить без танцев. A>Ссылка. В архиве две dll: good.eDecoder.32.dll — в этой dll обе функции из wininet.dll
Ссылка уже не работает. Потому вопрос: а нету ли там в зависимостях какой либо еще длл, которая сама зависит на тот же самый вининет?
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
O>я вспомнил про unit initialization
Это я понимаю. Именно про unit initialization я говорил, когда имел в виду инициализацию своих структур в dllmain. А сама Delphi в реальной dllmain также ничего особенного не делает.
Здравствуйте, ononim, Вы писали:
M>>>выложите, желательно так, чтобы ее можно было запустить без танцев. A>>Ссылка. В архиве две dll: good.eDecoder.32.dll — в этой dll обе функции из wininet.dll
O>Ссылка уже не работает.
Думал, что уже никому не нужно. Перезалил.
Потому вопрос: а нету ли там в зависимостях какой либо еще длл, которая сама зависит на тот же самый вининет?
Я пытался посмотреть на зависимости в DepWalker, но с этими новомодными api-ms-win-*.dll нихрена не понятно.
M>>>>выложите, желательно так, чтобы ее можно было запустить без танцев. A>>>Ссылка. В архиве две dll: good.eDecoder.32.dll — в этой dll обе функции из wininet.dll O>>Ссылка уже не работает. A>Думал, что уже никому не нужно. Перезалил.
Сходу потенциальных проблем найти не удалось.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, EreTIk, Вы писали:
ETI>Если выбор падет на WinDbg
Воспользовался вашим советом и стал ковырять WinDbg. В нем увидел, что падение происходило на загрузке wininet.dll. Но в случае удачных загрузок сразу после загрузки wininet.dll происходила загрузка библиотеки криптопровайдера ViPNet CSP. Я деинсталлировал этот криптопровайдер и проблема исчезла. Честь загрузчика Windows восстановлена. Проблема решена, спасибо всем откликнувшимся.
A>Я деинсталлировал этот криптопровайдер и проблема исчезла. Честь загрузчика Windows восстановлена. Проблема решена, спасибо всем откликнувшимся.
Я тоже както сталкивался с глюками изза какогото криптопровайдера, который зачемто инжектил и хукал все что под руку попадало
Как много веселых ребят, и все делают велосипед...