Fungsi NdisSendNetBufferLists (ndis.h)
Driver protokol memanggil fungsi NdisSendNetBufferLists untuk mengirim data jaringan yang terkandung dalam daftar struktur NET_BUFFER_LIST .
Sintaks
void NdisSendNetBufferLists(
[in] NDIS_HANDLE NdisBindingHandle,
[in] __drv_aliasesMem PNET_BUFFER_LIST NetBufferLists,
[in] NDIS_PORT_NUMBER PortNumber,
[in] ULONG SendFlags
);
Parameter
[in] NdisBindingHandle
Handel yang mengidentifikasi adaptor target. Panggilan sebelumnya ke NdisOpenAdapterEx mengembalikan handel ini.
[in] NetBufferLists
Penunjuk ke daftar struktur NET_BUFFER_LIST yang ditautkan. Setiap struktur NET_BUFFER_LIST menjelaskan daftar struktur NET_BUFFER .
[in] PortNumber
Nomor port yang mengidentifikasi port adaptor miniport. Nomor port default adaptor miniport adalah nol. Driver protokol yang tidak menggunakan port adaptor miniport harus menentukan port default.
[in] SendFlags
Bendera yang menentukan atribut untuk operasi pengiriman. Bendera dapat dikombinasikan dengan operasi OR. Untuk menghapus semua bendera, atur anggota ini ke nol. Fungsi ini mendukung bendera berikut:
NDIS_SEND_FLAGS_DISPATCH_LEVEL
Menentukan bahwa IRQL saat ini DISPATCH_LEVEL. Untuk informasi selengkapnya tentang bendera ini, lihat Pengiriman Pelacakan IRQL.
NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK
Menentukan bahwa NDIS harus memeriksa loopback. Secara default, NDIS tidak mengulang kembali data ke driver yang mengirimkan permintaan pengiriman. Driver yang terlalu berlebihan dapat mengambil alih perilaku ini dengan mengatur bendera ini. Ketika bendera ini diatur, NDIS mengidentifikasi semua struktur NET_BUFFER yang berisi data yang cocok dengan kriteria penerima untuk pengikatan. NDIS menunjukkan struktur NET_BUFFER yang cocok dengan kriteria dengan driver yang terlalu berlebihan. Bendera ini tidak berpengaruh pada pemeriksaan loopback, atau perulangan kembali, pada pengikatan lain.
Nilai kembali
Tidak ada
Keterangan
Setelah driver protokol memanggil NdisSendNetBufferLists, NDIS mengirimkan struktur NET_BUFFER_LIST ke driver yang mendasar Fungsi MiniportSendNetBufferLists .
Driver protokol harus mengalokasikan setiap struktur NET_BUFFER_LIST dari kumpulan dengan memanggil salah satu fungsi berikut:
Driver protokol dapat melakukan pra-alokasi struktur NET_BUFFER_LIST--misalnya, dalam rutinitas DriverEntry-nya . Atau, driver, dapat mengalokasikan struktur tepat sebelum memanggil NdisSendNetBufferLists dan kemudian membebaskannya ketika operasi pengiriman selesai. Ketika NDIS mengembalikan struktur NET_BUFFER_LIST ke ProtocolSendNetBufferListsComplete, driver miniport dapat menyiapkan struktur NET_BUFFER_LIST dan sumber daya terkait untuk digunakan kembali. Menggunakan kembali struktur NET_BUFFER_LIST dapat menghasilkan performa yang lebih baik daripada mengembalikan struktur ke kumpulan dan kemudian mengalokasikannya kembali untuk operasi pengiriman lain.Driver protokol harus mengatur anggota SourceHandle dari setiap struktur NET_BUFFER_LIST ke nilai yang sama dengan yang diteruskannya ke parameter NdisBindingHandle . Handel pengikatan memberikan informasi yang diperlukan NDIS untuk mengembalikan struktur NET_BUFFER_LIST ke driver protokol setelah panggilan driver miniport yang mendasar NdisMSendNetBufferListsComplete.
Sebelum memanggil NdisSendNetBufferLists, driver protokol dapat mengatur informasi yang menyertai permintaan pengiriman dengan makro NET_BUFFER_LIST_INFO . Driver yang mendasar dapat mengambil informasi ini dengan makro NET_BUFFER_LIST_INFO.
Sebelum driver protokol memanggil NdisSendNetBufferLists dengan daftar struktur NET_BUFFER_LIST, driver protokol harus memastikan bahwa struktur NET_BUFFER_LIST disiapkan dalam urutan bahwa data jaringan harus dikirim melalui kawat.
Segera setelah driver protokol memanggil NdisSendNetBufferLists, ia melepaskan kepemilikan struktur NET_BUFFER_LIST dan semua sumber daya terkait. NDIS memanggil fungsi ProtocolSendNetBufferListsComplete untuk mengembalikan struktur dan data ke driver protokol. NDIS dapat mengumpulkan struktur dan data dari beberapa permintaan pengiriman ke dalam satu daftar tertaut struktur NET_BUFFER_LIST sebelum meneruskan daftar ke ProtocolSendNetBufferListsComplete.
Hingga NDIS memanggil ProtocolSendNetBufferListsComplete, status pengiriman yang dimulai driver protokol saat ini tidak tersedia untuk driver protokol. Driver protokol untuk sementara merilis kepemilikan semua sumber daya yang dialokasikan untuk permintaan pengiriman saat memanggil NdisSendNetBufferLists. Driver protokol tidak boleh mencoba memeriksa struktur NET_BUFFER_LIST atau data terkait setelah memanggil NdisSendNetBufferLists.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung di NDIS 6.0 dan yang lebih baru. |
Target Platform | Universal |
Header | ndis.h (termasuk Ndis.h) |
Pustaka | Ndis.lib |
IRQL | <=DISPATCH_LEVEL |
Aturan kepatuhan DDI | Irql_SendRcv_Function(ndis) |