NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO estructura (ndis/nblchecksum.h)

La estructura de NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO especifica la información utilizada en las tareas de suma de comprobación de descarga del transporte TCP/IP a una NIC. La estructura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO forma parte de la información NET_BUFFER_LIST (datos fuera de banda) asociada a una estructura de NET_BUFFER_LIST .

Sintaxis

typedef struct _NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO {
  union {
    struct {
      ULONG IsIPv4 : 1;
      ULONG IsIPv6 : 1;
      ULONG TcpChecksum : 1;
      ULONG UdpChecksum : 1;
      ULONG IpHeaderChecksum : 1;
      ULONG Reserved : 11;
      ULONG TcpHeaderOffset : 10;
    } Transmit;
    struct {
      ULONG TcpChecksumFailed : 1;
      ULONG UdpChecksumFailed : 1;
      ULONG IpChecksumFailed : 1;
      ULONG TcpChecksumSucceeded : 1;
      ULONG UdpChecksumSucceeded : 1;
      ULONG IpChecksumSucceeded : 1;
      ULONG Loopback : 1;
      ULONG TcpChecksumValueInvalid : 1;
      ULONG IpChecksumValueInvalid : 1;
    } Receive;
    PVOID Value;
  };
} NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO, *PNDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO;

Miembros

Transmit

Estructura que contiene los siguientes miembros:

Transmit.IsIPv4

Establezca por el transporte TCP/IP para indicar que el paquete de envío contiene direcciones IPv4.

Transmit.IsIPv6

Establezca por el transporte TCP/IP para indicar que el paquete de envío contiene direcciones IPv6.

Transmit.TcpChecksum

Establezca por el transporte TCP/IP para indicar que la NIC debe calcular la suma de comprobación TCP del paquete.

Transmit.UdpChecksum

Establezca por el transporte TCP/IP para indicar que la NIC debe calcular la suma de comprobación UDP del paquete.

Transmit.IpHeaderChecksum

Establezca por el transporte TCP/IP para indicar que la NIC debe calcular la suma de comprobación de IP para el primer encabezado IP del paquete. Si el paquete contiene un encabezado IP de túnel y un encabezado IP de transporte, la NIC debe calcular la suma de comprobación de ambos encabezados IP.

Transmit.Reserved

Reservado para NDIS.

Transmit.TcpHeaderOffset

Desplazamiento, en bytes, del encabezado TCP desde el principio del paquete para los paquetes TCP. Los controladores de miniport pueden usar TcpHeaderOffset para determinar la ubicación del encabezado TCP para que no necesiten analizar el encabezado MAC e IP.

Receive

Estructura que contiene los siguientes miembros:

Receive.TcpChecksumFailed

Establezca por el controlador de minipuerto para indicar que la suma de comprobación TCP calculada por la NIC no coincide con la suma de comprobación en el encabezado TCP del paquete de recepción.

Receive.UdpChecksumFailed

Establezca por el controlador de minipuerto para indicar que la suma de comprobación UDP calculada por la NIC no coincide con la suma de comprobación en el encabezado UDP del paquete de recepción.

Receive.IpChecksumFailed

Establezca por el controlador de minipuerto para indicar que la suma de comprobación IP calculada por la NIC no coincide con la suma de comprobación en el primer encabezado IP del paquete de recepción. Si el paquete de recepción contiene un encabezado IP de túnel y un encabezado IP de transporte, la NIC valida la suma de comprobación de ambos encabezados IP.

Nota En el caso de los paquetes encapsulados que tienen un encabezado IPv4 de túnel (externo) y un encabezado IPv4 de transporte (interno), el controlador de miniporte debe establecer esta marca si se ha producido un error en alguna de las validaciones de suma de comprobación del encabezado IP.
 

Receive.TcpChecksumSucceeded

Establezca por el controlador de minipuerto para indicar que la suma de comprobación TCP calculada por la NIC coincide con la suma de comprobación en el encabezado TCP del paquete de recepción.

Receive.UdpChecksumSucceeded

Establezca por el controlador de minipuerto para indicar que la suma de comprobación udp calculada por la NIC coincide con la suma de comprobación en el encabezado UDP del paquete de recepción.

Receive.IpChecksumSucceeded

Establezca por el controlador de minipuerto para indicar que la suma de comprobación IP calculada por la NIC coincide con la suma de comprobación en el primer encabezado IP del paquete de recepción. Si el paquete de recepción contiene un encabezado IP de túnel y un encabezado IP de transporte, la NIC valida la suma de comprobación de los dos encabezados IP.

