Операции проверки зависания и сброса адаптера минипорта
Обзор
Предупреждение
Операции 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 секунды) слишком мало, драйвер мини-порта может задать другое значение во время инициализации следующим образом:
- Задайте для элемента CheckForHangTimeInSeconds структуры NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES ненулевое значение.
- Передайте структуру 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 в будущих переработках |