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


Отмена запроса на отправку в драйвере miniport

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

Схема, иллюстрирующая операцию отмены отправки драйвера мини-порта.

Протоколы, фильтры и промежуточные драйверы могут вызывать NdisCancelSendNetBufferLists для отмены невыполненных запросов на отправку. Перед отправкой запроса на отправку эти драйверы должны пометить данные отправки идентификатором отмены.

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

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

  1. Просматривает список невыполненных запросов на отправку для указанного адаптера и вызывает 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.