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.
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.
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.
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.
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 .
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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de