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


Как NDIS обнаруживает неактивные сетевые адаптеры

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

  • NDIS отслеживает вызовы функций обработчика ввода-вывода, которые драйвер мини-порта регистрирует с помощью NDIS_MINIPORT_DRIVER_CHARACTERISTICS и NDIS_MINIPORT_PNP_CHARACTERISTICS структур. Например, NDIS отслеживает вызовы miniportSendNetBufferLists или MiniportReturnNetBufferLists для определения того, участвует ли драйвер в какой-либо операции ввода-вывода пакета.

  • NDIS также отслеживает вызовы NdisOidRequest и NdisDirectOidRequest , выполненные драйверами протоколов overlying.

    Примечание NDIS отслеживает только те запросы идентификаторов объектов (OID) к базовому драйверу мини-порта, которые не обрабатываются напрямую NDIS.

NDIS определяет, что сетевой адаптер находится в режиме бездействия, если он не обнаруживает никаких действий в адаптере в течение периода простоя. Продолжительность этого периода ожидания определяется значением стандартизованного INF-ключевое слово *SSIdleTimeout. Дополнительные сведения об этом ключевое слово см. в разделе Стандартизированные ключевые слова INF для выборочной приостановки NDIS.

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

NDIS начинает эту выборочную операцию приостановки с отправки уведомления о бездействии драйверу мини-порта. Для этого NDIS вызывается функция обработчика MiniportIdleNotification драйвера. Дополнительные сведения о том, как драйвер минипорта обрабатывает это уведомление, см. в разделе Обработка уведомления о выборочной приостановке простоя NDIS.

Если NDIS обнаруживает, что запросы ввода-вывода к сетевому адаптеру выдаются из наложения драйверов или адаптер сигнализирует о событии пробуждения, NDIS отменяет уведомление о простое. Для этого NDIS вызывает функцию обработчика MiniportCancelIdleNotification драйвера miniport.

Дополнительные сведения о том, как NDIS отменяет уведомление о простое, см. в разделе Отмена уведомления о выборочной приостановке простоя NDIS.

Дополнительные сведения о том, как драйвер мини-порта завершает уведомление о простое, см. в разделе Завершение уведомления о выборочной приостановке простоя NDIS.