Функция NdisCancelSendNetBufferLists (ndis.h)

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

Синтаксис

void NdisCancelSendNetBufferLists(
  [in] NDIS_HANDLE NdisBindingHandle,
  [in] PVOID       CancelId
);

Параметры

[in] NdisBindingHandle

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

[in] CancelId

Идентификатор отмены. Этот идентификатор указывает сетевые данные, для которых отменяется передача.

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

None

Remarks

Драйвер протокола сопоставляет irp, получаемые от программного обеспечения более высокого уровня, с сетевыми данными NDIS. Список NET_BUFFER_LIST структур описывает сетевые данные, которые драйвер протокола отправляет драйверам более низкого уровня для передачи. При отмене IRP драйвер протокола может вызвать функцию NdisCancelSendNetBufferLists , чтобы отменить ожидающие передачи соответствующих сетевых данных NDIS.

Вызовите NDIS_SET_NET_BUFFER_LIST_CANCEL_ID макрос для каждой структуры NET_BUFFER_LIST, передаваемой драйверам более низкого уровня для передачи. Макрос NDIS_SET_NET_BUFFER_LIST_CANCEL_ID помечает указанный пакет идентификатором отмены.

NdisCancelSendNetBufferLists отменяет передачу всех данных, помеченных указанным идентификатором отмены и связанных с указанным драйвером miniport. Дескриптор привязки, указанный в параметре NdisBindingHandle , определяет драйвер мини-порта.

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

Драйвер протокола должен гарантировать, что дескриптор, который указывает параметр NdisBindingHandle , остается действительным в течение всего вызова NdisCancelSendNetBufferLists. То есть драйвер протокола не должен вызывать функцию NdisCloseAdapterEx , чтобы закрыть привязку до возврата NdisCancelSendNetBufferLists .

Нет никакой гарантии, что вызов NdisCancelSendNetBufferLists отменит ожидающую передачу всех сетевых данных с указанным идентификатором отмены. Например, если следующий драйвер ниже, к которому привязан драйвер протокола, не предоставляет функцию MiniportCancelSend , вызов NdisCancelSendNetBufferLists ничего не делает.

Во всех случаях NDIS возвращает сетевые данные, отправленные для передачи исходному драйверу протокола. Функция ProtocolSendNetBufferListsComplete . NDIS возвращает отмененные данные отправки с состоянием завершения NDIS_STATUS_SEND_ABORTED. Задержка между вызовом NdisCancelSendNetBufferLists и возвратом отмененных NET_BUFFER_LIST структур может отличаться и поэтому не может быть точно указана.

Требования

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

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

MiniportCancelSend

NDIS_SET_NET_BUFFER_LIST_CANCEL_ID

NET_BUFFER_LIST

NdisCloseAdapterEx

NdisOpenAdapterEx

ProtocolSendNetBufferListsComplete