struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO (ndis/nblchecksum.h)

Struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO menentukan informasi yang digunakan dalam membongkar tugas checksum dari transportasi TCP/IP ke NIC. Struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO adalah bagian dari informasi NET_BUFFER_LIST (data di luar band) yang terkait dengan struktur NET_BUFFER_LIST .

Sintaks

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;

Anggota

Transmit

Struktur yang berisi anggota berikut:

Transmit.IsIPv4

Atur oleh transportasi TCP/IP untuk menunjukkan bahwa paket kirim berisi alamat IPv4.

Transmit.IsIPv6

Atur oleh transportasi TCP/IP untuk menunjukkan bahwa paket kirim berisi alamat IPv6.

Transmit.TcpChecksum

Diatur oleh transportasi TCP/IP untuk menunjukkan bahwa NIC harus menghitung checksum TCP paket.

Transmit.UdpChecksum

Diatur oleh transportasi TCP/IP untuk menunjukkan bahwa NIC harus menghitung checksum UDP paket.

Transmit.IpHeaderChecksum

Atur oleh transportasi TCP/IP untuk menunjukkan bahwa NIC harus menghitung checksum IP untuk header IP pertama dalam paket. Jika paket berisi header IP terowongan dan header IP transportasi, NIC harus menghitung checksum untuk kedua header IP.

Transmit.Reserved

Dicadangkan untuk NDIS.

Transmit.TcpHeaderOffset

Offset, dalam byte, dari header TCP dari awal paket untuk paket TCP. Driver Miniport dapat menggunakan TcpHeaderOffset untuk menentukan lokasi header TCP sehingga tidak perlu mengurai MAC dan header IP.

Receive

Struktur yang berisi anggota berikut:

Receive.TcpChecksumFailed

Diatur oleh driver miniport untuk menunjukkan bahwa checksum TCP yang dihitung oleh NIC tidak cocok dengan checksum di header TCP paket penerima.

Receive.UdpChecksumFailed

Diatur oleh driver miniport untuk menunjukkan bahwa checksum UDP yang dihitung oleh NIC tidak cocok dengan checksum di header UDP paket penerima.

Receive.IpChecksumFailed

Diatur oleh driver miniport untuk menunjukkan bahwa checksum IP yang dihitung oleh NIC tidak cocok dengan checksum di header IP pertama paket penerima. Jika paket terima berisi header IP terowongan dan header IP transportasi, NIC memvalidasi checksum untuk kedua header IP.

Catatan Untuk paket enkapsulasi yang memiliki header IPv4 terowongan (luar) dan header IPv4 transportasi (dalam), driver miniport harus mengatur bendera ini jika salah satu validasi checksum header IP gagal.
 

Receive.TcpChecksumSucceeded

Atur oleh driver miniport untuk menunjukkan bahwa checksum TCP yang dihitung oleh NIC cocok dengan checksum di header TCP paket penerima.

Receive.UdpChecksumSucceeded

Diatur oleh driver miniport untuk menunjukkan bahwa checksum UDP yang dihitung oleh NIC cocok dengan checksum di header UDP paket penerima.

Receive.IpChecksumSucceeded

Diatur oleh driver miniport untuk menunjukkan bahwa checksum IP yang dihitung oleh NIC cocok dengan checksum di header IP pertama paket penerima. Jika paket terima berisi header IP terowongan dan header IP transportasi, NIC memvalidasi checksum untuk kedua header IP.

Catatan Untuk paket enkapsulasi yang memiliki header IPv4 terowongan (luar) dan header IPv4 transportasi (dalam), driver miniport harus mengatur bendera ini hanya jika kedua validasi checksum header IP berhasil.
 

Receive.Loopback

NDIS menggunakan bit ini. Driver miniport tidak boleh memeriksa atau mengatur bit ini; driver miniport seharusnya hanya mengabaikan bit ini.

Receive.TcpChecksumValueInvalid

Driver miniport yang mendukung Receive Segment Coalescing (RSC) mengatur bendera ini untuk menunjukkan bahwa checksum header TCP divalidasi oleh NIC tetapi nilai checksum header TCP dalam paket tidak valid. Untuk informasi selengkapnya, lihat Menunjukkan Segmen Coalesced.

