OID_TCP_TASK_OFFLOAD
La pila de hosts consulta el OID_TCP_TASK_OFFLOAD OID para obtener las funcionalidades de descarga TCP de una NIC del controlador de miniporte o de un destino de descarga. Después de determinar las funcionalidades de descarga que admite una NIC o un destino de descarga, la pila de hosts establece este OID para habilitar una o varias de las funcionalidades notificadas. La pila de hosts también puede deshabilitar todas las funcionalidades de descarga TCP de una NIC o de un destino de descarga estableciendo OID_TCP_TASK_OFFLOAD. Solo un protocolo a la vez puede habilitar las funcionalidades de descarga TCP de una NIC determinada.
Consultas de funcionalidades de descarga
Cuando la pila de hosts consulta OID_TCP_TASK_OFFLOAD, proporciona en informationBuffer una estructura de NDIS_TASK_OFFLOAD_HEADER . Esta estructura especifica lo siguiente:
- La versión de descarga admitida por la pila de hosts.
- Formato de encapsulación para enviar y recibir paquetes procesados por la pila de hosts.
- Tamaño del encabezado de encapsulación en dichos paquetes.
Con esta información, un controlador de minipuerto o su NIC pueden localizar el principio del primer encabezado IP en un paquete de transmisión, que es un requisito previo para realizar una tarea de descarga. Un destino de descarga debe conocer el formato de encapsulación para procesar los paquetes de recepción. En respuesta a una consulta de OID_TCP_TASK_OFFLOAD, un controlador de miniporte o un destino de descarga devuelve, en InformationBuffer, la estructura de NDIS_TASK_OFFLOAD_HEADER seguida inmediatamente de una o varias estructuras de NDIS_TASK_OFFLOAD . Cada estructura de NDIS_TASK_OFFLOAD describe una funcionalidad de descarga admitida por la NIC del controlador de miniporte o por el destino de descarga. Si la NIC del controlador miniporte o el destino de descarga admite varias versiones de una funcionalidad de descarga determinada, debe devolver una estructura NDIS_TASK_OFFLOAD para cada versión.
Cada estructura NDIS_TASK_OFFLOAD tiene un miembro Task que especifica la funcionalidad de descarga determinada a la que se aplica la estructura. Cada estructura de NDIS_TASK_OFFLOAD también tiene un objeto TaskBuffer que contiene información pertinente para la funcionalidad de descarga especificada. La información de TaskBuffer tiene el formato de una de las siguientes estructuras:
- NDIS_TASK_TCP_IP_CHECKSUM
Especifica las funcionalidades de descarga de suma de comprobación. - NDIS_TASK_IPSEC
Especifica las funcionalidades de descarga de seguridad del protocolo de Internet (IPsec). - NDIS_TASK_TCP_LARGE_SEND
Especifica funcionalidades de segmentación de paquetes TCP de gran tamaño. - NDIS_TASK_TCP_CONNECTION_OFFLOAD
Especifica las funcionalidades de descarga de chimenea TCP. Para obtener más información sobre NDIS_TASK_TCP_CONNECTION_OFFLOAD, consulte Descarga de TCP Chimney.
Nota
Si un controlador intermedio modifica el contenido de los paquetes que reenvía a un controlador de miniporte subyacente para que las funciones de descarga TCP no se puedan realizar en los paquetes, el controlador intermedio debe responder a OID_TCP_TASK_OFFLOAD consultas con un estado de NDIS_STATUS_NOT_SUPPORTED en lugar de pasar la solicitud OID al controlador de miniporte subyacente o al destino de descarga.
Habilitación de funcionalidades de descarga
Después de consultar las funcionalidades de descarga de una NIC o de un destino de descarga, la pila de hosts habilita una o varias de estas funcionalidades estableciendo OID_TCP_TASK_OFFLOAD. Al establecer OID_TCP_TASK_OFFLOAD, la pila de hosts proporciona, en InformationBuffer, una estructura de NDIS_TASK_OFFLOAD_HEADER seguida inmediatamente de una estructura de NDIS_TASK_OFFLOAD para cada funcionalidad de descarga que habilita la pila de hosts.
La tarea de cada estructura de NDIS_TASK_OFFLOAD indica la funcionalidad de descarga que la pila de hosts está habilitando. La pila de hosts también habilita aspectos específicos de una funcionalidad de descarga determinada estableciendo miembros de la estructura en taskBuffer de cada estructura de NDIS_TASK_OFFLOAD.
Cambio de las funcionalidades de descarga
Para cambiar las funcionalidades de descarga habilitadas para una NIC o un destino de descarga, la pila de hosts establece OID_TCP_TASK_OFFLOAD. El controlador de miniporte o el destino de descarga solo deben habilitar las funcionalidades de descarga especificadas por el conjunto de OID_TCP_TASK_OFFLOAD más reciente. El controlador de miniporte o el destino de descarga deben deshabilitar todas las demás funcionalidades de descarga. Tenga en cuenta que antes de deshabilitar una funcionalidad específica de descarga de chimenea TCP, la pila de hosts finaliza la descarga de las conexiones TCP descargadas que usan esa funcionalidad.
Un destino de descarga puede usar indicaciones de pausa o reanudación de la descarga para cambiar sus funcionalidades de descarga TCP notificadas:
- Un destino de descarga realiza una indicación de pausa llamando a la función NdisMIndicateStatusEx con el miembro NDIS_STATUS_INDICATION-StatusCode> establecido en NDIS_STATUS_OFFLOAD_PAUSE.
- Un destino de descarga realiza una indicación de reanudación llamando a la función NdisMIndicateStatusEx con el miembro NDIS_STATUS_INDICATION-StatusCode> establecido en NDIS_STATUS_OFFLOAD_RESUME.
Una vez que un destino de descarga solicita a la pila de hosts que reanude la descarga de objetos de estado, la pila de hosts consulta OID_TCP_TASK_OFFLOAD de nuevo para obtener las funcionalidades revisadas de descarga TCP del destino de descarga. Para obtener más información, consulte NDIS_STATUS_OFFLOAD_RESUME.
Deshabilitación de las funcionalidades de descarga
Para deshabilitar todas las funcionalidades de descarga admitidas por una NIC o un destino de descarga, la pila de hosts establece OID_TCP_TASK_OFFLOAD. En InformationBuffer, la pila host proporciona una estructura de NDIS_TASK_OFFLOAD_HEADER con el miembro OffsetFirstTask de esta estructura establecido en cero.
Requisitos
Versión: Windows Vista y encabezado posterior: Ntddndis.h (incluya Ndis.h)