Отмена запроса на отправку в драйвере miniport
На следующем рисунке показана операция отмены отправки драйвера мини-порта.
Протоколы, фильтры и промежуточные драйверы могут вызывать NdisCancelSendNetBufferLists для отмены невыполненных запросов на отправку. Перед отправкой запроса на отправку эти драйверы должны пометить данные отправки идентификатором отмены.
NDIS вызывает функцию MiniportCancelSend драйвера мини-порта, чтобы отменить передачу всех NET_BUFFER_LIST структур, помеченных указанным идентификатором отмены.
Функция MiniportCancelSend драйвера мини-порта выполняет следующие операции:
Просматривает список невыполненных запросов на отправку для указанного адаптера и вызывает NDIS_GET_NET_BUFFER_LIST_CANCEL_ID для получения идентификатора отмены для каждой структуры NET_BUFFER_LIST. Драйвер мини-порта сравнивает идентификатор отмены, возвращаемый NDIS_GET_NET_BUFFER_LIST_CANCEL_ID, с идентификатором отмены, переданным NDIS в MiniportCancelSend.
Удаляет из всех NET_BUFFER_LIST структур, идентификаторы отмены которых совпадают с указанным идентификатором отмены, из списка невыполненных запросов на отправку.
Вызывает функцию NdisMSendNetBufferListsComplete для всех отмененных структур NET_BUFFER_LIST для возврата структур. Драйвер мини-порта задает в поле состояния структур NET_BUFFER_LIST значение NDIS_STATUS_SEND_ABORTED.