Driver miniport yang tidak mendukung RSC harus mengatur bendera ini ke nol.

Catatan Bendera ini didukung di driver miniport NDIS 6.30 dan yang lebih baru di Windows 8, Windows Server 2012, dan yang lebih baru.
 

Receive.IpChecksumValueInvalid

Driver miniport yang mendukung RSC mengatur bendera ini untuk menunjukkan bahwa untuk paket IPv4, checksum header IP divalidasi oleh NIC tetapi nilai checksum header IP dalam paket tidak valid. Untuk paket yang terdiri dari terowongan dan header IP transportasi, bit ini hanya berlaku untuk header IP terowongan. Untuk informasi selengkapnya, lihat Menunjukkan Segmen Coalesced.

Driver miniport yang tidak mendukung RSC harus mengatur bendera ini ke nol.

Catatan Bendera ini didukung di driver miniport NDIS 6.30 dan yang lebih baru di Windows 8, Windows Server 2012, dan yang lebih baru.
 

Value

Versi PVOID dari informasi checksum. Driver Miniport dapat menggunakan anggota ini untuk mengakses informasi mentah alih-alih bidang tertentu.

Keterangan

Struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO menentukan informasi yang digunakan dalam membongkar tugas checksum dari transportasi TCP/IP ke NIC. Struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO adalah bagian dari informasi NET_BUFFER_LIST (data di luar band) yang terkait dengan struktur NET_BUFFER_LIST .

Sebelum transportasi TCP/IP lolos ke driver miniport paket TCP/IP tempat driver miniport akan melakukan tugas checksum, transportasi TCP/IP memperbarui struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO yang terkait dengan struktur NET_BUFFER_LIST . Secara khusus, transportasi TCP/IP menetapkan bendera IsIPv4 atau IsIPv6 untuk menunjukkan bahwa paket kirim adalah paket IPv4 atau IPv6.

yyJika transportasi TCP/IP tidak mengatur bendera IsIPv4 atau IsIPv6 , driver miniport tidak boleh melakukan tugas checksum pada paket. Jika transportasi TCP/IP menetapkan bendera IsIPv4 atau IsIPv6 , itu juga mengatur bendera yang sesuai yang diperlukan untuk menunjukkan checksum mana yang harus dihitung driver miniport untuk paket. Untuk IPv4, ini termasuk bendera IpHeaderChecksum, TcpChecksum, atau UdpChecksum . Untuk IPv6, ini termasuk bendera TcpChecksum atau UdpChecksum . Selain itu, untuk paket TCP, transportasi TCP/IP mengatur bidang TcpHeaderOffset saat bendera IsIPv4 atau IPv6 diatur. Transportasi tidak mengatur bidang ini untuk paket UDP.

Sebelum menunjukkan paket TCP/IP penerima tempatnya melakukan tugas checksum, driver miniport mengatur bendera XxxChecksumFailed atau XxxChecksumSucceeded yang sesuai dalam struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO .

Catatan Offload checksum dinonaktifkan hingga miniport menerima OID_OFFLOAD_ENCAPSULATION. Setelah menerima OID ini, miniport kemudian diizinkan untuk mulai memvalidasi checksum pada beberapa paket yang diterima. Miniport tidak diperlukan untuk memvalidasi checksum pada setiap paket; jika bendera XxxChecksumFailed dan XxxChecksumSucceeded jelas, OS akan kembali memvalidasi checksum dalam perangkat lunak. Perilaku ini tidak bergantung pada persyaratan sertifikasi driver WHCP, yang mungkin mengharuskan miniport untuk memvalidasi checksum pada semua paket karena driver protokol lain pada sistem mungkin tidak memiliki mekanisme fallback.
 
Untuk mendapatkan struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO , driver harus memanggil makro NET_BUFFER_LIST_INFO dengan _IdTcpIpChecksumNetBufferListInfo.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung di NDIS 6.0 dan yang lebih baru.
Header ndis/nblchecksum.h (sertakan ndis.h)

Lihat juga

Menunjukkan Segmen Yang Dikoalesced

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO