Share via


NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO struttura (ndis/nblchecksum.h)

La struttura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO specifica le informazioni usate per l'offload delle attività checksum dal trasporto TCP/IP a una scheda di interfaccia di rete. La struttura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO fa parte delle informazioni NET_BUFFER_LIST (dati fuori banda) associati a una struttura NET_BUFFER_LIST .

Sintassi

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;

Members

Transmit

Struttura che contiene i membri seguenti:

Transmit.IsIPv4

Impostato dal trasporto TCP/IP per indicare che il pacchetto di invio contiene indirizzi IPv4.

Transmit.IsIPv6

Impostato dal trasporto TCP/IP per indicare che il pacchetto di invio contiene indirizzi IPv6.

Transmit.TcpChecksum

Impostato dal trasporto TCP/IP per indicare che la scheda di interfaccia di rete deve calcolare il checksum TCP del pacchetto.

Transmit.UdpChecksum

Impostare dal trasporto TCP/IP per indicare che la scheda di interfaccia di rete deve calcolare il checksum UDP del pacchetto.

Transmit.IpHeaderChecksum

Impostato dal trasporto TCP/IP per indicare che la scheda di interfaccia di rete deve calcolare il checksum IP per la prima intestazione IP nel pacchetto. Se il pacchetto contiene sia un'intestazione IP del tunnel che un'intestazione IP di trasporto, la scheda di interfaccia di rete deve calcolare il checksum per entrambe le intestazioni IP.

Transmit.Reserved

Riservato per NDIS.

Transmit.TcpHeaderOffset

Offset, in byte, dell'intestazione TCP dall'inizio del pacchetto per i pacchetti TCP. I driver Miniport possono usare TcpHeaderOffset per determinare la posizione dell'intestazione TCP in modo che non debbano analizzare l'intestazione MAC e IP.

Receive

Struttura che contiene i membri seguenti:

Receive.TcpChecksumFailed

Impostato dal driver miniport per indicare che il checksum TCP calcolato dalla scheda di interfaccia di rete non corrisponde al checksum nell'intestazione TCP del pacchetto di ricezione.

Receive.UdpChecksumFailed

Impostato dal driver miniport per indicare che il checksum UDP calcolato dalla scheda di interfaccia di rete non corrisponde al checksum nell'intestazione UDP del pacchetto di ricezione.

Receive.IpChecksumFailed

Impostato dal driver miniport per indicare che il checksum IP calcolato dalla scheda di interfaccia di rete non corrisponde al checksum nella prima intestazione IP del pacchetto di ricezione. Se il pacchetto di ricezione contiene sia un'intestazione IP del tunnel che un'intestazione IP di trasporto, la scheda di interfaccia di rete convalida il checksum per entrambe le intestazioni IP.

Nota Per i pacchetti incapsulati con intestazione IPv4 (esterna) e un'intestazione IPv4 di trasporto (interno), il driver miniport deve impostare questo flag se una delle convalida del checksum dell'intestazione IP non è riuscita.
 

Receive.TcpChecksumSucceeded

Impostato dal driver miniport per indicare che il checksum TCP calcolato dalla scheda di interfaccia di rete corrisponde al checksum nell'intestazione TCP del pacchetto di ricezione.

Receive.UdpChecksumSucceeded

Impostare dal driver miniport per indicare che il checksum UDP calcolato dalla scheda di interfaccia di rete corrispondeva al checksum nell'intestazione UDP del pacchetto di ricezione.

Receive.IpChecksumSucceeded

Impostato dal driver miniport per indicare che il checksum IP calcolato dalla scheda di interfaccia di rete corrisponde al checksum nella prima intestazione IP del pacchetto di ricezione. Se il pacchetto di ricezione contiene sia un'intestazione IP del tunnel che un'intestazione IP di trasporto, la scheda di interfaccia di rete convalida il checksum per entrambe le intestazioni IP.

Nota Per i pacchetti incapsulati con intestazione IPv4 (esterna) e un'intestazione IPv4 di trasporto (interno), il driver miniport deve impostare questo flag solo se entrambe le convalida del checksum dell'intestazione IP hanno avuto esito positivo.
 

Receive.Loopback

NDIS usa questo bit. Il driver miniport non deve esaminare o impostare questo bit; il driver miniport deve solo ignorare questo bit.

