Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Содержимое и пример кода в этом разделе устарели и в настоящее время не поддерживаются. Она может не работать с текущей цепочкой инструментов разработки драйверов.
В этом разделе показаны различные части 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 получает запрос на запуск Plug and Play (PnP). Затем драйвер ищет 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
Если вы используете драйвер UVC в Windows Server 2003 и Windows Vista или более поздних версиях операционной системы, маски 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"