提供 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 相機,如果裝置介面登錄機機位置包含 DWORD 登錄專案 EnableDependentStillPinCapture ,則這類相機上的相依針腳將用於相片擷取。 如果登錄專案不存在或設定為零,將不會使用相依針腳。 相反地,相片擷取將會使用從預覽釘選擷取的畫面來完成。 下列會啟用相依的仍釘選擷取:
HKR,,EnableDependentStillPinCapture,0x00010001,1
您也可以定義稱為 UvcFlags 的選擇性登錄值。 UvcFlags 應該是 DWORD 值。 當裝置插入電源時,UVC 驅動程式會收到 隨插即用 (PnP) Start 要求。 然後,驅動程式會在裝置登錄機碼中搜尋 UvcFlags 。 DWORD 值是位元遮罩,可以包含下表中的值。
位元遮罩名稱 | 值 | 描述 |
---|---|---|
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 驅動程式,FID 和 EOF 遮罩可以搭配串流格式使用,例如 MPEG-2 TS。
在低畫面播放速率情況下,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"