NDIS_TCP_OFFLOAD_SEND_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 NdisTcpOffloadSendComplete para completar una o varias solicitudes de envío realizadas en la función MiniportTcpOffloadSend del destino de descarga.
Sintaxis
NDIS_TCP_OFFLOAD_SEND_COMPLETE NdisTcpOffloadSendComplete;
void NdisTcpOffloadSendComplete(
[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 una estructura 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 MiniportTcpOffloadSend .
Valor devuelto
None
Observaciones
Para mejorar el rendimiento del sistema, un destino de descarga puede crear una lista vinculada que contenga NET_BUFFER_LIST estructuras de varias llamadas a la función MiniportTcpOffloadSend . A continuación, el controlador puede pasar dicha lista vinculada en una sola llamada a la función NdisTcpOffloadSendComplete .
Antes de completar una o varias solicitudes de envío, el destino de descarga debe hacer lo siguiente para cada estructura de NET_BUFFER_LIST que pasa a la función NdisTcpOffloadSendComplete :
-
Escriba un valor de estado en el miembro Status :
- NDIS_STATUS_SUCCESS indica que el destino de descarga envió correctamente todos los datos asociados a la NET_BUFFER_LIST y que el destino de descarga recibió del host remoto una confirmación para todos los datos transmitidos. Tenga en cuenta que esto difiere de la función de envío que no es de descarga, MiniportSendNetBufferLists, que no supervisa las confirmaciones.
- Un valor de estado distinto de NDIS_STATUS_SUCCESS, por ejemplo, un valor de estado de NDIS_STATUS_REQUEST_ABORTED o NDIS_STATUS_UPLOAD_IN_PROGRESS indica que los datos de envío no se han confirmado correctamente. El destino de descarga podría o no haber enviado los datos. El destino de descarga debe producir un error en la operación de envío para todas las estructuras de NET_BUFFER_LIST posteriores de la lista vinculada sin enviar más datos asociados a estas estructuras. El destino de descarga escribe un valor de estado de NDIS_STATUS_UPLOAD_IN_PROGRESS cuando se termina la descarga de la conexión TCP en la que se van a enviar los datos. En este caso, la pila de hosts pone en cola y procesa los datos TCP. El destino de descarga escribe un valor de estado de NDIS_STATUS_REQUEST_ABORTED si ha recibido un segmento RST en la conexión TCP en la que se van a enviar los datos. En este caso, la pila de hosts no procesa los datos TCP.
- El destino de descarga debe completar un envío parcial para, como máximo, una estructura NET_BUFFER_LIST en la lista vinculada. El destino de descarga escribe un valor de estado distinto de NDIS_STATUS_SUCCESS, por ejemplo, un valor de estado de NDIS_STATUS_ABORTED o NDIS_STATUS_UPLOAD_IN_PROGRESS en tal estructura de NET_BUFFER_LIST.
- Si un controlador intermedio no puede asignar memoria para propagar la operación de envío a un destino de descarga subyacente, escribe un valor de estado de NDIS_STATUS_REQUEST_UPLOAD en la primera estructura de NET_BUFFER_LIST de la lista vinculada y NDIS_STATUS_UPLOAD_REQUESTED en todas las estructuras de NET_BUFFER_LIST posteriores de la lista vinculada. El controlador intermedio no debe propagar las estructuras de NET_BUFFER_LIST a un destino de descarga subyacente. La pila de hosts realizará la operación de envío.
- Especifique el número de bytes de datos enviados. El destino de descarga lo hace llamando a la macro NET_BUFFER_LIST_INFO con un identificadorde TcpOffloadBytesTransferred.
- Llamada a Función NdisAdvanceNetBufferDataStart para cada estructura de NET_BUFFER asociada a la estructura NET_BUFFER_LIST. El parámetro NetBuffer pasado a la función NdisAdvanceNetBufferDataStart debe apuntar a la estructura NET_BUFFER. El parámetro DataOffsetDelta debe especificar el número de bytes de datos de la estructura NET_BUFFER transmitida por el destino de descarga y que el host remoto reconoció. El parámetro FreeMdl es NULL.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | ndischimney.h (incluya Ndischimney.h) |
IRQL | Cualquier nivel |