Nota En el caso de los paquetes encapsulados que tienen un encabezado IPv4 de túnel (externo) y un encabezado IPv4 de transporte (interno), el controlador de miniporte debe establecer esta marca solo si ambas validaciones de suma de comprobación de encabezado IP se han realizado correctamente.
 

Receive.Loopback

NDIS usa este bit. El controlador de minipuerto no debe examinar ni establecer este bit; El controlador de minipuerto simplemente debe ignorar este bit.

Receive.TcpChecksumValueInvalid

Un controlador de miniporte que admite la fusión de segmentos de recepción (RSC) establece esta marca para indicar que la NIC validó la suma de comprobación del encabezado TCP, pero el valor de suma de comprobación del encabezado TCP en el paquete no es válido. Para obtener más información, vea Indicación de segmentos fusionados.

Los controladores miniporte que no admiten RSC deben establecer esta marca en cero.

Nota Esta marca se admite en controladores de miniporte NDIS 6.30 y versiones posteriores en Windows 8, Windows Server 2012 y versiones posteriores.
 

Receive.IpChecksumValueInvalid

Un controlador de miniporte que admite RSC establece esta marca para indicar que para un paquete IPv4, la suma de comprobación del encabezado IP se validó mediante la NIC, pero el valor de suma de comprobación del encabezado IP en el paquete no es válido. Para un paquete que consta de un túnel y un encabezado IP de transporte, este bit solo se aplica al encabezado IP del túnel. Para obtener más información, vea Indicación de segmentos fusionados.

Los controladores miniporte que no admiten RSC deben establecer esta marca en cero.

Nota Esta marca se admite en controladores de miniporte NDIS 6.30 y versiones posteriores en Windows 8, Windows Server 2012 y versiones posteriores.
 

Value

Una versión PVOID de la información de suma de comprobación. Los controladores miniport pueden usar este miembro para acceder a la información sin procesar en lugar de a los campos específicos.

Comentarios

La estructura de NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO especifica información que se usa en la descarga de tareas de suma de comprobación del transporte TCP/IP a una NIC. La estructura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO forma parte de la información NET_BUFFER_LIST (datos fuera de banda) asociada a una estructura de NET_BUFFER_LIST .

Antes de que el transporte TCP/IP pase al controlador de miniporte un paquete TCP/IP en el que el controlador de miniporte realizará tareas de suma de comprobación, el transporte TCP/IP actualiza la estructura de NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO asociada a la estructura de NET_BUFFER_LIST . En concreto, el transporte TCP/IP establece la marca IsIPv4 o IsIPv6 para indicar que el paquete de envío es un paquete IPv4 o IPv6.

yySi el transporte TCP/IP no establece la marca IsIPv4 o IsIPv6 , el controlador de miniporte no debe realizar tareas de suma de comprobación en el paquete. Si el transporte TCP/IP establece la marca IsIPv4 o IsIPv6 , también establece las marcas adecuadas necesarias para indicar las sumas de comprobación que el controlador de miniporte debe calcular para el paquete. Para IPv4, esto incluye las marcas IpHeaderChecksum, TcpChecksum o UdpChecksum . Para IPv6, esto incluye las marcas TcpChecksum o UdpChecksum . Además, para los paquetes TCP, el transporte TCP/IP establece el campo TcpHeaderOffset cuando se establece la marca IsIPv4 o IPv6 . El transporte no establece este campo para los paquetes UDP.

Antes de indicar un paquete TCP/IP de recepción en el que realiza tareas de suma de comprobación, un controlador de minipuerto establece las marcas XxxChecksumFailed o XxxChecksumSucceeded adecuadas en la estructura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO .

Nota La descarga de suma de comprobación está deshabilitada hasta que el miniporte recibe OID_OFFLOAD_ENCAPSULATION. Después de recibir este OID, se permite que el miniporte comience a validar las sumas de comprobación en algunos paquetes recibidos. El miniporte no es necesario para validar la suma de comprobación en cada paquete; Si las marcas XxxChecksumFailed y XxxChecksumSucceeded están claras, el sistema operativo volverá a validar la suma de comprobación en el software. Este comportamiento es independiente de los requisitos de certificación del controlador WHCP, que pueden requerir que el miniporte valide la suma de comprobación en todos los paquetes, ya que es posible que otros controladores de protocolo del sistema no tengan un mecanismo de reserva.
 
Para obtener la estructura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO , un controlador debe llamar a la macro NET_BUFFER_LIST_INFO con un _Id de TcpIpChecksumNetBufferListInfo.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con NDIS 6.0 y versiones posteriores.
Encabezado ndis/nblchecksum.h (include ndis.h)

Consulte también

Indica segmentos fusionados

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO