Cancelando uma solicitação de envio em um driver de miniporto
A figura a seguir ilustra uma operação de envio de cancelamento de driver de miniporta.
Drivers de protocolo, filtro e intermediários podem chamar NdisCancelSendNetBufferLists para cancelar solicitações de envio pendentes. Esses drivers de sobreposição devem marcar os dados de envio com uma ID de cancelamento antes de fazer uma solicitação de envio.
O NDIS chama a função MiniportCancelSend de um driver de miniport para cancelar a transmissão de todas as estruturas de NET_BUFFER_LIST marcadas com um identificador de cancelamento especificado.
A função MiniportCancelSend de um driver de miniport executa as seguintes operações:
Percorre sua lista de solicitações de envio pendentes para o adaptador especificado e chama NDIS_GET_NET_BUFFER_LIST_CANCEL_ID para obter o identificador de cancelamento para cada estrutura de NET_BUFFER_LIST. O driver de miniporta compara a ID de cancelamento que NDIS_GET_NET_BUFFER_LIST_CANCEL_ID retorna com a ID de cancelamento que o NDIS passou para MiniportCancelSend.
Remove de todas as estruturas de NET_BUFFER_LIST cujos identificadores de cancelamento correspondem ao identificador de cancelamento especificado de sua lista de solicitações de envio pendentes.
Chama a função NdisMSendNetBufferListsComplete para todas as estruturas de NET_BUFFER_LIST canceladas para retornar as estruturas. O driver de miniporta define o campo status das estruturas NET_BUFFER_LIST como NDIS_STATUS_SEND_ABORTED.