Menginstal driver filter

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 direktif AddFilter INF dari bagian INF DDInstall.Filters. Lihat Pemesanan driver filter perangkat untuk informasi selengkapnya.

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 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 penyiapan perangkat tertentu, aplikasi memanggil SetupInstallFromInfSection untuk setiap kelas penyiapan perangkat yang menarik, menggunakan handel 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 [upperfilter_inst. Layanan] bagian.

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

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