Bagikan melalui


Menginstal filter driver

Driver filter PnP dapat mendukung perangkat tertentu atau semua perangkat di kelas penyiapan perangkat dan dapat melampirkan di bawah driver fungsi perangkat (filter yang lebih rendah) atau di atas driver fungsi perangkat (filter atas). Lihat Jenis driver WDM untuk informasi selengkapnya tentang lapisan driver PnP.

Menginstal driver filter khusus perangkat

Pada Windows 10 versi 1903 dan yang lebih baru, driver filter khusus perangkat dapat didaftarkan dengan menggunakan direktrif AddFilter INF dari bagian INF DDInstall.Filters. Lihat urutan pengandar filter perangkat untuk informasi lebih lanjut.

Untuk versi Windows yang lebih lama, untuk mendaftarkan driver filter khusus perangkat, buat entri registri melalui entri AddReg di DDInstall. Bagian HW dari file INF perangkat. Untuk filter atas khusus perangkat, buat entri bernama UpperFilters. Untuk filter bawah khusus perangkat, buat entri bernama LowerFilters. Misalnya, kutipan INF berikut menginstal ExampleFilterDriver sebagai filter bagian atas pada driver ExampleFunctionDriver:

[Example_install]
CopyFiles=Filter_copyfiles, Function_copyfiles

[Example_install.HW]
AddReg=Filter_addreg

[Example_install.Services]
AddService=ExampleFunctionDriver,0x00000002,Function_ServiceInstallSection
AddService=ExampleFilterDriver,,Filter_ServiceInstallSection

[Filter_addreg]
HKR,,"UpperFilters",0x00010000,"ExampleFilterDriver" ; REG_MULTI_SZ value

[Filter_ServiceInstallSection]
DisplayName    = %Filter_ServiceDesc%
ServiceType    = 1     ; SERVICE_KERNEL_DRIVER
StartType      = 3     ; SERVICE_DEMAND_START
ErrorControl   = 1     ; SERVICE_ERROR_NORMAL
ServiceBinary  = %13%\ExampleFilterDriver.sys

Menginstal driver filter kelas

Untuk menginstal filter atas atau bawah di seluruh kelas untuk kelas penyiapan perangkat , Anda dapat menyediakan aplikasi penginstalan perangkat yang menginstal layanan yang diperlukan. Aplikasi kemudian dapat mendaftarkan layanan sebagai filter atas atau bawah untuk kelas penyiapan perangkat yang diinginkan. Untuk menyalin biner layanan, aplikasi dapat menggunakan SetupInstallFilesFromInfSection. Untuk menginstal layanan, aplikasi dapat menggunakan SetupInstallServicesFromInfSection. Untuk mendaftarkan layanan sebagai filter atas dan/atau bawah untuk kelas pengaturan perangkat tertentu, aplikasi memanggil SetupInstallFromInfSection untuk setiap kelas pengaturan perangkat yang relevan, menggunakan handle kunci registri yang mereka ambil dari SetupDiOpenClassRegKey untuk parameter RelativeKeyRoot. Misalnya, pertimbangkan bagian INF berikut:

[DestinationDirs]
upperfilter_copyfiles = 13

[upperfilter_inst]
CopyFiles = upperfilter_copyfiles
AddReg = upperfilter_addreg

[upperfilter_copyfiles]
upperfilt.sys,,,0x00004000  ; COPYFLG_IN_USE_RENAME

[upperfilter_addreg]
; append this service to existing REG_MULTI_SZ list, if any
HKR,,"UpperFilters",0x00010008,"upperfilt"

[upperfilter_inst.Services]
AddService = upperfilt,,upperfilter_service

[upperfilter_service]
DisplayName   = %upperfilter_ServiceDesc%
ServiceType   = 1   ; SERVICE_KERNEL_DRIVER
StartType     = 3   ; SERVICE_DEMAND_START
ErrorControl  = 1   ; SERVICE_ERROR_NORMAL
ServiceBinary = %13%\upperfilt.sys

Aplikasi penginstalan perangkat akan:

  1. Panggil SetupInstallFilesFromInfSection untuk bagian [upperfilter_inst].

  2. Panggil SetupInstallServicesFromInfSection untuk bagian [upperfilter_inst.Services].

  3. Panggil SetupInstallFromInfSection untuk bagian [upperfilter_inst] sekali untuk setiap kunci kelas yang ingin didaftarkan layanan upperfilt .

Setiap panggilan akan menentukan SPINST_REGISTRY untuk argumen Bendera, untuk menunjukkan bahwa hanya modifikasi registri yang perlu dilakukan.