Freigeben über


NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO Struktur (ndis/nblchecksum.h)

Die NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO Struktur gibt Informationen an, die beim Entladen von Prüfsummenaufgaben vom TCP/IP-Transport in eine NIC verwendet werden. Die NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO Struktur ist Teil der NET_BUFFER_LIST Informationen (Out-of-Band-Daten), die einer NET_BUFFER_LIST Struktur zugeordnet sind.

Syntax

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;

Angehörige

Transmit

Eine Struktur, die die folgenden Elemente enthält:

Transmit.IsIPv4

Legen Sie vom TCP/IP-Transport fest, um anzugeben, dass das Sendepaket IPv4-Adressen enthält.

Transmit.IsIPv6

Legen Sie vom TCP/IP-Transport fest, um anzugeben, dass das Sendepaket IPv6-Adressen enthält.

Transmit.TcpChecksum

Legen Sie vom TCP/IP-Transport fest, um anzugeben, dass die NIC die TCP-Prüfsumme des Pakets berechnen soll.

Transmit.UdpChecksum

Legen Sie vom TCP/IP-Transport fest, um anzugeben, dass die NIC die UDP-Prüfsumme des Pakets berechnen soll.

Transmit.IpHeaderChecksum

Legen Sie vom TCP/IP-Transport fest, um anzugeben, dass die NIC die IP-Prüfsumme für den ersten IP-Header im Paket berechnen soll. Wenn das Paket sowohl einen Tunnel-IP-Header als auch einen Transport-IP-Header enthält, sollte die NIC die Prüfsumme für beide IP-Header berechnen.

Transmit.Reserved

Reserviert für NDIS.

Transmit.TcpHeaderOffset

Der Offset (in Bytes) des TCP-Headers vom Anfang des Pakets für TCP-Pakete. Miniport-Treiber können TcpHeaderOffset- verwenden, um den Speicherort des TCP-Headers zu bestimmen, sodass sie den MAC- und IP-Header nicht analysieren müssen.

Receive

Eine Struktur, die die folgenden Elemente enthält:

Receive.TcpChecksumFailed

Legen Sie den Miniporttreiber fest, um anzugeben, dass die von der NIC berechnete TCP-Prüfsumme nicht mit der Prüfsumme im TCP-Header des Empfangspakets übereinstimmte.

Receive.UdpChecksumFailed

Wird vom Miniporttreiber festgelegt, um anzugeben, dass die von der NIC berechnete UDP-Prüfsumme nicht mit der Prüfsumme im UDP-Header des Empfangspakets übereinstimmte.

Receive.IpChecksumFailed

Legen Sie den Miniporttreiber fest, um anzugeben, dass die durch die NIC berechnete IP-Prüfsumme nicht mit der Prüfsumme im ersten IP-Header des Empfangspakets übereinstimmte. Wenn das Empfangspaket sowohl einen Tunnel-IP-Header als auch einen Transport-IP-Header enthält, überprüft die NIC die Prüfsumme für beide IP-Header.

Hinweis Bei gekapselten Paketen, die sowohl einen Tunnel (äußeren) IPv4-Header als auch einen IPv4-Transportheader (inner) aufweisen, sollte der Miniporttreiber dieses Flag festlegen, wenn bei einer der ÜBERPRÜFUNGen der IP-Header-Prüfsumme ein Fehler aufgetreten ist.
 

Receive.TcpChecksumSucceeded

Legen Sie den Miniporttreiber fest, um anzugeben, dass die von der NIC berechnete TCP-Prüfsumme mit der Prüfsumme im TCP-Header des Empfangspakets übereinstimmt.

Receive.UdpChecksumSucceeded

Legen Sie den Miniporttreiber fest, um anzugeben, dass die udp-Prüfsumme, die von der NIC berechnet wird, mit der Prüfsumme im UDP-Header des Empfangspakets übereinstimmt.

Receive.IpChecksumSucceeded

Legen Sie den Miniporttreiber fest, um anzugeben, dass die durch die NIC berechnete IP-Prüfsumme mit der Prüfsumme im ersten IP-Header des Empfangspakets übereinstimmt. Wenn das Empfangspaket sowohl einen Tunnel-IP-Header als auch einen Transport-IP-Header enthält, überprüft die NIC die Prüfsumme für die beiden IP-Header.

Hinweis Bei gekapselten Paketen mit einem Tunnel (äußeren) IPv4-Header und einem IPv4-Transportheader (inner) sollte der Miniporttreiber dieses Flag nur festlegen, wenn beide ÜBERPRÜFUNGen der IP-Header erfolgreich waren.
 

Receive.Loopback

NDIS verwendet dieses Bit. Der Miniporttreiber darf dieses Bit nicht untersuchen oder festlegen; Der Miniporttreiber sollte dieses Bit einfach ignorieren.

Receive.TcpChecksumValueInvalid

