Bagikan melalui


Mengirim Data Jaringan

Gambar berikut mengilustrasikan operasi pengiriman dasar, yang melibatkan driver protokol, NDIS, dan driver miniport.

Diagram memperlihatkan operasi pengiriman NDIS dasar dengan driver protokol, NDIS, dan driver miniport.

Driver protokol memanggil fungsi NdisSendNetBufferLists untuk mengirim struktur NET_BUFFER_LIST pada pengikatan. NDIS memanggil fungsi MiniportSendNetBufferLists driver miniport untuk meneruskan struktur NET_BUFFER_LIST ke driver miniport yang mendasar.

Semua operasi pengiriman berbasis NET_BUFFER bersifat asinkron. Driver miniport memanggil fungsi NdisMSendNetBufferListsComplete dengan kode status yang sesuai ketika selesai. Pengiriman setiap struktur NET_BUFFER_LIST dapat diselesaikan secara individual. NDIS memanggil fungsi ProtocolSendNetBufferListsComplete driver protokol setiap kali driver miniport memanggil NdisMSendNetBufferListsComplete.

Driver protokol dapat mengklaim kembali kepemilikan struktur NET_BUFFER_LIST dan semua struktur dan data terkait segera setelah NDIS memanggil fungsi ProtocolSendNetBufferListsComplete driver protokol.

Driver miniport atau NDIS dapat mengembalikan struktur NET_BUFFER_LIST dalam urutan apa pun. Driver protokol dijamin bahwa daftar struktur NET_BUFFER yang melekat pada setiap struktur NET_BUFFER_LIST belum dimodifikasi.

Setiap driver NDIS dapat memisahkan struktur NET_BUFFER dalam struktur NET_BUFFER_LIST. Setiap driver NDIS juga dapat memisahkan MDL dalam struktur NET_BUFFER. Namun, driver harus selalu mengembalikan struktur NET_BUFFER_LIST dengan struktur NET_BUFFER dan MDL dalam bentuk aslinya. Misalnya, driver perantara mungkin memisahkan NET_BUFFER_LIST menjadi dua struktur NET_BUFFER_LIST baru dan meneruskan bagian dari data asli ke driver berikutnya. Namun, ketika driver perantara menyelesaikan pemrosesan NET_BUFFER_LIST asli harus mengembalikan NET_BUFFER_LIST lengkap dengan struktur NET_BUFFER asli dan MDL.

Driver protokol mengatur anggota SourceHandle dalam struktur NET_BUFFER_LIST ke NdisBindingHandle yang disediakan NDIS dalam panggilan ke fungsi NdisOpenAdapterEx . NDIS menggunakan anggota SourceHandle untuk mengembalikan struktur NET_BUFFER_LIST ke driver protokol yang mengirim struktur NET_BUFFER_LIST.

Driver menengah juga menetapkan anggota SourceHandle dalam struktur NET_BUFFER_LIST ke nilai NdisBindingHandle yang disediakan NDIS dalam panggilan ke NdisOpenAdapterEx. Jika driver perantara meneruskan permintaan pengiriman, driver harus menyimpan nilai SourceHandle yang disediakan driver yang terlalu besar sebelum menulis ke anggota SourceHandle . Ketika NDIS mengembalikan struktur NET_BUFFER_LIST yang diteruskan ke driver perantara, driver perantara harus memulihkan SourceHandle yang disimpannya.