Menginsialisasi Pengandar Filter

Inisialisasi driver 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 dari 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 pengemudi.

Sistem ini 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 inisialisasi 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; artinya, ia 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 Pengandar Filter.

Driver filter memanggil NdisFRegisterFilterDriver dari rutinitas DriverEntry-nya . Driver filter mengekspor satu set fungsi FilterXxx dengan meneruskan struktur NDIS_FILTER_DRIVER_CHARACTERISTICS ke NdisFRegisterFilterDriver pada 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 melewati fungsi, 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 FilterXxx opsional ini, dan tidak dapat diubah pada run-time:

FilterSetOptions

FilterSetModuleOptions

FilterOidRequest

FilterOidRequestComplete

FilterStatus

FilterNetPnPEvent

FilterDevicePnPEventNotify

FilterCancelSendNetBufferLists

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

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

FilterReturnNetBufferLists

FilterReceiveNetBufferLists

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

NDIS menyebut 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 gagang pengandar filter. Driver filter menyimpan pegangan ini dan kemudian meneruskan pegangan ini ke fungsi NDIS, seperti NdisFDeregisterFilterDriver, yang memerlukan pegangan driver filter sebagai parameter input. Saat driver membongkar, ia harus memanggil fungsi NdisFDeregisterFilterDriver untuk melepaskan sumber daya driver yang dialokasikan oleh NdisFRegisterFilterDriver.

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

Driver filter juga melakukan inisialisasi khusus driver lain yang diperlukan di DriverEntry. Pengandar filter harus melepaskan sumber daya khusus driver yang dialokasikan dalam rutinitas FilterDriverUnload-nya . Untuk informasi selengkapnya, lihat Membongkar Pengandar Filter.