次の方法で共有


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 値はビットマスクであり、次の表の値を含めることができます。

ビットマスク名 Value 説明
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"