共用方式為


安裝篩選驅動程式

PnP 篩選驅動程式可以支援 裝置安裝類別 中的特定裝置或所有裝置,而且可以附加在裝置函式驅動程式(較低篩選器)或裝置函式驅動程式上方(上層篩選條件)。 如需 PnP 驅動程式層的詳細資訊,請參閱 WDM 驅動程式的類型

安裝裝置特定的篩選驅動程式

在 Windows 10 版本 1903 和更新版本上,可以使用 INF DDInstall.Filters 區段中INF AddFilter 指示詞來註冊裝置特定的篩選驅動程式。 如需詳細資訊 ,請參閱裝置篩選驅動程式排序

針對舊版 Windows,若要註冊裝置特定的篩選驅動程式,請在裝置的 INF 檔案的 DDInstall.HW 區段中,透過 AddReg 專案建立一個登錄專案。 針對裝置特定的上層篩選,建立名為 UpperFilters的專案。 針對裝置特定的較低篩選條件,建立名為 LowerFilters 的專案。 例如,下列 INF 摘錄會將 ExampleFilterDriver 安裝為 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

安裝類別篩選驅動程式

若要為 裝置設定類別 安裝整個類別的上層或下層篩選器,您可以提供安裝必要服務的 裝置安裝應用程式。 然後,應用程式可以將服務註冊為所需裝置設定類別的上層或下層篩選。 若要複製服務二進制檔,應用程式可以使用 SetupInstallFilesFromInfSection。 若要安裝服務,應用程式可以使用 SetupInstallServicesFromInfSection。 若要將服務註冊為特定裝置安裝類別的上下層篩選器,應用程式會針對感興趣的每個裝置安裝類別呼叫 SetupInstallFromInfSection,並使用從 SetupDiOpenClassRegKey 擷取的登錄機碼句柄作為 RelativeKeyRoot 參數。 例如,請考慮下列 INF 區段:

[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

裝置安裝應用程式會:

  1. 呼叫 SetupInstallFilesFromInfSection 的 [upperfilter_inst] 區段。

  2. 呼叫 SetupInstallServicesFromInfSection 以處理 [upperfilter_inst.Services] 區段。

  3. 對於 [upperfilter_inst] 區段,呼叫 SetupInstallFromInfSection 一次,以便為每個類別鍵註冊 upperfilt 服務。

每個呼叫都會為 Flags 自變數指定SPINST_REGISTRY,以指出只需要執行登錄修改。