필터 드라이버 설치

PnP 필터 드라이버는 설정 클래스의 특정 디바이스 또는 모든 디바이스를 지원할 수 있으며 디바이스의 함수 드라이버 아래 또는 디바이스의 함수 드라이버(상위 필터) 위에 연결할 수 있습니다. PnP 드라이버 계층에 대한 자세한 내용은 WDM 드라이버 유형을 참조하세요.

Device-Specific 필터 드라이버 설치

디바이스별 필터 드라이버를 등록하려면 DDInstallAddReg 항목을 통해 레지스트리 항목을 만듭니다. 디바이스의 INF 파일의 HW 섹션입니다. 디바이스별 상위 필터의 경우 UpperFilters라는 항목을 만듭니다. 디바이스별 하위 필터의 경우 LowerFilters라는 항목을 만듭니다. 예를 들어 다음 INF 발췌문은 cdrom 드라이버에 cdaudio를 상위 필터로 설치합니다.

:
; Installation section for cdaudio. Sets cdrom as the service 
; and adds cdaudio as a PnP upper filter driver. 
;
[cdaudio_install]
CopyFiles=cdaudio_copyfiles, cdrom_copyfiles
 
[cdaudio_install.HW]
AddReg=cdaudio_addreg
 
[cdaudio_install.Services]
AddService=cdrom,0x00000002,cdrom_ServiceInstallSection
AddService=cdaudio,,cdaudio_ServiceInstallSection
: 

[cdaudio_addreg] 
HKR,,"UpperFilters",0x00010000,"cdaudio" ; REG_MULTI_SZ value 
:

[cdaudio_ServiceInstallSection]
DisplayName    = %cdaudio_ServiceDesc%
ServiceType    = 1     ; SERVICE_KERNEL_DRIVER
StartType      = 3     ; SERVICE_DEMAND_START
ErrorControl   = 1     ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\cdaudio.sys
:

클래스 필터 드라이버 설치

디바이스 설치 클래스에 대한 클래스 차원의 상위 또는 하위 필터를 설치하려면 필요한 서비스를 설치하는 디바이스 설치 애플리케이션을 제공할 수 있습니다. 그런 다음 애플리케이션은 서비스를 원하는 디바이스 설정 클래스에 대한 상위 또는 하위 필터로 등록할 수 있습니다. 서비스 이진 파일을 복사하기 위해 애플리케이션 은 SetupInstallFilesFromInfSection을 사용할 수 있습니다. 서비스를 설치하기 위해 애플리케이션 은 SetupInstallServicesFromInfSection을 사용할 수 있습니다. 특정 디바이스 설정 클래스에 대한 상위 및/또는 하위 필터로 서비스를 등록하기 위해 애플리케이션은 RelativeKeyRoot 매개 변수에 대해 SetupDiOpenClassRegKey에서 검색한 레지스트리 키 핸들을 사용하여 관심 있는 각 디바이스 설정 클래스에 대해 SetupInstallFromInfSection을 호출합니다. 예를 들어 다음 INF 섹션을 고려해 보세요.

:

[DestinationDirs]
upperfilter_copyfiles = 12

[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 = %12%\upperfilt.sys
:

디바이스 설치 애플리케이션은 다음과 같습니다.

  1. [upperfilter_inst] 섹션에 대해 SetupInstallFilesFromInfSection 을 호출합니다.

  2. [upperfilter_inst 대해 SetupInstallServicesFromInfSection 을 호출합니다. 서비스] 섹션.

  3. [upperfilter_inst] 섹션에 대해 SetupInstallFromInfSection 을 호출합니다. 각 클래스 키에 대해 한 번은 상위 필터 서비스를 등록하려고 합니다.

각 호출은 Flags 인수에 대한 SPINST_REGISTRY 지정하여 레지스트리 수정만 수행해야 함을 나타냅니다.