다음을 통해 공유


UVC INF 파일 제공

중요

이 항목의 콘텐츠 및 샘플 코드는 오래되었으며 현재 지원되지 않습니다. 현재 드라이버 개발 도구 체인에서는 작동하지 않을 수 있습니다.

이 섹션에서는 디바이스별 INF 파일의 다양한 부분을 보여 줍니다.

이와 같은 INF 파일을 사용하여 디바이스별 이름을 제공하거나 확장 장치 플러그 인을 등록할 수 있습니다.

일반적으로 설치 패키지를 제공하는 공급업체는 설치 패키지를 사용하여 플러그 인 DLL을 등록할 수 있습니다. 이 경우 공급업체는 INF 파일을 제공하지 않습니다. 드라이버 서명의 경우 디바이스별 INF 파일 대신 설치 패키지를 제공하는 것이 더 쉬울 수 있습니다.

그러나 INF 파일을 사용하여 이 특정 샘플을 설치해야 합니다.

이렇게 하려면 INF 파일에 다음 코드를 포함합니다. 여기서는 임의로 Xuplgin.inf라는 이름을 지정합니다.

; Copyright (c) CompanyName. All rights reserved.

[Version]
...
Class=Camera
ClassGuid={ca3e7ab9-b4c3-4ae6-8251-579ef933890f}
...

[SourceDisksNames]
1=%Package%

[SourceDisksFiles]
MyPlugin.ax=1

[ControlFlags]
ExcludeFromSelect=*

[DestinationDirs]
MyDevice.CopyList=11    ; %systemroot%\system32 on NT-based systems

[Manufacturer]
%CompanyName%=CompanyName,NT$ARCH$

디바이스별 INF 파일은 VID/PID 식별자를 기반으로 디바이스와 일치합니다. 이 경우 디바이스별 INF 파일이 Usbvideo.inf보다 우선합니다.

[CompanyName.NT$ARCH$]
%MyDevice.DeviceDesc%=MyDevice,USB\Vid_XXXX&Pid_XXXX&MI_XX

[MyDevice]
Include=usbvideo.inf, ks.inf, kscaptur.inf
Needs=USBVideo.NT, KS.Registration, KSCAPTUR.Registration.NT
AddReg=MyDevice.Plugins
CopyFiles=MyDevice.CopyList

완전성을 위해 Usbvideo.inf 의 추가 섹션을 포함해야 합니다.

[MyDevice.SERVICES]
Include=usbvideo.inf
Needs=USBVideo.NT.SERVICES

[MyDevice.HW]
Include=usbvideo.inf
Needs=USBVideo.NT.HW

[MyDevice.WDF]
Include=usbvideo.inf
Needs=USBVideo.NT.WDF

[WdmCompanionFilter_CompanionSect]
CompanionServices = SecureUSBVideo

[WdmCompanionFilter_KmdfSvcSect]
KmdfLibraryVersion = %KMDF_VERSION%

[SecureUSBVideo_UmdfSvcSect]
UmdfLibraryVersion = %UMDF_VERSION%
ServiceBinary = %12%\UMDF\SecureUSBVideo.dll
ServiceType = SecureCompanion ; allowed options are: Driver (default), SecureCompanion, NonSecureCompanion
TrustletIdentity = 4096          ; required if it is SecureCompanion

또한 INF에는 플러그 인을 시스템 폴더에 복사하는 CopyFiles 섹션이 필요합니다.

[MyDevice.CopyList]
MyPlugin.ax

다음 INF AddReg 섹션의 첫 번째 부분에서는 플러그 인을 등록합니다. 이 섹션의 나머지 부분에서는 노드 기반 확장 단위 플러그 인에 대한 레지스트리 항목을 보여줍니다. 유사한 예제는 Usbvideo.inf 를 참조하세요.

[MyDevice.PlugIns]
HKCR,CLSID\%Plugin.CLSID%,,,%PlugIn_IExtensionUnit%
HKCR,CLSID\%Plugin.CLSID%\InprocServer32,,,MyPlugin.ax
HKCR,CLSID\%Plugin.CLSID%\InprocServer32,ThreadingModel,,Both

; The IID is aggregated onto the node given the GUID of the property set
HKLM,System\CurrentControlSet\Control\NodeInterfaces\%XU_GUID%,,,
   %PlugIn_IExtensionUnit%
; IID in Little-Endian form
HKLM,System\CurrentControlSet\Control\NodeInterfaces\%XU_GUID%,IID,
   1,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy
;CLSID in Little-Endian form
HKLM,System\CurrentControlSet\Control\NodeInterfaces\%XU_GUID%,
   CLSID,1,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz

다음 INF 섹션에서는 인터페이스별 레지스트리 항목을 채우는 방법을 보여줍니다.

[MyDevice.Interfaces]
AddInterface=%KSCATEGORY_CAPTURE%,<Custom GUID/Global>,MyDevice.Interface
AddInterface=%KSCATEGORY_VIDEO_CAMERA%,<Custom GUID/Global>,MyDevice.Interface
AddInterface=%KSCATEGORY_VIDEO%,<Custom GUID/Global>,MyDevice.Interface

[MyDevice.Interface]
AddReg=MyDevice.Interface.AddReg

[MyDevice.Interface.AddReg]
HKR,,CLSID,,%ProxyVCap.CLSID%
HKR,,FriendlyName,,%MyDevice.DeviceDesc%
HKR,,RTCFlags,0x00010001,0x00000010

USB 카메라의 경우 디바이스 인터페이스 레지스트리 키 위치에 0이 아닌 값이 있는 DWORD 레지스트리 항목 EnableDependentStillPinCapture 가 포함된 경우 이러한 카메라의 종속 핀이 사진 캡처에 사용됩니다. 레지스트리 항목이 없거나 0으로 설정된 경우 종속 핀이 사용되지 않습니다. 대신 미리 보기 핀에서 가져온 프레임을 사용하여 사진 캡처를 수행합니다. 다음은 종속 고정 캡처를 사용하도록 설정합니다.

HKR,,EnableDependentStillPinCapture,0x00010001,1

UvcFlags라는 선택적 레지스트리 값을 정의할 수도 있습니다. UvcFlags는 DWORD 값이어야 합니다. 디바이스가 연결되면 UVC 드라이버는 PnP(플러그 앤 플레이) 시작 요청을 받습니다. 그런 다음 드라이버는 디바이스 레지스트리 키에서 UvcFlags 를 검색합니다. DWORD 값은 비트 마스크이며 다음 표의 값을 포함할 수 있습니다.

비트 마스크 이름 Description
WORKAROUNDS_DV_INTERLEAVED_DEFAULT_MASK 0x00000001 UVC는 비디오 전용 데이터 범위 및 인터리빙된 DV 데이터 범위를 지원합니다. 인터리브된 DV에 대해 이 비트 마스크를 설정합니다.
WORKAROUNDS_SUPPRESS_CLOCK_MASK 0x00000002 현재 사용되지 않습니다.
WORKAROUNDS_MPEG2TS_SUPPORT_FID 0x00000004 FID 마스크는 스트림 헤더에 FID 비트가 포함되어 있음을 나타냅니다.
WORKAROUNDS_MPEG2TS_SUPPORT_EOF 0x00000008 EOF 마스크는 페이로드 헤더에 프레임 끝 비트가 포함되어 있음을 나타냅니다.
WORKAROUNDS_VARIABLE_FRAME_RATE_MASK 0x00000010 디바이스의 프레임 속도가 다를 수 있는 경우 이 마스크를 설정합니다. 고정 속도 DV 디바이스는 이 마스크를 설정하면 안 됩니다.

적용할 비트 마스크를 지정하려면 다음 예제와 유사한 줄을 포함합니다.

HKR,,UvcFlags,0x00010001,0x00000010

Windows Server 2003 및 Windows Vista 이상 버전의 운영 체제에서 UVC 드라이버를 사용하는 경우 MPEG-2 TS와 같은 스트림 기반 형식과 함께 FID 및 EOF 마스크를 사용할 수 있습니다.

낮은 프레임 속도 조건에서 EOF 비트는 다음 프레임의 FID 비트보다 빠른 완성을 보고할 수 있습니다. EOF 비트를 사용하여 MPEG-2 프레임 배달 대기 시간을 줄일 수 있습니다.

AddReg 지시문의 위치 구문에 대한 자세한 내용은 INF AddReg 지시문을 참조하세요.

이 마지막 섹션에서는 INF에 대한 누락된 정의를 제공합니다.

[Strings]
; Non-localizable
Plugin.CLSID="{zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz}"
ProxyVCap.CLSID="{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
XU_GUID="{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"
KSCATEGORY_VIDEO_CAMERA="{E5323777-F976-4f5b-9B55-B94699C46E44}"
KSCATEGORY_CAPTURE="{65E8773D-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_VIDEO="{6994AD05-93EF-11D0-A3CC-00A0C9223196}"

; Localizable
CompanyName="CompanyName"
Package="Installation Package"
MyDevice.DeviceDesc="CompanyName Camera"

PlugIn_IMyExtensionUnit="CompanyName Extension Unit Interface"