NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO構造体 (ndis/nblchecksum.h)
NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO構造体は、TCP/IP トランスポートから NIC へのチェックサム タスクのオフロードに使用される情報を指定します。 NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO構造体は、NET_BUFFER_LIST構造体に関連付けられているNET_BUFFER_LIST情報 (帯域外データ) の一部です。
構文
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;
メンバー
Transmit
次のメンバーを含む構造体。
Transmit.IsIPv4
送信パケットに IPv4 アドレスが含まれていることを示すように TCP/IP トランスポートによって設定されます。
Transmit.IsIPv6
送信パケットに IPv6 アドレスが含まれていることを示す TCP/IP トランスポートによって設定されます。
Transmit.TcpChecksum
TCP/IP トランスポートによって設定され、NIC がパケットの TCP チェックサムを計算する必要があることを示します。
Transmit.UdpChecksum
TCP/IP トランスポートによって設定され、NIC がパケットの UDP チェックサムを計算する必要があることを示します。
Transmit.IpHeaderChecksum
TCP/IP トランスポートによって設定され、NIC がパケット内の最初の IP ヘッダーの IP チェックサムを計算する必要があることを示します。 パケットにトンネル IP ヘッダーとトランスポート IP ヘッダーの両方が含まれている場合、NIC は両方の IP ヘッダーのチェックサムを計算する必要があります。
Transmit.Reserved
NDIS 用に予約されています。
Transmit.TcpHeaderOffset
TCP パケットのパケットの先頭からの TCP ヘッダーのオフセット (バイト単位)。 ミニポート ドライバーは、 TCPHeaderOffset を使用して、MAC ヘッダーと IP ヘッダーを解析する必要がないように、TCP ヘッダーの場所を決定できます。
Receive
次のメンバーを含む構造体。
Receive.TcpChecksumFailed
NIC によって計算された TCP チェックサムが受信パケットの TCP ヘッダーのチェックサムと一致しなかったことを示すようにミニポート ドライバーによって設定されます。
Receive.UdpChecksumFailed
NIC によって計算された UDP チェックサムが受信パケットの UDP ヘッダーのチェックサムと一致しなかったことを示すようにミニポート ドライバーによって設定されます。
Receive.IpChecksumFailed
NIC によって計算された IP チェックサムが、受信パケットの最初の IP ヘッダーのチェックサムと一致しなかったことを示すようにミニポート ドライバーによって設定されます。 受信パケットにトンネル IP ヘッダーとトランスポート IP ヘッダーの両方が含まれている場合、NIC は両方の IP ヘッダーのチェックサムを検証します。
Receive.TcpChecksumSucceeded
NIC によって計算された TCP チェックサムが受信パケットの TCP ヘッダーのチェックサムと一致することを示すようにミニポート ドライバーによって設定されます。
Receive.UdpChecksumSucceeded
NIC によって計算された UDP チェックサムが受信パケットの UDP ヘッダーのチェックサムと一致することを示すようにミニポート ドライバーによって設定されます。
Receive.IpChecksumSucceeded
NIC によって計算された IP チェックサムが、受信パケットの最初の IP ヘッダーのチェックサムと一致することを示すようにミニポート ドライバーによって設定されます。 受信パケットにトンネル IP ヘッダーとトランスポート IP ヘッダーの両方が含まれている場合、NIC は両方の IP ヘッダーのチェックサムを検証します。
Receive.Loopback
NDIS では、このビットが使用されます。 ミニポート ドライバーは、このビットを調べたり設定したりすることはできません。ミニポート ドライバーは、このビットを無視する必要があります。
Receive.TcpChecksumValueInvalid
受信セグメント結合 (RSC) をサポートするミニポート ドライバーは、TCP ヘッダー チェックサムが NIC によって検証されたが、パケット内の TCP ヘッダー チェックサム値が無効であることを示すように、このフラグを設定します。 詳細については、「 結合セグメントの指定」を参照してください。
RSC をサポートしていないミニポート ドライバーは、このフラグを 0 に設定する必要があります。
Receive.IpChecksumValueInvalid
RSC をサポートするミニポート ドライバーは、IPv4 パケットの場合、IP ヘッダー チェックサムが NIC によって検証されたが、パケット内の IP ヘッダー チェックサム値が無効であることを示すように、このフラグを設定します。 トンネルとトランスポート IP ヘッダーの両方で構成されるパケットの場合、このビットはトンネル IP ヘッダーにのみ適用されます。 詳細については、「 結合セグメントの指定」を参照してください。
RSC をサポートしていないミニポート ドライバーは、このフラグを 0 に設定する必要があります。
Value
チェックサム情報の PVOID バージョン。 ミニポート ドライバーは、このメンバーを使用して、特定のフィールドではなく生の情報にアクセスできます。
注釈
NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO構造体は、TCP/IP トランスポートから NIC へのチェックサム タスクのオフロードに使用される情報を指定します。 NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO構造体は、NET_BUFFER_LIST構造体に関連付けられているNET_BUFFER_LIST情報 (帯域外データ) の一部です。
TCP/IP トランスポートは、ミニポート ドライバーがチェックサム タスクを実行する TCP/IP パケットをミニポート ドライバーに渡す前に、TCP/IP トランスポートは、NET_BUFFER_LIST構造体に関連付けられているNDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO構造体を更新します。 具体的には、TCP/IP トランスポートは、送信パケットが IPv4 または IPv6 パケットであることを示す IsIPv4 または IsIPv6 フラグを設定します。
yy TCP/IP トランスポートで IsIPv4 フラグまたは IsIPv6 フラグが設定されていない場合、ミニポート ドライバーはパケットに対してチェックサム タスクを実行しないでください。 TCP/IP トランスポートが IsIPv4 または IsIPv6 フラグを設定する場合は、ミニポート ドライバーがパケットに対して計算する必要があるチェックサムを示すために必要な適切なフラグも設定します。 IPv4 の場合、これには IpHeaderChecksum、 TcpChecksum、または UdpChecksum フラグが 含まれます。 IPv6 の場合、これには TcpChecksum または UdpChecksum フラグが 含まれます。 さらに、TCP パケットの場合、ISIPv4 または IPv6 フラグが設定されている場合、TCP/IP トランスポートによって TcpHeaderOffset フィールドが設定されます。 トランスポートでは、UDP パケットに対してこのフィールドは設定されません。
チェックサム タスクを実行する受信 TCP/IP パケットを示す前に、ミニポート ドライバーは、適切な XxxChecksumFailed または XxxChecksumSucceeded フラグ をNDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO 構造体に設定します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.0 以降でサポートされています。 |
Header | ndis/nblchecksum.h (ndis.h を含む) |