Memulai Modul Filter

Untuk memulai modul filter yang dijeda, NDIS memanggil fungsi FilterSetModuleOptions driver filter, jika ada, diikuti dengan panggilan ke fungsi FilterRestart . Modul filter memasuki status Restarting pada awal eksekusi di fungsi FilterRestart .

Jika driver menyediakan titik masuk untuk FilterSetModuleOptions, driver dapat mengubah karakteristik parsial untuk modul filter. Untuk informasi selengkapnya, lihat Mode Bypass Data.

Saat memanggil fungsi FilterRestart driver filter, NDIS meneruskan penunjuk ke struktur NDIS_RESTART_ATTRIBUTES untuk memfilter driver di anggota RestartAttributes dari struktur NDIS_FILTER_RESTART_PARAMETERS . Driver filter dapat memodifikasi atribut restart yang ditentukan oleh driver yang mendasarinya. Untuk informasi selengkapnya tentang cara memodifikasi atribut restart, lihat FilterRestart.

Nota NDIS memanggil FilterSetModuleOptions untuk semua modul filter dalam tumpukan sebelum NDIS memanggil fungsi FilterRestart untuk modul filter apa pun di tumpukan.

NDIS memulai modul filter sebagai bagian dari operasi Plug and Play untuk memulai ulang tumpukan driver. Untuk gambaran umum memulai ulang tumpukan driver, lihat Memulai Ulang Tumpukan Driver.

Atas nama modul filter yang dalam status Restart , driver filter:

  • Menyelesaikan operasi apa pun yang diperlukan untuk memulai kembali operasi kirim dan terima normal.

    Untuk informasi selengkapnya tentang operasi kirim dan terima, lihat Modul Filter Kirim dan Terima Operasi.

  • Dapat membaca atau menulis parameter yang dapat dikonfigurasi untuk modul filter.

  • Dapat menerima indikasi data jaringan. Driver dapat menyalin dan mengantri data tersebut dan menunjukkannya kepada pengemudi yang terlalu banyak nanti, atau dapat membuang data.

  • Seharusnya tidak memulai indikasi penerimaan baru.

  • Harus menolak semua permintaan kirim baru yang dibuat ke fungsi FilterSendNetBufferLists segera dengan memanggil fungsi NdisFSendNetBufferListsComplete . Ini harus mengatur status lengkap di setiap NET_BUFFER_LIST untuk NDIS_STATUS_PAUSED.

  • Dapat memberikan indikasi status dengan fungsi NdisFIndicateStatus .

    Untuk informasi selengkapnya tentang indikasi status, lihat Memfilter Indikasi Status Modul.

  • Harus menangani permintaan OID dalam fungsi FilterOidRequest .

    Untuk informasi selengkapnya tentang permintaan OID, lihat Permintaan Filter Module OID.

  • Seharusnya tidak memulai permintaan pengiriman baru.

  • Harus mengembalikan indikasi penerimaan baru ke NDIS segera dengan memanggil fungsi NdisFReturnNetBufferLists . Jika perlu, pengemudi dapat menyalin indikasi penerimaan tersebut sebelum mengembalikannya.

  • Dapat membuat permintaan OID ke driver yang mendasarinya untuk mengatur atau mengkueri informasi konfigurasi yang diperbarui.

  • Harus menangani indikasi status dalam fungsi FilterStatus-nya .

  • Harus Menunjukkan NDIS_STATUS_SUCCESS atau status kegagalan. Jika modul filter tidak dimulai ulang, NDIS akan melepaskannya dan jika itu adalah filter wajib, NDIS mengakhiri seluruh tumpukan driver.

Setelah driver filter berhasil memulai ulang operasi kirim dan terima, ia harus menyelesaikan operasi restart. Driver filter dapat menyelesaikan operasi restart secara sinkron atau asinkron dengan mengembalikan NDIS_STATUS_SUCCESS atau NDIS_STATUS_PENDING masing-masing dari FilterRestart.

Jika driver mengembalikan NDIS_STATUS_PENDING, ia harus memanggil fungsi NdisFRestartComplete setelah menyelesaikan operasi restart. Dalam hal ini, pengemudi meneruskan status akhir operasi restart ke NdisFRestartComplete.

Setelah operasi restart selesai, modul filter dalam keadaan Berjalan . Driver melanjutkan pemrosesan kirim dan terima normal.

NDIS tidak memulai operasi Plug and Play lainnya, seperti, melampirkan, melepaskan, atau menjeda permintaan, saat driver filter dalam status Restarting. NDIS dapat memulai permintaan jeda setelah driver filter dalam status Berjalan . Untuk informasi selengkapnya tentang menjeda modul filter, lihat Menjeda Modul Filter.