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


функция обратного вызова MINIPORT_CHECK_FOR_HANG (ndis.h)

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

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

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

Примечание Драйвер мини-порта может объявить эту функцию с помощью типа MINIPORT_CHECK_FOR_HANG .
 
Примечание Начиная с NDIS 6.30 эта функция не должна быть зарегистрирована для драйверов, работающих на платформах SoC с низким энергопотреблением, чтобы избежать негативного влияния на питание, вызванного периодическим действием Check-for-Hang .
 

Синтаксис

MINIPORT_CHECK_FOR_HANG MiniportCheckForHang;

BOOLEAN MiniportCheckForHang(
  [in] NDIS_HANDLE MiniportAdapterContext
)
{...}

Параметры

[in] MiniportAdapterContext

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

Возвращаемое значение

MiniportCheckForHangEx возвращает значение TRUE , если драйвер определяет, что сетевой адаптер не работает, и NDIS должен вызвать функцию MiniportResetEx драйвера. Дополнительные сведения см. в разделе «Примечания».

Комментарии

Драйвер минипорта указывает точку входа MiniportCheckForHangEx при вызовеФункция NdisMRegisterMiniportDriver.

MiniportCheckForHangEx не требуется для промежуточных драйверов.

MiniportCheckForHangEx не более чем проверка внутреннее состояние сетевого адаптера и возвращает значение TRUE, если обнаруживает, что сетевой адаптер работает неправильно.

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

Примечание Начиная с версии NDIS 6.30, для измерения интервалов между вызовами MiniportCheckForHangEx используется объединяемый таймер с высоким допуском. Поэтому эту подпрограмму не следует использовать для операций, зависящих от времени.
 
Если MiniportCheckForHangEx возвращает значение TRUE, NDIS вызывает функцию MiniportResetEx драйвера miniport.

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

Дополнительные сведения о настройке значения времени ожидания CheckForHangTimeInSeconds см. в разделе Miniport Adapter Check-for-Hang and Reset Operations.

Примечание Начиная с версии NDIS 6.30, MiniportCheckForHangEx должен возвращать значение TRUE , если драйвер мини-порта обнаруживает, что сетевой адаптер не выполнил ожидающий запрос на отправку до истечения времени ожидания. Время ожидания зависит от драйвера, но рекомендуется использовать период ожидания в 2 секунды.
 
MiniportCheckForHangEx может быть вытеснен прерыванием.

NDIS вызывает MiniportCheckForHangEx в IRQL = PASSIVE_LEVEL.

Примеры

Чтобы определить функцию MiniportCheckForHangEx , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию MiniportCheckForHangEx с именем MyCheckForHangEx, используйте тип MINIPORT_CHECK_FOR_HANG , как показано в этом примере кода:

MINIPORT_CHECK_FOR_HANG MyCheckForHangEx;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
BOOLEAN
 MyCheckForHangEx(
    NDIS_HANDLE  MiniportAdapterContext
    )
  {...}

Тип функции MINIPORT_CHECK_FOR_HANG определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции MINIPORT_CHECK_FOR_HANG в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье О поведении функции.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL PASSIVE_LEVEL

См. также раздел

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

MiniportInitializeEx

MiniportResetEx

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes