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

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

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

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

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

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

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

    Для инициализации адаптера минипорта NDIS вызывает функцию MiniportInitializeEx драйвера минипорта. При успешном выполнении miniportInitializeEx адаптер минипорта переходит в состояние Приостановлено.

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

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

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

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

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

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

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

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