Поделиться через


Запуск стека драйверов

После обнаружения сетевого устройства система запускает стек драйверов NDIS для устройства. Устройство может быть виртуальным устройством или физическим устройством. В любом случае операция запуска стека драйверов выполняется следующим образом:

  1. Система загружает и инициализирует драйверы, если они еще не загружены.

    Он не загружает драйверы в определенном порядке.

  2. Система вызывает функцию DriverEntry каждого драйвера.

    После возврата DriverEntry :

    • Минипорт-адаптер для устройства находится в состоянии "Остановлено".
    • Модули фильтра находятся в состоянии "Отсоединенный".
    • Привязка протокола находится в состоянии unbound.
  3. Система запрашивает у NDIS запуск мини-адаптера.

    Чтобы инициализировать минипортный адаптер, NDIS вызывает функцию MiniportInitializeEx драйвера минипортов. Если MiniportInitializeEx выполнен успешно, минипорт-адаптер вводит приостановленное состояние.

  4. NDIS подключает модули фильтра, начиная с модуля, который ближе всего к минипорт-драйверу, и постепенно поднимаясь к верхней части стека драйверов.

    Чтобы запросить драйвер для подключения модуля фильтра к стеку драйверов, NDIS вызывает функцию FilterAttach драйвера фильтра. Если каждая операция подключения выполнена успешно, модуль фильтра вводит приостановленное состояние.

  5. После того как все базовые драйверы находятся в приостановленном состоянии, NDIS вызывает функцию ProtocolBindAdapterEx драйвера протокола.

    Затем привязка драйвера протокола переходит в состояние открытия. Драйвер протокола вызывает функцию NdisOpenAdapterEx , чтобы открыть привязку с мини-адаптером.

  6. NDIS выделяет необходимые ресурсы для привязки и вызывает функцию ProtocolOpenAdapterCompleteEx драйвера протокола.

    Привязка переходит в состояние 'Приостановлено'.

  7. Чтобы завершить операцию привязки, драйвер протокола вызывает функцию NdisCompleteBindAdapterEx .

  8. NDIS перезапускает стек драйверов. Дополнительные сведения о перезапуске стека драйверов см. в разделе "Перезапуск стека драйверов".