Необязательный NDIS LWF может вызвать 90-секундную задержку доступности сети.

В этой статье рассматриваются дополнительные упрощенные фильтры NDIS (LWF), которые могут привести к задержке доступности сети на 90 секунд.

Исходная версия продукта: Windows
Исходный номер базы знаний: 2019184

Сводка

Если установлен дополнительный драйвер упрощенного фильтра NDIS (LWF) и драйвер не запущен, сеть будет недоступна в течение 90 секунд.

Дополнительная информация

Драйвер упрощенного фильтра NDIS — это одна из нескольких моделей драйверов для мониторинга и фильтрации сетевых пакетов в Windows. LWF являются новыми в спецификации NDIS 6 (Vista и далее).

NDIS LWF могут быть обязательными драйверами фильтров или необязательными драйверами фильтров. Тип выполнения фильтра указывается в INF-файле драйвера через FilterRunType. Значение FilterRunType 1 является обязательным фильтром, а FilterRunType 2 — необязательным фильтром:

HKR, Ndi,FilterRunType, 0x00010001, 0x00000001 ; MANDATORY filter  

или

HKR, Ndi,FilterRunType, 0x00010001, 0x00000002 ; OPTIONAL filter

Если драйвер LWF установлен, но не запущен, сетевой стек будет недоступен в течение 90 секунд, если выгруженный драйвер фильтра является необязательным фильтром. Стек никогда не станет доступным, если отсутствует драйвер фильтра является обязательным. Этот период времени ожидания заключается в том, чтобы предоставить фильтру возможность загрузки. Запуск стека, его приостановка, а затем перезапуск при загрузке дополнительного фильтра в конечном итоге может привести к другим побочным эффектам для компонентов верхнего уровня, которые следят за доступностью сети.

Как правило, драйверы фильтров запускаются сразу же, как SERVICE_SYSTEM_START путем указания значения StartType 1 (SERVICE_SYSTEM_START) в INF-файле LWF:

StartType = 1 ;SERVICE_SYSTEM_START

Некоторые фильтры, однако, запускаются позже, указав SERVICE_DEMAND_START для параметра StartType значение 3 (SERVICE_DEMAND_START):

StartType = 3 ;SERVICE_DEMAND_START

LWF, использующие DEMAND START, должны быть запущены как можно скорее с помощью какого-либо другого механизма, как правило, из службы или приложения, которое запускает драйвер с помощью API диспетчера управления сеансами (SCM). Это делает, например, собственный Wi-Fi (NWIFI.SYS) LWF. Он запускается службой wlansvc. Таким образом, хотя это SERVICE_DEMAND_START, пользователи не испытывают задержки в доступности сети.

Если драйвер никогда не запускается или запускается медленно, NDIS будет ожидать его регистрации (NdisFRegisterFilterDriver) и подключения к стеку, прежде чем сделать сетевой адаптер доступным до 90-секундного периода ожидания, после чего стек будет запускаться без него, если он является необязательным.