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

NDIS вызывает функцию FilterCancelSendNetBufferLists драйвера фильтра, чтобы отменить передачу всех NET_BUFFER_LIST структур, помеченных указанным идентификатором отмены.

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

Синтаксис

FILTER_CANCEL_SEND_NET_BUFFER_LISTS FilterCancelSendNetBufferLists;

void FilterCancelSendNetBufferLists(
  [in] NDIS_HANDLE FilterModuleContext,
  [in] PVOID CancelId
)
{...}

Параметры

[in] FilterModuleContext

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

[in] CancelId

Идентификатор отмены. Этот идентификатор указывает NET_BUFFER_LIST структуры, которые отменяются.

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

None

Remarks

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

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

При вызове избыточного драйвера NDIS NdisCancelSendNetBufferLists илиФункция NdisFCancelSendNetBufferLists, NDIS вызывает функцию FilterCancelSendNetBufferLists модулей фильтра в привязке.

Функция FilterCancelSendNetBufferLists драйвера фильтра выполняет следующие операции:

  1. Просматривает список структур NET_BUFFER_LIST в очереди для указанного модуля фильтра и вызывает NDIS_GET_NET_BUFFER_LIST_CANCEL_ID макрос для получения идентификатора отмены для каждой структуры NET_BUFFER_LIST в очереди. Драйвер фильтра сравнивает идентификатор отмены, возвращаемый NDIS_GET_NET_BUFFER_LIST_CANCEL_ID, с идентификатором отмены, переданным NDIS в FilterCancelSendNetBufferLists.
  2. Удаляет из очереди отправки (отменяет связь) все NET_BUFFER_LIST структуры, идентификаторы отмены которых совпадают с указанным идентификатором отмены.
  3. ВызываетФункция NdisFSendNetBufferListsComplete для всех несвязанных NET_BUFFER_LIST структур для возврата структур. Драйвер фильтра задает для поля состояния структур NET_BUFFER_LIST значение NDIS_STATUS_SEND_ABORTED.
  4. Вызывает функцию NdisFCancelSendNetBufferLists для передачи запроса на отмену отправки базовым драйверам.
NDIS вызывает FilterCancelSendNetBufferLists в IRQL <= DISPATCH_LEVEL.

Примеры

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

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

FILTER_CANCEL_SEND_NET_BUFFER_LISTS MyCancelSendNetBufferLists;

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

_Use_decl_annotations_
VOID
 MyCancelSendNetBufferLists(
    NDIS_HANDLE  FilterModuleContext,
    PVOID  CancelId
    )
  {...}

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

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

Требования

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

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

FilterAttach

NDIS_GET_NET_BUFFER_LIST_CANCEL_ID

NET_BUFFER

NET_BUFFER_LIST

NdisCancelSendNetBufferLists

NdisFCancelSendNetBufferLists

NdisFRegisterFilterDriver

NdisFSendNetBufferListsComplete