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

NDIS вызывает функцию FilterReturnNetBufferLists для возврата связанного списка NET_BUFFER_LIST структур и связанных данных в драйвер фильтра.

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

Синтаксис

FILTER_RETURN_NET_BUFFER_LISTS FilterReturnNetBufferLists;

void FilterReturnNetBufferLists(
  [in] NDIS_HANDLE FilterModuleContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG ReturnFlags
)
{...}

Параметры

[in] FilterModuleContext

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

[in] NetBufferLists

Связанный список NET_BUFFER_LIST структур, указанных драйвером фильтра при вызове Функция NdisFIndicateReceiveNetBufferLists . Список может включать NET_BUFFER_LIST структуры из нескольких вызовов NdisFIndicateReceiveNetBufferLists.

[in] ReturnFlags

Флаги NDIS, которые можно объединить с операцией OR. Чтобы очистить все флаги, установите для этого элемента нулевое значение. Эта функция поддерживает следующие флаги:

NDIS_RETURN_FLAGS_DISPATCH_LEVEL

Указывает, что текущий irQL DISPATCH_LEVEL. Дополнительные сведения об этом флаге см. в разделе Dispatch IRQL Tracking.

NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE

Если этот флаг установлен, все пакеты в связанном списке NET_BUFFER_LIST структур поступили из одного порта источника расширяемого коммутатора Hyper-V.

Дополнительные сведения см. в статье Флаги отправки и получения расширяемого коммутатора Hyper-V.

Примечание Если каждый пакет в связанном списке NET_BUFFER_LIST структур использует один и тот же исходный порт, расширение должно установить флаг NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE в параметре ReceiveFlagsобъекта FilterReceiveNetBufferLists при отправке запроса.
 

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

None

Remarks

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

Драйвер фильтра может вызывать функцию NdisSetOptionalHandlers из функции FilterSetModuleOptions , чтобы указать функцию FilterReturnNetBufferLists для модуля фильтра.

Примечание Драйвер фильтра, не предоставляющий функцию FilterReturnNetBufferLists , не может вызватьФункция NdisFIndicateReceiveNetBufferLists для инициации указания получения.
 
Примечание Драйвер фильтра, предоставляющий функцию FilterReturnNetBufferLists , должен предоставлять функцию FilterStatus .
 
Когда NDIS вызывает FilterReturnNetBufferLists, драйвер фильтра восстанавливает права владения NET_BUFFER_LIST структурами и связанными данными.

Если базовый драйвер инициировал указание получения, драйвер фильтра должен вызвать Функция NdisFReturnNetBufferLists для завершения указания получения.

Если драйвер фильтра вызвал указание получения, FilterReturnNetBufferLists может либо освободить NET_BUFFER_LIST структуры и связанные данные, либо подготовить их к повторному использованию в последующем вызове NdisFIndicateReceiveNetBufferLists.

Драйвер фильтра должен отслеживать признаки получения, которые он инициирует, и убедиться, что он не вызывает NdisFReturnNetBufferLists , когда NDIS вызывает FilterReturnNetBufferLists.

NDIS вызывает FilterReturnNetBufferLists в IRQL <= DISPATCH_LEVEL.

Примеры

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

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

FILTER_RETURN_NET_BUFFER_LISTS MyReturnNetBufferLists;

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

_Use_decl_annotations_
VOID
 MyReturnNetBufferLists(
    NDIS_HANDLE  FilterModuleContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  ReturnFlags
    )
  {...}

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

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

Требования

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

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

FilterAttach

FilterSetModuleOptions

FilterStatus

NET_BUFFER

NET_BUFFER_LIST

NdisFIndicateReceiveNetBufferLists

NdisFRegisterFilterDriver

NdisFReturnNetBufferLists

NdisSetOptionalHandlers