NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE función de devolución de llamada (ndischimney.h)

[La característica de descarga de chimenea TCP está en desuso y no se debe usar.]

Un destino de descarga llama a la función NdisTcpOffloadReceiveComplete para devolver solicitudes de recepción publicadas (búferes de recepción) a la pila de hosts. El destino de descarga recibido previamente las solicitudes de recepción en una o varias llamadas a su Función MiniportTcpOffloadReceive .

Sintaxis

NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE NdisTcpOffloadReceiveComplete;

void NdisTcpOffloadReceiveComplete(
  [in] IN NDIS_HANDLE NdisMiniportHandle,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

Parámetros

[in] NdisMiniportHandle

Identificador que el destino de descarga obtuvo en una llamada anterior a . Función NdisMRegisterMiniportDriver .

[in] NetBufferList

Puntero a una estructura de NET_BUFFER_LIST . Esta estructura puede ser independiente o la primera estructura de una lista vinculada de estructuras de NET_BUFFER_LIST. El destino de descarga obtuvo estas estructuras en una o varias llamadas a su Función MiniportTcpOffloadReceive .

Valor devuelto

None

Observaciones

Un destino de descarga debe usar y devolver solicitudes de recepción preposted en el orden en que las solicitudes se publicaron en el MiniportTcpOffloadReceive función del destino de descarga. Es decir, el destino de descarga debe usar y devolver solicitudes de recepción preposted en el orden primero en entrar, primero en salir (FIFO).

Un destino de descarga debe serializar las llamadas a la función NdisTcpOffloadReceiveComplete y a la Función NdisTcpOffloadReceiveHandler por conexión.

Se puede llamar a una función MiniportTcpOffloadReceive de un destino de descarga en el contexto de la llamada de un destino de descarga a la función NdisTcpOffloadReceiveComplete . En este caso, un destino de descarga no debe llamar a la función NdisTcpOffloadReceiveComplete de nuevo hasta que se haya devuelto la llamada anterior a NdisTcpOffloadReceiveComplete .

Para mejorar el rendimiento del sistema, un destino de descarga puede crear una lista vinculada que contenga las estructuras de NET_BUFFER_LIST de varias llamadas a su Función MiniportTcpOffloadReceive . El destino de descarga puede pasar una lista vinculada de este tipo en una sola llamada a la función NdisTcpOffloadReceiveComplete . Tenga en cuenta que un destino de descarga puede distribuir las solicitudes de recepción publicadas en una sola llamada a . MiniportTcpOffloadReceive función en más de una llamada de finalización siempre que el destino de descarga complete las solicitudes de recepción en el mismo orden en que se publicaron en la función MiniportTcpOffloadReceive .

Antes de llamar a la función NdisTcpOffloadReceiveComplete , el destino de descarga realiza lo siguiente para cada estructura de NET_BUFFER_LIST que pasa a la función:

  • Escribe uno de los siguientes valores de estado en el miembro Status :
    NDIS_STATUS_SUCCESS
    El destino de descarga recibió todos los datos asociados a las estructuras NET_BUFFER_LIST a las que hace referencia el parámetro NetBufferList . El destino de descarga también avanzada las variables RcvNxt y RcvWnd en el estado delegado TCP para la conexión TCP. El destino de descarga podría haber generado o no una confirmación para los datos recibidos, dependiendo de si el destino de descarga está esperando para enviar una confirmación retrasada.
    NDIS_STATUS_REQUEST_ABORTED
    Se produjo un error mientras el destino de descarga estaba procesando los datos recibidos. Si el destino de descarga proporciona algunos datos válidos con las estructuras de NET_BUFFER_LIST a las que apunta el parámetro NetBufferList , el destino de descarga especifica el número de bytes de datos válidos llamando a la macro NET_BUFFER_LIST_INFO . El destino de descarga podría o no haber confirmado alguna parte de los datos recibidos.
    NDIS_STATUS_UPLOAD_IN_PROGRESS
    La conexión en la que se publicó el búfer se está cargando.
    NDIS_STATUS_INVALID_STATE
    La solicitud de recepción se publicó después de que el destino de descarga indicara una desconexión mediante una llamada a . NdisTcpOffloadEventHandler.
  • Especifica el número de bytes de datos devueltos llamando a la macro NET_BUFFER_LIST_INFO con un identificador de TcpOffloadBytesTransferred.
  • Llama a Función NdisAdvanceNetBufferDataStart . El parámetro NetBufferList debe apuntar a la estructura NET_BUFFER asociada a la estructura NET_BUFFER_LIST. El parámetro DataOffsetDelta debe especificar el número de bytes de datos que el destino de descarga colocado en las listas de descriptores de memoria (MDL) asociadas a la estructura de NET_BUFFER. El parámetro FreeMdl debe ser NULL.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ndischimney.h (incluya Ndischimney.h)
IRQL Cualquier nivel

Consulte también

MiniportTcpOffloadReceive

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver