共用方式為


提供 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"