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


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

Функция FilterStatus указывает на изменения состояния, о которых сообщает NDIS или базовый драйвер.

Примечание Функцию необходимо объявить с помощью типа FILTER_STATUS . Дополнительные сведения см. в следующем разделе Примеры.
 

Синтаксис

FILTER_STATUS FilterStatus;

void FilterStatus(
  [in] NDIS_HANDLE FilterModuleContext,
  [in] PNDIS_STATUS_INDICATION StatusIndication
)
{...}

Параметры

[in] FilterModuleContext

Дескриптор области контекста для модуля фильтра. Драйвер фильтра создал и инициализировал эту область контекста в функции FilterAttach .

[in] StatusIndication

Указатель на структуру NDIS_STATUS_INDICATION , содержащую сведения о состоянии.

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

None

Remarks

FilterStatus — это необязательная функция. Если драйвер фильтра не использует индикаторы состояния, он может задать точке входа для этой функции значение NULL при вызовеФункция NdisFRegisterFilterDriver.

Чтобы определить состояние ссылки, используйте указания состояния из базовых драйверов вместо запросов OID. Эти индикаторы состояния повысят производительность системы и избежать возможных условий гонки.

Драйвер фильтра обычно вызывает функцию NdisFIndicateStatus в конце своей функции FilterStatus для передачи указания состояния драйверам с превышением.

Драйвер фильтра может отфильтровать определенные признаки состояния или изменить указанное состояние. Чтобы отфильтровать индикатор состояния, драйвер просто не вызывает NdisFIndicateStatus.

NDIS вызывает FilterStatus по адресу IRQL <= DISPATCH_LEVEL.

Примеры

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

Например, чтобы определить функцию FilterStatus с именем MyStatus, используйте тип FILTER_STATUS , как показано в следующем примере кода:

FILTER_STATUS MyStatus;

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

_Use_decl_annotations_
VOID
 MyStatus(
    NDIS_HANDLE  FilterModuleContext,
    PNDIS_STATUS_INDICATION  StatusIndication
    )
  {...}

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

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

Требования

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

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

FilterAttach

NDIS_STATUS_INDICATION

NdisFIndicateStatus

NdisFRegisterFilterDriver