FILTER_SEND_NET_BUFFER_LISTS fungsi panggilan balik (ndis.h)
NDIS memanggil fungsi FilterSendNetBufferLists untuk memungkinkan driver filter memfilter daftar struktur NET_BUFFER_LIST yang ditautkan.
Sintaks
FILTER_SEND_NET_BUFFER_LISTS FilterSendNetBufferLists;
void FilterSendNetBufferLists(
[in] NDIS_HANDLE FilterModuleContext,
PNET_BUFFER_LIST NetBufferList,
[in] NDIS_PORT_NUMBER PortNumber,
[in] ULONG SendFlags
)
{...}
Parameter
[in] FilterModuleContext
Handel ke area konteks untuk modul filter. Driver filter membuat dan menginisialisasi area konteks ini dalam fungsi FilterAttach .
NetBufferList
Penunjuk ke daftar struktur NET_BUFFER_LIST tertaut yang menentukan daftar struktur NET_BUFFER . Setiap NET_BUFFER dalam daftar memetakan rantai MDL yang berisi data pengiriman.
[in] PortNumber
Nomor port yang mengidentifikasi port adaptor miniport. Nomor port adaptor miniport ditetapkan dengan memanggil fungsi NdisMAllocatePort . Nilai nol mengidentifikasi port default adaptor miniport.
[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 Mengirimkan 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.
NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE
Jika bendera ini diatur, semua paket dalam daftar tertaut struktur NET_BUFFER_LIST berasal dari port sumber sakelar yang dapat diperluas Hyper-V yang sama.
Untuk informasi selengkapnya, lihat Bendera Kirim dan Terima Sakelar Yang Dapat Diperluas Hyper-V.
NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP
Jika bendera ini diatur, semua paket dalam daftar tertaut struktur NET_BUFFER_LIST akan diteruskan ke port tujuan switch yang dapat diperluas yang sama.
Untuk informasi selengkapnya, lihat Bendera Kirim dan Terima Sakelar Yang Dapat Diperluas Hyper-V.
Nilai kembali
Tidak ada
Keterangan
FilterSendNetBufferLists adalah fungsi opsional. Jika driver filter tidak memfilter permintaan pengiriman, itu dapat mengatur titik masuk untuk fungsi ini ke NULL ketika memanggil Fungsi NdisFRegisterFilterDriver .
Jika driver filter menentukan fungsi FilterSendNetBufferLists dan mengantre mengirim permintaan, itu juga harus menentukan Fungsi FilterCancelSendNetBufferLists .
Driver filter dapat memanggil fungsi NdisSetOptionalHandlers , dari fungsi FilterSetModuleOptions , untuk menentukan fungsi FilterSendNetBufferLists untuk modul filter.
Jika driver filter menentukan fungsi FilterSendNetBufferLists , NDIS memanggil fungsi ini untuk memfilter data yang terkandung dalam daftar struktur NET_BUFFER melalui jaringan. NDIS menentukan daftar struktur NET_BUFFER di setiap struktur NET_BUFFER_LIST .
Jika driver filter tidak menentukan FilterSendNetBufferLists, NDIS memanggil driver filter berikutnya yang lebih rendah di tumpukan driver yang menentukan fungsi FilterSendNetBufferLists . Jika tidak ada driver filter yang mendasar seperti itu, NDIS memanggil driver yang mendasar Fungsi MiniportSendNetBufferLists .
Driver filter dapat memfilter data dan mengirim data yang difilter ke driver yang mendasar. Untuk setiap struktur NET_BUFFER yang dikirimkan ke FilterSendNetBufferLists, driver filter dapat melakukan hal berikut:
- Teruskan buffer ke driver yang mendasar berikutnya dengan memanggil fungsi NdisFSendNetBufferLists . Driver filter dapat mengubah konten buffer sebelum memanggil NdisFSendNetBufferLists. Dalam hal ini NDIS memanggil Fungsi FilterSendNetBufferListsComplete setelah driver yang mendasar menyelesaikan permintaan pengiriman.
- Tolak buffer dengan memanggil fungsi NdisFSendNetBufferListsComplete .
- Antrekan buffer dalam struktur data lokal untuk diproses nanti.
- Salin buffer dan asal permintaan kirim dengan salinan. Operasi pengiriman mirip dengan permintaan pengiriman yang dimulai oleh filter-driver. Dalam hal ini, driver harus mengembalikan buffer asli ke driver yang terlalu berlebihan dengan memanggil fungsi NdisFSendNetBufferListsComplete .
Jika modul filter dalam status Dijeda , driver filter tidak boleh berasal dari permintaan pengiriman apa pun untuk modul filter tersebut. Jika NDIS memanggil FilterSendNetBufferLists, driver tidak boleh memanggil NdisFSendNetBufferLists untuk meneruskan data hingga driver dimulai ulang. Driver harus segera memanggil NdisFSendNetBufferListsComplete untuk menyelesaikan operasi pengiriman. Ini harus mengatur status lengkap di setiap struktur NET_BUFFER_LIST ke NDIS_STATUS_PAUSED.
NDIS memanggil FilterSendNetBufferLists di IRQL <= DISPATCH_LEVEL.
Contoh
Untuk menentukan fungsi FilterSendNetBufferLists , 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 FilterSendNetBufferLists yang diberi nama "MySendNetBufferLists", gunakan jenis FILTER_SEND_NET_BUFFER_LISTS seperti yang ditunjukkan dalam contoh kode ini:
FILTER_SEND_NET_BUFFER_LISTS MySendNetBufferLists;
Kemudian, terapkan fungsi Anda sebagai berikut:
_Use_decl_annotations_
VOID
MySendNetBufferLists(
NDIS_HANDLE FilterModuleContext,
PNET_BUFFER_LIST NetBufferLists,
NDIS_PORT_NUMBER PortNumber,
ULONG SendFlags
)
{...}
Jenis fungsi FILTER_SEND_NET_BUFFER_LISTS didefinisikan 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 FILTER_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
FilterCancelSendNetBufferLists FilterSendNetBufferListsComplete NdisFSendNetBufferListsCompleteSaran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk