Data Bypass Mode

Mode bypass data driver filter dapat memberikan peningkatan performa sistem. NDIS tidak memanggil fungsi FilterXxx yang dilewati. Misalnya, jika layanan kirim dan terima tidak diperlukan untuk aplikasi filter tertentu, driver filter dapat melewati fungsi kirim dan terima.

Driver filter menentukan titik masuk default, untuk fungsi yang dapat dilewati, selama inisialisasi driver saat memanggil fungsi NdisFRegisterFilterDriver . Titik entri adalah NULL untuk fungsi yang dilewati secara default. Untuk informasi selengkapnya tentang inisialisasi, lihat Menginisialisasi Driver Filter.

Untuk mengubah status bypass pada runtime, driver harus menentukan titik masuk untuk fungsi FilterSetModuleOptions selama inisialisasi driver. Driver dapat menginisialisasi struktur NDIS_FILTER_PARTIAL_CHARACTERISTICS dan meneruskan karakteristik baru ke fungsi NdisSetOptionalHandlers dari dalam konteks FilterSetModuleOptions.

NDIS memanggil fungsi FilterSetModuleOptions , jika ada, di awal operasi hidupkan ulang. Driver filter dapat mengatur mode bypass secara independen untuk setiap modul filter. Untuk informasi selengkapnya, lihat Memulai Modul Filter.

Driver filter dapat melewati fungsi FilterXxx opsional berikut yang ditentukan dalam struktur NDIS_FILTER_DRIVER_CHARACTERISTICS :

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

FilterCancelSendNetBufferLists

FilterReturnNetBufferLists

FilterReceiveNetBufferLists

Untuk mengatur fungsi FilterXxx ke mode bypass, driver filter menentukan NULL untuk titik masuk fungsi tersebut. Namun, jika driver memanggil fungsi NDIS apa pun yang memiliki fungsi FilterXxx terkait, driver harus menyediakan titik masuk untuk fungsi FilterXxx tersebut . Misalnya, jika driver memanggil fungsi NdisFIndicateReceiveNetBufferLists , driver harus menyediakan fungsi FilterReturnNetBufferLists .

Jika driver filter menentukan fungsi FilterSendNetBufferLists dan mengantre mengirim permintaan, driver filter juga harus menentukan fungsi FilterCancelSendNetBufferLists .

Jika driver filter menentukan fungsi FilterReceiveNetBufferLists atau FilterReturnNetBufferLists , driver juga harus menentukan fungsi FilterStatus .

Untuk mengubah pengaturan mode bypass pada durasi, driver filter dapat memanggil fungsi NdisFRestartFilter . NdisFRestartFilter menjadwalkan operasi jeda yang diikuti oleh operasi hidupkan ulang untuk modul filter yang ditentukan. Ketika NDIS memanggil FilterSetModuleOptions, driver filter dapat mengubah fungsi untuk modul filter tersebut dengan memanggil NdisSetOptionalHandlers dan menentukan serangkaian titik masuk baru.

Catatan Jeda dan mulai ulang dapat menyebabkan beberapa paket jaringan dihilangkan di jalur transmisi, atau jalur penerimaan, atau keduanya. Protokol jaringan yang menyediakan mekanisme transportasi yang andal mungkin mencoba kembali operasi I/O jaringan dalam kasus paket yang hilang, tetapi protokol lain yang tidak menjamin keandalan tidak mencoba kembali operasi.

Driver filter dapat mendaftarkan fungsi opsional tambahan yang mendukung layanan driver opsional. Driver mendaftarkan layanan opsional ini dalam fungsi FilterSetOptions . Untuk informasi selengkapnya tentang layanan opsional ini, lihat Mengonfigurasi Layanan Driver Filter Opsional.