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


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

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

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

Синтаксис

MINIPORT_CANCEL_SEND MiniportCancelSend;

void MiniportCancelSend(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PVOID CancelId
)
{...}

Параметры

[in] MiniportAdapterContext

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

[in] CancelId

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

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

None

Remarks

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

Когда драйвер NDIS вызываетФункция NdisCancelSendNetBufferLists, NDIS вызывает функцию MiniportCancelSend соответствующего драйвера нижнего уровня для привязки. NDIS выполняет этот вызов, только если драйвер нижнего уровня экспортирует функцию MiniportCancelSend .

Функция MiniportCancelSend драйвера мини-порта выполняет следующие операции:

  1. Просматривает список структур NET_BUFFER_LIST в очереди для указанного адаптера и вызывает NDIS_GET_NET_BUFFER_LIST_CANCEL_ID макрос для получения идентификатора отмены для каждой структуры NET_BUFFER_LIST очереди. Драйвер мини-порта сравнивает идентификатор отмены, возвращаемый NDIS_GET_NET_BUFFER_LIST_CANCEL_ID, с идентификатором отмены, переданным NDIS в MiniportCancelSend.
  2. Удаляет из очереди отправки (отмена ссылок) все NET_BUFFER_LIST структуры, идентификаторы отмены которых соответствуют указанному идентификатору отмены.
  3. ВызываетФункция NdisMSendNetBufferListsComplete для всех несвязанных структур NET_BUFFER_LIST для возврата структур . Драйвер мини-порта задает в поле состояния структур NET_BUFFER_LIST значение NDIS_STATUS_SEND_ABORTED.
Функция MiniportCancelSend промежуточного драйвера выполняет следующие операции:
  1. Выполняет операции из предыдущего списка для функции MiniportCancelSend драйвера мини-порта .
  2. ВызываетФункция NdisCancelSendNetBufferLists, указывающая привязку, которая сопоставляется с адаптером NDIS, указанным в вызове MiniportCancelSend.
NDIS вызывает MiniportCancelSend по Примеры Чтобы определить функцию MiniportCancelSend , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

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

MINIPORT_CANCEL_SEND MyCancelSend;

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

_Use_decl_annotations_
VOID
 MyCancelSend(
    NDIS_HANDLE  MiniportAdapterContext,
    PVOID  CancelId
    )
  {...}

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

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

Требования

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

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

MiniportInitializeEx

NDIS_GET_NET_BUFFER_LIST_CANCEL_ID

NET_BUFFER

NET_BUFFER_LIST

NdisCancelSendNetBufferLists

NdisMSendNetBufferListsComplete