Menginisialisasi Driver Filter

Inisialisasi pengandar filter terjadi segera setelah sistem memuat driver. Filter driver dimuat sebagai layanan sistem. Sistem dapat memuat driver filter kapan saja sebelum, selama, atau setelah driver miniport dimuat. NDIS dapat melampirkan modul filter ke adaptor miniport setelah adaptor miniport jenis yang didukung oleh driver filter tersedia dan inisialisasi driver filter selesai.

Saat tumpukan driver dimulai, sistem memuat driver filter jika belum dimuat. Untuk informasi selengkapnya tentang memulai tumpukan driver yang menyertakan modul filter, lihat Memulai Tumpukan Driver.

Setelah driver filter dimuat, sistem memanggil rutinitas DriverEntry driver.

Sistem meneruskan dua argumen ke DriverEntry:

  • Penunjuk ke objek driver, yang dibuat oleh sistem I/O.

  • Penunjuk ke jalur registri, yang menentukan di mana parameter khusus driver disimpan.

DriverEntry mengembalikan STATUS_SUCCESS, atau NDIS_STATUS_SUCCESS yang setara, jika driver berhasil terdaftar sebagai driver filter NDIS. Jika DriverEntry gagal menginisialisasi dengan menyebarkan status kesalahan yang dikembalikan oleh fungsi NdisXxx atau dengan rutinitas dukungan mode kernel, driver tidak akan tetap dimuat. DriverEntry harus dijalankan secara sinkron; yaitu, tidak dapat mengembalikan STATUS_PENDING atau NDIS_STATUS_PENDING yang setara.

Driver filter meneruskan objek driver ke fungsi NdisFRegisterFilterDriver saat mendaftar dengan NDIS sebagai driver filter. Driver dapat menggunakan jalur registri untuk mendapatkan informasi konfigurasi. Untuk informasi selengkapnya tentang cara mengakses informasi konfigurasi driver filter, lihat Mengakses Informasi Konfigurasi untuk Driver Filter.

Driver filter memanggil NdisFRegisterFilterDriver dari rutinitas DriverEntry-nya . Driver filter mengekspor sekumpulan fungsi FilterXxx dengan meneruskan struktur NDIS_FILTER_DRIVER_CHARACTERISTICS ke NdisFRegisterFilterDriver di parameter FilterCharacteristics .

Struktur NDIS_FILTER_DRIVER_CHARACTERISTICS menentukan titik masuk untuk fungsi FilterXxx wajib dan opsional. Beberapa fungsi opsional dapat dilewati. Untuk informasi selengkapnya tentang fungsi bypassing, lihat Mode Bypass Data.

Driver yang memanggil NdisFRegisterFilterDriver harus siap untuk panggilan langsung ke salah satu fungsi FilterXxx mereka.

Struktur NDIS_FILTER_DRIVER_CHARACTERISTICS menentukan titik masuk untuk fungsi FilterXxx wajib ini:

FilterAttach

FilterDetach

FilterRestart

FilterPause

Struktur NDIS_FILTER_DRIVER_CHARACTERISTICS menentukan titik masuk untuk fungsi opsional ini, dan tidak dapat diubah pada run-time, FilterXxx :

FilterSetOptions

FilterSetModuleOptions

FilterOidRequest

FilterOidRequestComplete

FilterStatus

FilterNetPnPEvent

FilterDevicePnPEventNotify

FilterCancelSendNetBufferLists

Struktur NDIS_FILTER_DRIVER_CHARACTERISTICS menentukan titik masuk default untuk fungsi opsional ini, dan dapat diubah pada run-time, FilterXxx :

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

FilterReturnNetBufferLists

FilterReceiveNetBufferLists

Empat fungsi sebelumnya juga didefinisikan dalam struktur NDIS_FILTER_PARTIAL_CHARACTERISTICS . Struktur ini menentukan fungsi yang dapat diubah pada durasi dengan memanggil fungsi NdisSetOptionalHandlers dari fungsi FilterSetModuleOptions . Jika driver filter akan mengubah karakteristik parsial ini saat runtime, driver harus menyediakan titik masuk untuk FilterSetModuleOptions. Karakteristik parsial dapat berbeda untuk setiap modul filter. Untuk informasi selengkapnya, lihat Memulai Modul Filter.

NDIS memanggil fungsi FilterSetOptions dalam konteks panggilan ke NdisFRegisterFilterDriver. FilterSetOptions mendaftarkan layanan opsional dengan NDIS. Untuk informasi selengkapnya, lihat Mengonfigurasi Layanan Driver Filter Opsional.

Jika panggilan ke NdisFRegisterFilterDriver berhasil, NDIS mengisi variabel di NdisFilterDriverHandle dengan handel driver filter. Driver filter menyimpan handel ini dan kemudian meneruskan handel ini ke fungsi NDIS, seperti NdisFDeregisterFilterDriver, yang memerlukan handel driver filter sebagai parameter input. Ketika driver dibongkar, driver harus memanggil fungsi NdisFDeregisterFilterDriver untuk melepaskan sumber daya driver yang dialokasikan oleh NdisFRegisterFilterDriver.

Setelah FilterSetOptions kembali, modul filter berada dalam status Terlepas . NDIS dapat memanggil fungsi FilterAttach driver filter kapan saja setelah panggilan ke FilterSetOptions kembali. Driver melakukan filter inisialisasi khusus modul dalam fungsi FilterAttach . Untuk informasi selengkapnya tentang melampirkan modul filter ke tumpukan driver, lihat Melampirkan Modul Filter.

Driver filter juga melakukan inisialisasi khusus driver lainnya yang diperlukan dalam DriverEntry. Driver filter harus merilis sumber daya khusus driver yang dialokasikannya dalam rutinitas FilterDriverUnload-nya . Untuk informasi selengkapnya, lihat Membongkar Driver Filter.