Порядок загрузки драйверов

Тема в разделе "WASM.WIN32", создана пользователем cresta, 21 янв 2006.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Порядок загрузки в общем случае определяется параметром start в соответствующем ключе ветки "CurrentControlSet/Services" реестра.

    А как можно определить, в каком порядке будут запущены драйвера, если параметр start одинаков для нескольких драйверов, например 0х3
     
  2. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Это не то чтобы порядок загрузки. Этот параметр очень общо определяет лишь в какой фазе загрузки системы нужно грузить драйвер. Точный порядок загрузки драйверов определить невозможно. А влиять на него можно с помощью помещения драйвера в определенную группу Load Order Group. В пределах группы порядок задается с помощью числового тега Tag. Также можно сделать загрузку драйвера зависимой от загрузки других груп Depend On Group и/или драйверов Depend On Service.



    Всё это есть в доках. См. описание CreateService и вокруг. На sysinternals.com где-то лежить утиль LoadOrder (или как-то так). Показывает порядок загрузки, но не точно.
     
  3. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Спасибо, сейчас пойду смотреть этот LoadOrder.

    Тут собственно проблема такая: запускаю два драйвера, и мне нужно, чтобы они стартовали рпи загрузке системы как можно раньше, и в определенной последовательности (т.е. первый должен сделать подготовительные шаги для второго, пока тот ещё не стартовал)
     
  4. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    а что если использовать loadimageroutine? это для установления/определения порядка загрузки.
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257


    Это что такое?

    Гугл таких слов не знает.
     
  6. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    cresta

    PsSetLoadImageNotifyRoutine ставит нотифай, до ХР насколько я помню ее убрать невозвожно(легально :))

    в ХР уже есть PsRemoveLoadImageNotifyRoutine для снятия.



    Saint German



    А как сменить порядок ? Она ж выдает калбек когда модуль уже загружаеться ...
     
  7. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    да это мой четров стиль выражаться:)надо так -

    установления(определения) т.е. видя что загружается

    driver1.sys & driver2.sys примерно определяем.
     
  8. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    Saint German

    А то я думал может ты чёт новое придумал :)
     
  9. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    cresta, если нужно чтобы драйвер стартовал при загрузке системы как можно раньше, то его нужно поместить в группу "Boot Bus Extender". При этом он должен быть зарегистрирован как SERVICE_BOOT_START или SERVICE_SYSTEM_START. Тэг можно любой назначить, т.к. для тебя скорее всего всё равно каким номером твой драйвер будет грузится в пределах группы. Только имей ввиду, что в буттайме есть ряд ограничений, т.к. файловая система ещё не смонтирована, доступны не все разделы реестра и т.п.



    А насчет двух драйверов: не проще ли переложить обязанности первого на второй или наоборот ;)



    См. в ДДК "Specifying Driver Load Order".
     
  10. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    Four-F

    Мне так кажется для целей его драйвера, это плохо подходит, это сильно усложнит логику работы его драйвера.