Receive.TcpChecksumValueInvalid

Un driver miniport che supporta Il coalescing del segmento di ricezione imposta questo flag per indicare che il checksum dell'intestazione TCP è stato convalidato dalla scheda di interfaccia di rete, ma il valore checksum dell'intestazione TCP nel pacchetto non è valido. Per altre informazioni, vedere Indicazione di segmenti di carbone.

I driver miniport che non supportano RSC devono impostare questo flag su zero.

Nota Questo flag è supportato in NDIS 6.30 e versioni successive dei driver miniport in Windows 8, Windows Server 2012 e versioni successive.
 

Receive.IpChecksumValueInvalid

Un driver miniport che supporta RSC imposta questo flag per indicare che per un pacchetto IPv4, il checksum dell'intestazione IP è stato convalidato dalla scheda di interfaccia di rete, ma il valore checksum dell'intestazione IP nel pacchetto non è valido. Per un pacchetto costituito sia da un tunnel che da un'intestazione IP di trasporto, questo bit è applicabile solo all'intestazione IP del tunnel. Per altre informazioni, vedere Indicazione di segmenti di carbone.

I driver miniport che non supportano RSC devono impostare questo flag su zero.

Nota Questo flag è supportato in NDIS 6.30 e versioni successive dei driver miniport in Windows 8, Windows Server 2012 e versioni successive.
 

Value

Versione PVOID delle informazioni sul checksum. I driver miniport possono usare questo membro per accedere alle informazioni non elaborate anziché ai campi specifici.

Commenti

La struttura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO specifica informazioni usate per l'offload delle attività checksum dal trasporto TCP/IP a una scheda di interfaccia di rete. La struttura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO fa parte delle informazioni NET_BUFFER_LIST (dati fuori banda) associati a una struttura NET_BUFFER_LIST .

Prima che il trasporto TCP/IP passi al driver miniport un pacchetto TCP/IP in cui il driver miniport eseguirà attività checksum, il trasporto TCP/IP aggiorna la struttura di NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO associata alla struttura NET_BUFFER_LIST . In particolare, il trasporto TCP/IP imposta il flag IsIPv4 o IsIPv6 per indicare che il pacchetto di invio è un pacchetto IPv4 o IPv6.

yYIf il trasporto TCP/IP non imposta il flag IsIPv4 o IsIPv6 , il driver miniport non deve eseguire attività checksum nel pacchetto. Se il trasporto TCP/IP imposta il flag IsIPv4 o IsIPv6 , imposta anche i flag appropriati necessari per indicare quali checksum il driver miniport deve calcolare per il pacchetto. Per IPv4, questo include i flag IpHeaderChecksum, TcpChecksum o UdpChecksum. Per IPv6, questo include i flag TcpChecksum o UdpChecksum . Inoltre, per i pacchetti TCP, il trasporto TCP/IP imposta il campo TcpHeaderOffset quando viene impostato il flag IsIPv4 o IPv6 . Il trasporto non imposta questo campo per i pacchetti UDP.

Prima di indicare un pacchetto TCP/IP di ricezione in cui esegue attività checksum, un driver miniport imposta i flag XxxChecksumFailed o XxxChecksumSucceeded nella struttura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO .

Nota L'offload checksum non viene disabilitato finché il miniport riceve OID_OFFLOAD_ENCAPSULATION. Dopo aver ricevuto questo OID, il miniport è quindi autorizzato ad avviare la convalida dei checksum in alcuni pacchetti ricevuti. Il miniport non è necessario per convalidare il checksum su ogni pacchetto; se i flagXxx ChecksumFailed e XxxChecksumSucceeded sono chiari, il sistema operativo tornerà a convalidare il checksum nel software. Questo comportamento è indipendente dai requisiti di certificazione dei driver WHCP, che possono richiedere al miniport di convalidare il checksum su tutti i pacchetti come altri driver di protocollo nel sistema potrebbe non avere un meccanismo di fallback.
 
Per ottenere la struttura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO , un driver deve chiamare la macro NET_BUFFER_LIST_INFO con un _Id di TcpIpChecksumNetBufferListInfo.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Intestazione ndis/nblchecksum.h (includere ndis.h)

Vedi anche

Indicazione dei segmenti di coalescing

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO