Аттач к exe-шнику

Тема в разделе "WASM.WIN32", создана пользователем _DEN_, 14 фев 2006.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    alpet







    Не понял? Что означает







    ???
     
  2. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    _DEN_

    Такие странные правила, разве ты не знал? Получается что в DllMain поток создается как-бы приостановленным, и возобновляется только после выхода из нее.



    В аттаче пример кода на Delphi (+ скомпилированный тест). Наблюдая его под отладчиком (Olly), можно заметить что код потока ThreadProc не выполняется во время выполнения DllMain.





    [​IMG] 446014953__demodll.ZIP
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    alpet



    А откуда CreateThread знает что его запустили из DllMain? Чем вобще енвайромент кода DllMain отличается от всего остального кода?

    Вобщем, как говорится, в чем смысл жизни, вселенной и вообще? :)
     
  4. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    _DEN_

    Исходники Windows наверняка могут пролить свет на эту тайну. Наверное изначально программисты реализовавшие данный механизм, не хотели чтобы функция являющаяся обработчиком события DLL_THREAD_ATTACH вызывалась единовременно из двух потоков (сначала обрабатывая например DLL_PROCESS_ATTACH, и немного погодя обрабатывая DLL_THREAD_ATTACH в контексте созданного потока). Иными словами внесена сериализация вызовов DLLMain, дабы прикладному программисту не приходилось париться над синхронизацией.