Bagikan melalui


MINIPORT_CO_SEND_NET_BUFFER_LISTS fungsi panggilan balik (ndis.h)

Fungsi MiniportCoSendNetBufferLists mengirimkan data jaringan yang terkandung dalam daftar struktur NET_BUFFER_LIST tertaut yang ditentukan.

Catatan Anda harus mendeklarasikan fungsi dengan menggunakan jenis MINIPORT_CO_SEND_NET_BUFFER_LISTS . Untuk informasi selengkapnya, lihat bagian Contoh berikut ini.
 

Sintaks

MINIPORT_CO_SEND_NET_BUFFER_LISTS MiniportCoSendNetBufferLists;

void MiniportCoSendNetBufferLists(
  [in] NDIS_HANDLE MiniportVcContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG SendFlags
)
{...}

Parameter

[in] MiniportVcContext

Handel ke area konteks yang dialokasikan driver miniport di mana driver miniport mempertahankan status koneksi per virtual (VC). Driver miniport menyediakan handel ini ke NDIS dari fungsi MiniportCoCreateVc-nya .

[in] NetBufferLists

Penunjuk ke struktur NET_BUFFER_LIST pertama dalam daftar struktur NET_BUFFER_LIST yang ditautkan. Setiap struktur NET_BUFFER_LIST dalam daftar menjelaskan daftar struktur NET_BUFFER . Setiap struktur NET_BUFFER dalam daftar memetakan ke rantai daftar deskriptor memori (MDL). MDL berisi data jaringan yang dikirimkan MiniportCoSendNetBufferLists .

[in] SendFlags

Bendera yang menentukan atribut untuk operasi pengiriman. Bendera dapat dikombinasikan dengan operasi OR bitwise. Untuk menghapus semua bendera, atur parameter ini ke nol. MiniportCoSendNetBufferLists mendukung bendera berikut:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

Pemanggil dapat secara opsional mengatur bendera ini jika IRQL saat ini DISPATCH_LEVEL. Untuk informasi selengkapnya tentang bendera ini, lihat Pengiriman Pelacakan IRQL.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

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 NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK . 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 memengaruhi pemeriksaan loopback, atau perulangan kembali, pada pengikatan lain.

Nilai kembali

Tidak ada

Keterangan

Fungsi MiniportCoSendNetBufferLists diperlukan untuk driver miniport CoNDIS. Ketika driver yang terlalu berlebihan memanggil Fungsi NdisCoSendNetBufferLists , NDIS memanggil fungsi MiniportCoSendNetBufferLists dari driver miniport terikat.

Urutan daftar tertaut struktur NET_BUFFER_LIST yang diteruskan NDIS di NetBufferLists mewakili urutan driver miniport harus mengirimkan data jaringan. Selain itu, driver miniport harus mengirim struktur NET_BUFFER_LIST dari beberapa panggilan MiniportCoSendNetBufferLists dalam urutan driver miniport menerima struktur.

Driver miniport CoNDIS harus menerima semua permintaan kirim yang dibuat NDIS dengan memanggil fungsi MiniportCoSendNetBufferLists . Jika driver miniport tidak dapat segera menyelesaikan permintaan kirim, driver harus menahan permintaan dalam antrean hingga dapat menyelesaikan permintaan. Saat permintaan pengiriman tertunda, driver miniport mempertahankan kepemilikan struktur NET_BUFFER_LIST dan semua sumber daya yang terkait dengan struktur NET_BUFFER_LIST .

Driver miniport harus memanggil Fungsi NdisMCoSendNetBufferListsComplete untuk menyelesaikan semua permintaan pengiriman CoNDIS. Untuk meningkatkan performa komputer, driver dapat membuat daftar tertaut yang berisi struktur NET_BUFFER_LIST dari beberapa permintaan pengiriman. Driver kemudian dapat meneruskan daftar tertaut tersebut dalam satu panggilan ke NdisMCoSendNetBufferListsComplete.

Selain itu, Anda harus berasumsi bahwa driver miniport tidak dapat mengakses struktur NET_BUFFER_LIST dan sumber daya terkait lainnya segera setelah driver memanggil NdisMCoSendNetBufferListsComplete.

Fungsi MiniportCoSendNetBufferLists harus menyinkronkan akses ke antrean internal data jaringannya dengan fungsi MiniportXxx lain driver yang mengakses antrean yang sama. Driver miniport dapat menggunakan kunci putar untuk menyinkronkan akses ke antrean.

Driver protokol bertanggung jawab untuk menentukan data jaringan apa yang diperlukan, berdasarkan jenis sedang yang dipilih driver miniport terikat. Namun, driver protokol dapat menyediakan data jaringan yang menentukan paket yang lebih pendek dari ukuran paket minimum untuk media yang dipilih. Dalam hal ini, MiniportCoSendNetBufferLists harus menaikkan paket dengan nol jika media yang dipilih memberlakukan persyaratan panjang minimum pada ukuran paket transmisi.

NDIS memanggil MiniportCoSendNetBufferLists di IRQL<= DISPATCH_LEVEL.

Contoh

Untuk menentukan fungsi MiniportCoSendNetBufferLists , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis fungsi yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi untuk pengandar. Mendeklarasikan fungsi menggunakan jenis fungsi membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.

Misalnya, untuk menentukan fungsi MiniportCoSendNetBufferLists yang diberi nama "MyCoSendNetBufferLists", gunakan jenis MINIPORT_CO_SEND_NET_BUFFER_LISTS seperti yang ditunjukkan dalam contoh kode ini:

MINIPORT_CO_SEND_NET_BUFFER_LISTS MyCoSendNetBufferLists;

Kemudian, terapkan fungsi Anda sebagai berikut:

_Use_decl_annotations_
VOID
 MyCoSendNetBufferLists(
    NDIS_HANDLE  MiniportVcContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendFlags
    )
  {...}

Jenis fungsi MINIPORT_CO_SEND_NET_BUFFER_LISTS ditentukan dalam file header Ndis.h. Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan anotasi Use_decl_annotations ke definisi fungsi Anda. Anotasi Use_decl_annotations memastikan bahwa anotasi yang diterapkan ke jenis fungsi MINIPORT_CO_SEND_NET_BUFFER_LISTS dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver NDIS.

Untuk informasi tentang Use_decl_annotations, lihat Perilaku Fungsi Anotasi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung di NDIS 6.0 dan yang lebih baru.
Target Platform Windows
Header ndis.h (termasuk Ndis.h)
IRQL <= DISPATCH_LEVEL

Lihat juga

MiniportCoCreateVc

NET_BUFFER

NET_BUFFER_LIST

NdisCoSendNetBufferLists

NdisMCoSendNetBufferListsComplete