Bagikan melalui


NDIS_TCP_OFFLOAD_SEND_COMPLETE fungsi panggilan balik (ndischimney.h)

[Fitur offload cerobong TCP tidak digunakan lagi dan tidak boleh digunakan.]

Target offload memanggil fungsi NdisTcpOffloadSendComplete untuk menyelesaikan satu atau beberapa permintaan pengiriman yang dibuat ke fungsi MiniportTcpOffloadSend dari target offload.

Sintaks

NDIS_TCP_OFFLOAD_SEND_COMPLETE NdisTcpOffloadSendComplete;

void NdisTcpOffloadSendComplete(
  [in] IN NDIS_HANDLE NdisMiniportHandle,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

Parameter

[in] NdisMiniportHandle

Handel yang diperoleh target offload dalam panggilan sebelumnya ke Fungsi NdisMRegisterMiniportDriver .

[in] NetBufferList

Penunjuk ke struktur NET_BUFFER_LIST . Struktur ini bisa menjadi struktur yang berdiri sendiri atau struktur pertama dalam daftar struktur NET_BUFFER_LIST yang ditautkan. Target offload memperoleh struktur ini dalam satu atau beberapa panggilan ke Fungsi MiniportTcpOffloadSend .

Nilai kembali

Tidak ada

Keterangan

Untuk meningkatkan performa sistem, target offload dapat membuat daftar tertaut yang berisi struktur NET_BUFFER_LIST dari beberapa panggilan ke fungsi MiniportTcpOffloadSend . Driver kemudian dapat meneruskan daftar tertaut tersebut dalam satu panggilan ke fungsi NdisTcpOffloadSendComplete .

Sebelum menyelesaikan satu atau beberapa permintaan pengiriman, target offload harus melakukan hal berikut untuk setiap struktur NET_BUFFER_LIST yang diteruskannya ke fungsi NdisTcpOffloadSendComplete :

  • Tulis nilai status ke anggota Status :
    • NDIS_STATUS_SUCCESS menunjukkan bahwa semua data yang terkait dengan NET_BUFFER_LIST berhasil dikirim oleh target offload dan bahwa target offload yang diterima dari host jarak jauh merupakan pengakuan untuk semua data yang dikirimkan. Perhatikan bahwa ini berbeda dari fungsi pengiriman non-offload, MiniportSendNetBufferLists, yang tidak memantau pengakuan.
    • Nilai status selain NDIS_STATUS_SUCCESS--misalnya, nilai status NDIS_STATUS_REQUEST_ABORTED atau NDIS_STATUS_UPLOAD_IN_PROGRESS--menunjukkan bahwa data pengiriman tidak berhasil diakui. Target offload mungkin atau mungkin belum mengirim data. Target offload harus gagal dalam operasi pengiriman untuk semua struktur NET_BUFFER_LIST berikutnya dalam daftar yang ditautkan tanpa mengirim data lagi yang terkait dengan struktur ini. Target offload menulis nilai status NDIS_STATUS_UPLOAD_IN_PROGRESS ketika offload koneksi TCP tempat data akan dikirim dihentikan. Dalam hal ini, tumpukan host mengantre dan memproses data TCP. Target offload menulis nilai status NDIS_STATUS_REQUEST_ABORTED jika telah menerima segmen RST pada koneksi TCP tempat data dikirim. Dalam hal ini, tumpukan host tidak memproses data TCP.
    • Target offload harus menyelesaikan pengiriman parsial untuk, paling banyak, satu struktur NET_BUFFER_LIST dalam daftar tertaut. Target offload menulis nilai status selain NDIS_STATUS_SUCCESS--misalnya, nilai status NDIS_STATUS_ABORTED atau NDIS_STATUS_UPLOAD_IN_PROGRESS--ke struktur NET_BUFFER_LIST tersebut.
    • Jika driver perantara tidak dapat mengalokasikan memori untuk menyebarluaskan operasi pengiriman ke target offload yang mendasar, driver menulis nilai status NDIS_STATUS_REQUEST_UPLOAD ke struktur NET_BUFFER_LIST pertama dalam daftar yang ditautkan dan NDIS_STATUS_UPLOAD_REQUESTED ke semua struktur NET_BUFFER_LIST berikutnya dalam daftar yang ditautkan. Driver perantara tidak boleh menyebarluaskan struktur NET_BUFFER_LIST ke target offload yang mendasar. Tumpukan host akan melakukan operasi pengiriman.
  • Tentukan jumlah byte data yang dikirim. Target offload melakukan ini dengan memanggil makro NET_BUFFER_LIST_INFO dengan idTcpOffloadBytesTransferred.
  • Memanggil Fungsi NdisAdvanceNetBufferDataStart untuk setiap struktur NET_BUFFER yang terkait dengan struktur NET_BUFFER_LIST. Parameter NetBuffer yang diteruskan ke fungsi NdisAdvanceNetBufferDataStart harus menunjuk ke struktur NET_BUFFER. Parameter DataOffsetDelta harus menentukan jumlah byte data dari struktur NET_BUFFER yang ditransmisikan oleh target offload dan yang diakui oleh host jarak jauh. Parameter FreeMdl adalah NULL.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header ndischimney.h (termasuk Ndischimney.h)
IRQL Tingkat apa pun

Lihat juga

MiniportSendNetBufferLists

MiniportTcpOffloadSend

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver