Cancelación de una solicitud de envío en un controlador de minipuerto
En la ilustración siguiente se muestra una operación de envío de cancelación del controlador de minipuerto.
Los controladores intermedios, filtros y protocolos pueden llamar a NdisCancelSendNetBufferLists para cancelar solicitudes de envío pendientes. Estos controladores que se sobreponen deben marcar los datos de envío con un identificador de cancelación antes de realizar una solicitud de envío.
NDIS llama a una función MiniportCancelSend del controlador de miniporte para cancelar la transmisión de todas las estructuras de NET_BUFFER_LIST marcadas con un identificador de cancelación especificado.
Una función MiniportCancelSend del controlador miniporte realiza las siguientes operaciones:
Recorre su lista de solicitudes de envío pendientes para el adaptador especificado y llama a NDIS_GET_NET_BUFFER_LIST_CANCEL_ID para obtener el identificador de cancelación para cada estructura de NET_BUFFER_LIST. El controlador de minipuerto compara el identificador de cancelación que NDIS_GET_NET_BUFFER_LIST_CANCEL_ID devuelve con el identificador de cancelación que NDIS pasó a MiniportCancelSend.
Quita de todas las estructuras de NET_BUFFER_LIST cuyos identificadores de cancelación coinciden con el identificador de cancelación especificado de su lista de solicitudes de envío pendientes.
Llama a la función NdisMSendNetBufferListsComplete para todas las estructuras de NET_BUFFER_LIST canceladas para devolver las estructuras. El controlador de minipuerto establece el campo de estado de las estructuras de NET_BUFFER_LIST en NDIS_STATUS_SEND_ABORTED.