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


Операции проверки зависания и сброса адаптера минипорта

Обзор

Предупреждение

Операции check-for-Hang (CFH) и Reset не рекомендуется использовать для всех драйверов NDIS 6.83 и более поздних версий. Дополнительные сведения см. в разделе Операции check-for-Hang и Reset в NDIS 6.83 и более поздних версий.

NDIS вызывает функцию MiniportCheckForHangEx драйвера минипорта NDIS, чтобы проверка рабочее состояние адаптера NDIS, представляющего сетевой интерфейс карта (NIC). MiniportCheckForHangEx проверяет внутреннее состояние адаптера и возвращает значение TRUE , если обнаруживает, что адаптер работает неправильно.

По умолчанию NDIS вызывает MiniportCheckForHangEx примерно каждые 2 секунды. Если MiniportCheckForHangEx возвращает значение TRUE, NDIS вызывает функцию MiniportResetEx драйвера минипорта NDIS. Если значение времени ожидания по умолчанию ( 2 секунды) слишком мало, драйвер мини-порта может задать другое значение во время инициализации следующим образом:

  1. Задайте для элемента CheckForHangTimeInSeconds структуры NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES ненулевое значение.
  2. Передайте структуру NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES в параметре MiniportAttributes функции NdisMSetMiniportAttributes .

Дополнительные сведения о настройке атрибутов драйвера см. в разделе Инициализация адаптера. Значение CheckForHangTimeInSeconds должно быть больше времени инициализации драйвера мини-порта. Однако если для инициализации драйвера требуется больше времени, чем в секундах CheckForHangTimeInSeconds , это время ожидания истекает, в результате чего NDIS вызывает функцию MiniportCheckForHangEx вашего драйвера. Если MiniportCheckForHangEx возвращает значение TRUE, NDIS вызовет функцию MiniportResetEx вашего драйвера. По этой причине следует синхронизировать функцию MiniportCheckForHangEx драйвера с инициализацией драйвера, чтобы miniportCheckForHangEx не возвращал значение TRUE , если драйвер не завершил инициализацию.

Если драйвер минипорта не выполняет запрос OID в течение двух последовательных вызовов MiniportCheckForHangEx, NDIS может вызвать функцию MiniportResetEx драйвера. Для некоторых запросов OID NDIS вызывает MiniportResetEx , если драйвер не выполняет запрос в течение четырех последовательных вызовов MiniportCheckForHangEx.

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

Для операции сброса драйвер может не передать пакеты запросов или оставить их в очереди и завершить их позже. Однако следует отметить, что драйвер с превышением состояния не может завершить операцию приостановки, пока его пакеты передачи находятся в состоянии ожидания.

Драйвер мини-порта может выполнить запрос на сброс синхронно, возвращая состояние успеха или сбоя. Драйвер может выполнить запрос на сброс асинхронно, возвращая NDIS_STATUS_PENDING. В этом случае драйвер должен вызвать NdisMResetComplete для завершения операции.

Операции проверки зависания и сброса в NDIS 6.83 и более поздних версий

В версиях NDIS до 6.83 операции check-for-Hang (CFH) и Reset не рекомендуется использовать для систем Always On, Always Connected (AOAC) из-за проблем с временем работы батареи. Однако драйверы могут по-прежнему использовать CFH в других системах Windows, не относящихся к AOAC, путем реализации дополнительных функций обратного вызова MiniportCheckForHangEx и MiniportResetEx .

Начиная с версии NDIS 6.83 эти функции обратного вызова не рекомендуется использовать во всех системах Windows независимо от возможностей питания. Хотя использование CFH в NDIS 6.83 и более поздних версиях не является нарушением теста логотипа, драйверы NDIS должны использовать следующую таблицу для получения рекомендаций по его использованию.

Caller Рекомендация Примечания
Драйверы, предназначенные для систем AOAC Не следует реализовывать Вызывает проблемы с временем работы батареи из-за периодической активности проверка для зависания
Драйверы, предназначенные для систем Windows Server Не следует реализовывать Вызывает проблемы при нагрузке на ЦП
Виртуальные (только программные) драйверы мини-портов Не следует реализовывать Сброс невозможен без оборудования
Другие новые драйверы NDIS 6.83 и более поздних версий Не следует реализовывать
Другой существующий код NDIS 6.82 и более ранних версий Не требуется изменять, но следует рассмотреть возможность удаления check-for-Hang и Reset в будущих переработках

Сброс оборудования драйвера miniport

Функции сброса и остановки драйвера miniport