Как узнать, что инициализация suspended процесса прошла успешно

Тема в разделе "WASM.BEGINNERS", создана пользователем DruID, 18 янв 2006.

  1. DruID

    DruID New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2005
    Сообщения:
    20
    Проблема в нестабильности внедрения длл.



    Создаю процесс, через CreateProcess с атрибутом CREATE_SUSPENDED,

    выдерживаю паузу SLEEP,

    без нее часто происходит аварийное завершение

    процесса, он не успевает проинициализироваться, а

    внедрение уже начилось


    далее делаю внедрение длл через CreateRemoteThread,

    потом ResumeThread.



    Чем заменить SLEEP? В API рекомендуеться использовать WaitForInputIdle, но я создаю SUSPENDED процесс и она просто и тупо выжидает заданое время, т.е. работает как SLEEP.
     
  2. Topor

    Topor New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2005
    Сообщения:
    31
    Ну верно рекомендуют: WaitForInputIdle(hProcess, INFINITE).

    Будет ждать пока не закончится инициализация.
     
  3. DruID

    DruID New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2005
    Сообщения:
    20
    Посмотрел MSDN.



    Так вот, если поставить WaitForInputIdle(hProcess, INFINITE), то прога, просто зациклится, WaitForInputIdle будет ожидать окончания инициализации процесса, причем только GUI! А suspended процесс WaitForInputIdle не считает за нормальный процесс, ведь инициализируется лишь главный поток.

    Пробовал WaitForSingleObject тоже не работает.
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    DruID

    рекомендую изучить как работает Armadillo со своим вторым

    процессом