Ein Miniporttreiber, der Receive Segment Coalescing (RSC) unterstützt, legt dieses Flag fest, um anzugeben, dass die TCP-Headerprüfsumme von der NIC überprüft wurde, der TCP-Headerprüfsummenwert im Paket jedoch ungültig ist. Weitere Informationen finden Sie unter Angeben von verkohlten Segmenten.

Miniporttreiber, die RSC nicht unterstützen, sollten dieses Kennzeichen auf Null festlegen.

Hinweis Dieses Kennzeichen wird in NDIS 6.30 und höher in Windows 8, Windows Server 2012 und höher unterstützt.
 

Receive.IpChecksumValueInvalid

Ein Miniporttreiber, der RSC unterstützt, legt dieses Flag fest, um anzugeben, dass für ein IPv4-Paket die IP-Headerprüfsumme von der NIC überprüft wurde, der IP-Header-Prüfsummenwert im Paket jedoch ungültig ist. Für ein Paket, das aus einem Tunnel und einem Transport-IP-Header besteht, gilt dieses Bit nur für den Tunnel-IP-Header. Weitere Informationen finden Sie unter Angeben von verkohlten Segmenten.

Miniporttreiber, die RSC nicht unterstützen, sollten dieses Kennzeichen auf Null festlegen.

Hinweis Dieses Kennzeichen wird in NDIS 6.30 und höher in Windows 8, Windows Server 2012 und höher unterstützt.
 

Value

Eine PVOID Version der Prüfsummeninformationen. Miniport-Treiber können dieses Element verwenden, um auf die Rohinformationen anstelle der spezifischen Felder zuzugreifen.

Bemerkungen

Die NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO Struktur gibt Informationen an, die beim Entladen von Prüfsummenaufgaben vom TCP/IP-Transport in eine NIC verwendet werden. Die NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO Struktur ist Teil der NET_BUFFER_LIST Informationen (Out-of-Band-Daten), die einer NET_BUFFER_LIST Struktur zugeordnet sind.

Bevor der TCP/IP-Transport an den Miniporttreiber ein TCP/IP-Paket übergibt, auf dem der Miniporttreiber Prüfsummenaufgaben ausführt, aktualisiert der TCP/IP-Transport die NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO Struktur, die der NET_BUFFER_LIST-Struktur zugeordnet ist. Insbesondere legt der TCP/IP-Transport die IsIPv4 oder IsIPv6- Flag fest, um anzugeben, dass das Sendepaket ein IPv4- oder IPv6-Paket ist.

yyWenn der TCP/IP-Transport weder die IsIPv4- noch IsIPv6--Flag festgelegt, sollte der Miniporttreiber keine Prüfsummenaufgaben für das Paket ausführen. Wenn der TCP/IP-Transport die IsIPv4- oder IsIPv6--Flag festlegt, legt er auch die entsprechenden Flags fest, die erforderlich sind, um anzugeben, welche Prüfsummen der Miniporttreiber für das Paket berechnen soll. Für IPv4 umfasst dies die IpHeaderChecksum-, TcpChecksum-oder UdpChecksum Flags. Für IPv6 umfasst dies die TcpChecksum- oder UdpChecksum- Flags. Darüber hinaus legt der TCP/IP-Transport für TCP-Pakete das TcpHeaderOffset Feld fest, wenn entweder das IsIPv4- oder IPv6- Flag festgelegt ist. Der Transport legt dieses Feld für UDP-Pakete nicht fest.

Bevor sie ein empfangenes TCP/IP-Paket angeben, für das Prüfsummenaufgaben ausgeführt werden, legt ein Miniporttreiber den entsprechenden Xxx-ChecksumFailed oder XxxChecksumSucceeded Flags in der NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO-Struktur fest.

Hinweis Checkum offload deaktiviert ist, bis der Miniport OID_OFFLOAD_ENCAPSULATIONerhält. Nachdem dieser OID empfangen wurde, kann der Miniport mit der Überprüfung der Prüfsummen für einige empfangene Pakete beginnen. Der Miniport ist nicht erforderlich, um die Prüfsumme für jedes Paket zu überprüfen. Wenn sowohl die XxxChecksumFailed als auch XxxChecksumSucceeded Flags deaktiviert sind, fällt das Betriebssystem auf die Überprüfung der Prüfsumme in der Software zurück. Dieses Verhalten ist unabhängig von WHCP-Treiberzertifizierungsanforderungen, die möglicherweise die Miniportüberprüfung der Prüfsumme für alle Pakete erfordern, da andere Protokolltreiber auf dem System möglicherweise keinen Fallbackmechanismus haben.
 
Um die NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO-Struktur abzurufen, sollte ein Treiber das NET_BUFFER_LIST_INFO Makro mit einem _Id von TcpIpChecksumNetBufferListInfoaufrufen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.0 und höher.
Header- ndis/nblchecksum.h (include ndis.h)

Siehe auch

, die zusammengeklammerte Segmente

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO