Share via


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 Auslagern von Prüfsummentasks aus dem 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;

Member

Transmit

Eine -Struktur, die die folgenden Member enthält:

Transmit.IsIPv4

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

Transmit.IsIPv6

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

Transmit.TcpChecksum

Wird durch den TCP/IP-Transport festgelegt, um anzugeben, dass die NIC die TCP-Prüfsumme des Pakets berechnen soll.

Transmit.UdpChecksum

Wird durch den TCP/IP-Transport festgelegt, um anzugeben, dass die NIC die UDP-Prüfsumme des Pakets berechnen soll.

Transmit.IpHeaderChecksum

Legen Sie durch den 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 des TCP-Headers vom Anfang des Pakets für TCP-Pakete in Bytes. Miniporttreiber 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 Member enthält:

Receive.TcpChecksumFailed

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

Receive.UdpChecksumFailed

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

Receive.IpChecksumFailed

Legen Sie vom Miniporttreiber fest, um anzugeben, dass die von der NIC berechnete IP-Prüfsumme nicht 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 beide IP-Header.

Hinweis Bei gekapselten Paketen, die sowohl einen (äußeren) IPv4-Tunnelheader als auch einen (inneren) IPv4-Header aufweisen, sollte der Miniporttreiber dieses Flag festlegen, wenn eine der Überprüfungen der IP-Headerprüfsumme fehlgeschlagen ist.
 

Receive.TcpChecksumSucceeded

Legen Sie vom 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 vom Miniporttreiber fest, um anzugeben, dass die von der NIC berechnete UDP-Prüfsumme mit der Prüfsumme im UDP-Header des Empfangspakets übereinstimmt.

Receive.IpChecksumSucceeded

Legen Sie vom Miniporttreiber fest, um anzugeben, dass die von der 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, die sowohl über einen (äußeren) IPv4-Tunnelheader als auch über einen (inneren) IPv4-Header verfügen, sollte der Miniporttreiber dieses Flag nur festlegen, wenn beide Überprüfungen der IP-Headerprüfsumme 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 RSC (Receive Segment Coalescing) unterstützt, legt dieses Flag fest, um anzugeben, dass die TCP-Headerprüfsumme von der NIC überprüft wurde, aber der TCP-Headerprüfsummenwert im Paket ungültig ist. Weitere Informationen finden Sie unter Angeben von Zusammenführungssegmenten.

Miniporttreiber, die RSC nicht unterstützen, sollten dieses Flag auf 0 festlegen.

Hinweis Dieses Flag wird in NDIS 6.30 und späteren Miniporttreibern 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, aber der Wert der IP-Headerprüfsumme im Paket ungültig ist. Für ein Paket, das sowohl aus einem Tunnel als auch aus einem Transport-IP-Header besteht, gilt dieses Bit nur für den IP-Header des Tunnels. Weitere Informationen finden Sie unter Angeben von Zusammenführungssegmenten.

Miniporttreiber, die RSC nicht unterstützen, sollten dieses Flag auf 0 festlegen.

Hinweis Dieses Flag wird in NDIS 6.30 und späteren Miniporttreibern 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.

Hinweise

Die NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO-Struktur gibt Informationen an, die beim Auslagern von Prüfsummentasks aus dem 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 ein TCP/IP-Paket an den Miniporttreiber übergibt, für das der Miniporttreiber Prüfsummentasks 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 das IsIPv4- oder IsIPv6-Flag fest, um anzugeben, dass das Sendepaket ein IPv4- oder IPv6-Paket ist.

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

Bevor ein TCP/IP-Empfangspaket angegeben wird, für das Prüfsummenaufgaben ausgeführt werden, legt ein Miniporttreiber die entsprechenden XxxChecksumFailed - oder XxxChecksumSucceeded-Flags in der NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO-Struktur fest.

Hinweis Die Prüfsummenauslagerung ist deaktiviert, bis der Miniport OID_OFFLOAD_ENCAPSULATION empfängt. Nachdem diese 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 das Flag XxxChecksumFailed als auch das XxxChecksumSucceeded-Flag eindeutig sind, wird das Betriebssystem auf die Überprüfung der Prüfsumme in der Software zurückgreifen. Dieses Verhalten ist unabhängig von den Anforderungen an die ZERTIFIZIERUNG von WHCP-Treibern, die möglicherweise erfordern, dass der Miniport die Prüfsumme für alle Pakete überprüft, da andere Protokolltreiber im System möglicherweise keinen Fallbackmechanismus aufweisen.
 
Um die NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO-Struktur abzurufen, sollte ein Treiber das NET_BUFFER_LIST_INFO-Makro mit einer _IdtcpIpChecksumNetBufferListInfo aufrufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Kopfzeile ndis/nblchecksum.h (include ndis.h)

Weitere Informationen

Angeben von zusammengeknäselten Segmenten

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO