Share via


安裝篩選驅動程式

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

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

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

針對舊版 Windows,若要註冊裝置特定的篩選驅動程式,請透過 DDInstall 中的 AddReg 專案建立登錄專案裝置 INF 檔案的 HW 區段。 針對裝置特定的上層篩選條件,建立名為 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,並使用從 RelativeKeyRoot 參數的 SetupDiOpenClassRegKey 擷取的登錄機碼句柄。 例如,請考慮下列 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. 呼叫 [upperfilter_inst] 區 段的 SetupInstallFilesFromInfSection

  2. 呼叫 [upperfilter_inst 的 SetupInstallServicesFromInfSection 。Services] 區段。

  3. 針對 [upperfilter_inst] 區 段呼叫 SetupInstallFromInfSection ,針對它想要註冊 上層篩選 服務的每個類別索引鍵呼叫一次。

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