Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Zawartość i przykładowy kod w tym temacie są nieaktualne i obecnie nieobsługiwane. Może nie być zgodny z bieżącym zestawem narzędzi do programowania sterowników.
W tej sekcji przedstawiono różne części pliku INF specyficznego dla urządzenia.
Plik INF, taki jak ten, może służyć do podania nazwy specyficznej dla urządzenia lub zarejestrowania wtyczki jednostki rozszerzenia.
Ogólnie rzecz biorąc, dostawcy dostarczający pakiet instalacyjny mogą zarejestrować wtyczkę DLL przy użyciu pakietu instalacyjnego, w tym przypadku dostawca nie udostępnia pliku INF. W przypadku podpisywania sterowników może być łatwiej udostępnić pakiet instalacyjny zamiast pliku INF specyficznego dla urządzenia.
Należy jednak pamiętać, że należy zainstalować ten konkretny przykład przy użyciu pliku INF.
W tym celu dołącz następujący kod do pliku INF, tutaj arbitralnie o nazwie 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$
Plik INF specyficzny dla urządzenia jest zgodny z urządzeniem na podstawie identyfikatora VID/PID. W takim przypadku plik INF specyficzny dla urządzenia ma pierwszeństwo przed 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
Dodatkowe sekcje Usbvideo.inf muszą być dołączone, aby zapewnić kompletność.
[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 wymaga również sekcji CopyFiles, aby skopiować wtyczkę do folderu systemowego.
[MyDevice.CopyList]
MyPlugin.ax
Pierwsza część poniższej sekcji InF AddReg rejestruje wtyczkę. W pozostałej części tej sekcji przedstawiono wpisy rejestru dla wtyczki jednostki rozszerzenia opartej na węźle. Zapoznaj się z plikiem Usbvideo.inf w celu znalezienia podobnych przykładów.
[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
W poniższej sekcji INF pokazano, jak wypełnić wpisy rejestru specyficzne dla interfejsu.
[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
W przypadku aparatów USB, jeśli lokalizacja klucza rejestru interfejsu urządzenia zawiera wpis rejestru DWORD EnableDependentStillPinCapture z wartością inną niż zero, zależny pin w takich aparatach będzie używany do przechwytywania zdjęć. Jeśli wpis rejestru nie jest obecny lub ustawiony na zero, zależny numer PIN nie będzie używany. Zamiast tego przechwycenie zdjęcia zostanie wykonane przy użyciu ramki podglądowej. Następująca funkcja umożliwia przechwytywanie zależnego obrazu PIN.
HKR,,EnableDependentStillPinCapture,0x00010001,1
Można również zdefiniować opcjonalną wartość rejestru o nazwie UvcFlags. UvcFlags powinna być wartością DWORD. Gdy urządzenie jest podłączone, sterownik UVC odbiera żądanie uruchomienia Plug and Play (PnP). Następnie sterownik wyszukuje UvcFlags w kluczu rejestru urządzenia. Wartość DWORD jest maską bitów i może zawierać wartości w poniższej tabeli.
| Nazwa maski bitowej | Wartość | Opis |
|---|---|---|
| WORKAROUNDS_DV_INTERLEAVED_DEFAULT_MASK | 0x00000001 | UVC obsługuje zakresy danych wyłącznie wideo i przeplatane zakresy danych DV. Ustaw tę maskę bitów dla przeplatanego sygnału DV. |
| WORKAROUNDS_SUPPRESS_CLOCK_MASK | 0x00000002 | Obecnie nie jest używany. |
| WORKAROUNDS_MPEG2TS_SUPPORT_FID | 0x00000004 | Maska FID wskazuje, że nagłówek strumienia zawiera bit FID. |
| WORKAROUNDS_MPEG2TS_SUPPORT_EOF | 0x00000008 | Maska EOF wskazuje, że nagłówki ładunku zawierają bit końca ramki. |
| Mechanizmy_Omijania_Zmienna_Częstotliwość_Ramki_Maska | 0x00000010 | Ustaw tę maskę, jeśli urządzenie może zmieniać częstotliwość ramek. Urządzenia DV o stałej szybkości nie powinny ustawiać tej maski. |
Dołącz wiersz podobny do poniższego przykładu, aby określić maskę bitów do zastosowania:
HKR,,UvcFlags,0x00010001,0x00000010
Jeśli używasz sterownika UVC w systemach Windows Server 2003 i Windows Vista lub nowszych wersjach systemu operacyjnego, maski FID i EOF mogą być używane z formatami opartymi na strumieniu, takimi jak MPEG-2 TS.
W warunkach niskiej częstotliwości klatek bit EOF może zgłaszać ukończenie szybciej niż bit FID następnej ramki. Bit EOF może służyć do zmniejszenia opóźnienia w dostarczaniu ramek MPEG-2.
Aby uzyskać więcej informacji na temat pozycyjnej składni dyrektyw AddReg, zobacz INF AddReg Dyrektywy.
W tej ostatniej sekcji przedstawiono brakujące definicje 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"