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

NDIS вызывает функцию FilterSendNetBufferListsComplete для выполнения запроса на отправку, запущенного драйвером фильтра путем вызова Функция NdisFSendNetBufferLists .

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

Синтаксис

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE FilterSendNetBufferListsComplete;

void FilterSendNetBufferListsComplete(
  [in] NDIS_HANDLE FilterModuleContext,
       PNET_BUFFER_LIST NetBufferList,
  [in] ULONG SendCompleteFlags
)
{...}

Параметры

[in] FilterModuleContext

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

NetBufferList

Указатель на связанный список NET_BUFFER_LIST структур, переданных драйвером фильтра. NdisFSendNetBufferLists.

[in] SendCompleteFlags

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

NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL

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

NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE

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

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

Примечание Если каждый пакет в связанном списке NET_BUFFER_LIST структур использует один и тот же исходный порт, расширение должно установить флаг NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE в параметре SendFlagsобъекта SendNetBufferLists при отправке запроса.
 
Примечание Этот флаг доступен в NDIS 6.30 и более поздних версиях.
 

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

None

Remarks

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

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

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

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

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

Примечание Драйвер фильтра должен отслеживать инициированные запросы на отправку и убедиться, что он не вызывает NdisFSendNetBufferListsComplete , когда NDIS вызывает FilterSendNetBufferListsComplete для таких запросов.
 
NDIS вызывает FilterSendNetBufferListsComplete в IRQL <= DISPATCH_LEVEL.

Примеры

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

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

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE MySendNetBufferListsComplete;

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

_Use_decl_annotations_
VOID
 MySendNetBufferListsComplete(
    NDIS_HANDLE  FilterModuleContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendCompleteFlags
    )
  {...}

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

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

Требования

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

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

FilterAttach

FilterSetModuleOptions

NET_BUFFER

NET_BUFFER_LIST

NdisFRegisterFilterDriver

NdisFSendNetBufferLists

NdisFSendNetBufferListsComplete

NdisSetOptionalHandlers