W_TCP_OFFLOAD_FORWARD_HANDLER fungsi panggilan balik (ndischimney.h)
[Fitur offload cerobong TCP tidak digunakan lagi dan tidak boleh digunakan.]
NDIS memanggil fungsi MiniportTcpOffloadForward untuk meneruskan segmen TCP yang diterima yang tidak diakui ke target offload.
Sintaks
W_TCP_OFFLOAD_FORWARD_HANDLER WTcpOffloadForwardHandler;
NDIS_STATUS WTcpOffloadForwardHandler(
[in] IN NDIS_HANDLE MiniportAdapterContext,
[in] IN PVOID MiniportOffloadContext,
[in] IN PNET_BUFFER_LIST NetBufferList
)
{...}
Parameter
[in] MiniportAdapterContext
Handel ke area konteks yang dialokasikan target offload tempat target offload mempertahankan informasi status tentang instans adaptor ini. Driver miniport menyediakan handel ini ke NDIS ketika dipanggil NdisMSetMiniportAttributes dari Fungsi MiniportInitializeEx .
[in] MiniportOffloadContext
Penunjuk ke lokasi memori yang berisi nilai PVOID. Nilai PVOID ini mereferensikan konteks offload miniport yang berisi objek status untuk koneksi TCP tempat segmen TCP diteruskan. Target offload menyediakan nilai PVOID ini ketika membongkar objek status koneksi TCP.
[in] NetBufferList
Penunjuk ke struktur NET_BUFFER_LIST . Struktur ini mungkin struktur yang berdiri sendiri atau struktur pertama dalam daftar struktur NET_BUFFER_LIST yang ditautkan. Setiap struktur NET_BUFFER_LIST dalam daftar menjelaskan satu struktur NET_BUFFER . Setiap NET_BUFFER struktur memetakan ke rantai daftar deskriptor memori (MDL). MDL yang terkait dengan struktur NET_BUFFER berisi satu dan hanya satu segmen TCP yang sedang diteruskan ke target offload. Byte pertama dari MDL pertama adalah byte pertama dari header TCP. Struktur NET_BUFFER_LIST dan terkait terkunci sehingga mereka tetap tinggal dalam memori fisik. Namun, mereka tidak dipetakan ke dalam memori sistem.
Mengembalikan nilai
NDIS_STATUS_PENDING adalah satu-satunya nilai pengembalian yang diizinkan. Target offload selalu menyelesaikan permintaan pengalihan secara asinkron dengan memanggil Fungsi NdisTcpOffloadForwardComplete .
Keterangan
Tumpukan host meneruskan satu atau beberapa segmen TCP yang telah diterimanya tetapi tidak diakui dalam situasi berikut:
- Tumpukan host menerima segmen pada koneksi TCP yang sedang diturunkan ke target offload. Karena koneksi tidak sepenuhnya terbongkar, target offload tidak dapat memproses segmen TCP pada saat itu.
- Tumpukan host berada dalam sistem multihomed yang menerima segmen pada antarmuka jaringan selain yang membongkar koneksi TCP.
- Target offload sebelumnya menunjukkan paket yang diterima yang memiliki set opsi IP dan/atau yang merupakan fragmen yang perlu disusun ulang. Setelah memproses opsi IP dan/atau berhasil menyusun ulang paket, tumpukan host meneruskan segmen TCP ke target offload.
- Koneksi itu sedang dilepas. Tumpukan host selalu menunggu offload koneksi selesai sebelum meneruskan paket apa pun untuk koneksi tersebut. Tumpukan host meneruskan segmen TCP sesegera mungkin setelah offload koneksi selesai. Namun, tidak ada batas waktu untuk meneruskan segmen tersebut.
- Offload koneksi tersebut sedang dihentikan. Dalam hal ini, tumpukan host menyangga data hingga penghentian offload selesai dan kemudian memproses segmen.
Saat meneruskan segmen TCP, tumpukan host mentransfer satu segmen TCP per struktur NET_BUFFER. Tumpukan host hanya mengaitkan satu struktur NET_BUFFER, dan oleh karena itu satu segmen TCP yang diteruskan, dengan setiap struktur NET_BUFFER_LIST dalam daftar yang ditautkan.
Tumpukan host mengalokasikan NET_BUFFER_LIST dan struktur terkait yang diteruskan NDIS ke fungsi MiniportTcpOffloadForward . Target offload memiliki sumber daya ini sampai meneruskannya ke Fungsi NdisTcpOffloadForwardComplete . Meskipun memiliki sumber daya ini, target offload bebas untuk mengantrekannya untuk diproses.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | ndischimney.h (termasuk Ndischimney.h) |
IRQL | Tingkat apa pun |