Запуск стека драйверов
После того как система обнаружит сетевое устройство, система запускает стек драйверов NDIS для устройства. Устройство может быть виртуальным или физическим устройством. В любом случае операция запуска стека драйверов выполняется следующим образом:
Система загружает и инициализирует драйверы, если они еще не загружены.
Он не загружает драйверы в определенном порядке.
Система вызывает функцию DriverEntry каждого драйвера.
После того как DriverEntry возвращает:
- Адаптер мини-порта для устройства находится в состоянии Остановлено.
- Модули фильтров находятся в состоянии Отсоединенный.
- Привязка протокола находится в состоянии "Не привязано".
Система запрашивает NDIS для запуска адаптера минипорта.
Для инициализации адаптера минипорта NDIS вызывает функцию MiniportInitializeEx драйвера минипорта. При успешном выполнении miniportInitializeEx адаптер минипорта переходит в состояние Приостановлено.
NDIS присоединяет модули фильтров, начиная с модуля, который находится ближе всего к драйверу мини-порта, и переходит к верхней части стека драйверов.
Чтобы запросить у драйвера подключение модуля фильтра к стеку драйверов, NDIS вызывает функцию FilterAttach драйвера фильтра. При успешном выполнении каждой операции присоединения модуль фильтра переходит в состояние Приостановлено.
Когда все базовые драйверы находятся в состоянии Приостановлено, NDIS вызывает функцию ProtocolBindAdapterEx драйвера протокола.
Затем привязка драйвера протокола переходит в состояние Открытия. Драйвер протокола вызывает функцию NdisOpenAdapterEx , чтобы открыть привязку с помощью адаптера мини-порта.
NDIS выделяет необходимые ресурсы для привязки и вызывает функцию ProtocolOpenAdapterCompleteEx драйвера протокола.
Привязка переходит в состояние Приостановлено.
Чтобы завершить операцию привязки, драйвер протокола вызывает функцию NdisCompleteBindAdapterEx .
NDIS перезапускает стек драйверов. Дополнительные сведения о перезапуске стека драйверов см. в разделе Перезапуск стека драйверов.