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 Menghidupkan ulang pada awal eksekusi dalam fungsi FilterRestart .

Jika driver memberikan 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 mengubah atribut hidupkan ulang yang ditentukan oleh driver yang mendasar. Untuk informasi selengkapnya tentang cara mengubah atribut hidupkan ulang, lihat FilterRestart.

Catatan 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 berada dalam status Menghidupkan ulang , driver filter:

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

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

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

  • Dapat menerima indikasi data jaringan. Driver dapat menyalin dan mengantrekan data tersebut dan menunjukkannya ke driver yang terlalu berlebih nanti, atau dapat membuang data.

  • Tidak boleh memulai indikasi penerimaan baru.

  • Harus menolak semua permintaan pengiriman baru yang dibuat ke fungsi FilterSendNetBufferLists segera dengan memanggil fungsi NdisFSendNetBufferListsComplete . Ini harus mengatur status lengkap di setiap NET_BUFFER_LIST ke 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 Memfilter Permintaan OID Modul.

  • Tidak boleh memulai permintaan pengiriman baru.

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

  • Dapat membuat permintaan OID ke driver yang mendasar 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 mencopotnya dan jika merupakan filter wajib, NDIS menghentikan seluruh tumpukan driver.

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

Jika driver kembali NDIS_STATUS_PENDING, driver harus memanggil fungsi NdisFRestartComplete setelah menyelesaikan operasi hidupkan ulang. Dalam hal ini, driver meneruskan status akhir operasi hidupkan ulang ke NdisFRestartComplete.

Setelah operasi hidupkan ulang selesai, modul filter berada dalam status 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 berada dalam status Memulai Ulang. NDIS dapat memulai permintaan jeda setelah driver filter dalam status Berjalan . Untuk informasi selengkapnya tentang menjeda modul filter, lihat Menjeda Modul Filter.