Поделиться через


Использование INF-файла компонента

Если вы хотите включить программное обеспечение в пользовательском режиме для использования с устройством на Windows 10, вы можете создать драйвер, совместимый с DCH:

Метод Сценарий
Приложения поддержки оборудования (HSA) Программное обеспечение надстройки устройства, упакованое в виде приложения UWP, которое доставляется и обслуживается из Microsoft Store. Рекомендуемый подход.
Компоненты программного обеспечения Дополнительное программное обеспечение устройства — это двоичный файл MSI или EXE, служба Win32 или программное обеспечение, установленное с помощью AddReg и CopyFiles. Двоичные файлы, на которые ссылается ссылка, выполняются только в выпусках для настольных компьютеров (Домашняя, Pro и Корпоративная). Указанный двоичный файл не будет работать в Windows 10S.

Программный компонент — это отдельный автономный пакет драйверов, который может установить один или несколько программных модулей. Установленное программное обеспечение повышает ценность устройства, но не требуется для основных функциональных возможностей устройства и не требует связанной службы драйвера функций.

На этой странице приведены рекомендации по использованию программных компонентов.

Начало работы

Для создания компонентов INF-файл расширения указывает директиву INF AddComponent один или несколько раз в разделе INF DDInstall.Components . Для каждого программного компонента, на который ссылается INF-файл расширения, система создает виртуальное дочернее устройство с перечислением программного обеспечения. Несколько пакетов драйверов могут ссылаться на один и тот же программный компонент.

Дочерние элементы виртуального устройства можно обновлять независимо так же, как и любое другое устройство, при условии, что родительское устройство запущено. Рекомендуется разделить функциональные возможности на столько разных групп, сколько имеет смысл с точки зрения обслуживания, а затем создать один программный компонент для каждой группировки.

Вы предоставите INF-файл для каждого компонента программного обеспечения.

Если в inf-файле программного компонента указана директива AddSoftware, то inf-код компонента:

Директиву AddSoftware можно указать один или несколько раз.

Примечание

При использовании типа 2 директивы AddSoftware не требуется использовать inf-файл компонента. Директиву можно успешно использовать в любом INF. Однако директива AddSoftware типа 1 должна использоваться из inf компонента.

Кроме того, любой inf (компонент или нет), соответствующий на устройстве программного компонента:

  • Можно указать службы пользователей Win32 с помощью директивы AddService.
  • Может устанавливать программное обеспечение с помощью директивы INF AddReg и ДИРЕКТИВы INF CopyFiles.
  • Не требуется служба драйвера функций.
  • Может быть удален пользователем независимо от родительского устройства.

Пример inf компонента можно найти в наборе средств установки пакета драйверов для универсальных драйверов.

Примечание. Чтобы устройство с программным перечислением компонентов функционировали, необходимо запустить его родительский элемент. Если для родительского устройства нет драйвера, разработчики драйверов могут создать собственный драйвер и при необходимости использовать драйвер сквозной передачи "umpass.sys". Этот драйвер входит в состав Windows и фактически выполняет только запуск устройства. Чтобы использовать umpass.sys, разработчики должны использовать директивы INCLUDE/Needs INF в разделе DDInstall для каждого возможного раздела [DDInstall.*] в соответствующих разделах [UmPass.*], как показано ниже, независимо от того, указывает ли INF директивы для этого раздела или нет:

[DDInstall]
Include=umpass.inf
Needs=UmPass
; also include any existing DDInstall directives

[DDInstall.HW]
Include=umpass.inf
Needs=UmPass.HW
; also include any existing DDInstall.HW directives

[DDInstall.Interfaces]
Include=umpass.inf
Needs=UmPass.Interfaces
; also include any existing DDInstall.Interfaces directives

[DDInstall.Services]
Include=umpass.inf
Needs=UmPass.Services
; also include any existing any DDInstall.Services directives

Доступ к устройству из программного компонента

Чтобы получить идентификатор экземпляра устройства, связанного с программным компонентом, используйте значение SoftwareArguments в разделе Директива INFSoftware с переменной контекста <<DeviceInstanceID>> среды выполнения.

Затем исполняемый файл может получить идентификатор экземпляра устройства компонента программного обеспечения из списка входящих аргументов.

Далее, если программный компонент предназначен для универсальной целевой платформы, используйте следующую процедуру:

  1. Вызовите CM_Locate_DevNode с идентификатором экземпляра устройства компонента программного обеспечения, чтобы получить дескриптор устройства.
  2. Вызовите CM_Get_Parent , чтобы получить дескриптор родительского устройства. Это родительское устройство, которое добавило программный компонент с помощью директивы INF AddComponent.
  3. Затем, чтобы получить идентификатор экземпляра устройства родительского объекта, вызовите CM_Get_Device_ID дескриптора из CM_Get_Parent.

Если программный компонент предназначен только для целевой платформы desktop, используйте следующую процедуру:

  1. Вызовите SetupDiCreateDeviceInfoList , чтобы создать пустой набор сведений об устройствах.
  2. Вызовите SetupDiOpenDeviceInfo с идентификатором экземпляра устройства программного компонента.
  3. Вызовите SetupDiGetDeviceProperty с DEVPKEY_Device_Parent , чтобы получить идентификатор экземпляра устройства родительского объекта.

Пример

В следующем примере показано, как можно использовать программный компонент для установки панели управления с помощью исполняемого файла для графического карта.

INF-файл пакета драйвера

[Version]
Signature   = "$WINDOWS NT$"
Class       = Extension
ClassGuid   = {e2f84ce7-8efa-411c-aa69-97454ca4cb57}
ExtensionId = {zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz} ; replace with your own GUID
Provider    = %CONTOSO%
DriverVer   = 06/21/2006,1.0.0.0
CatalogFile = ContosoGrfx.cat
PnpLockdown = 1

[Manufacturer]
%CONTOSO%=Contoso,NTx86

[Contoso.NTx86]
%ContosoGrfx.DeviceDesc%=ContosoGrfx, PCI\VEN0001&DEV0001

[ContosoGrfx.NT]
;empty

[ContosoGrfx.NT.Components]
AddComponent = ContosoControlPanel,, Component_Inst

[Component_Inst]
ComponentIDs = VID0001&PID0001&SID0001

[Strings]
CONTOSO = "Contoso Inc."
ContosoGrfx.DeviceDesc = "Contoso Graphics Card Extension"

INF-файл программного компонента

[Version]
Signature   = "$WINDOWS NT$"
Class       = SoftwareComponent
ClassGuid   = {5c4c3332-344d-483c-8739-259e934c9cc8}
Provider    = %CONTOSO%
DriverVer   = 06/21/2006,1.0.0.0
CatalogFile = ContosoCtrlPnl.cat
PnpLockdown = 1

[SourceDisksNames]
1 = %Disk%,,,""

[SourceDisksFiles]
ContosoCtrlPnl.exe = 1

[DestinationDirs]
DefaultDestDir = 13

[Manufacturer]
%CONTOSO%=Contoso,NTx86

[Contoso.NTx86]
%ContosoCtrlPnl.DeviceDesc%=ContosoCtrlPnl, SWC\VID0001&PID0001&SID0001

[ContosoCtrlPnl.NT]
CopyFiles=ContosoCtrlPnl.NT.Copy

[ContosoCtrlPnl.NT.Copy]
ContosoCtrlPnl.exe

[ContosoCtrlPNl.NT.Services]
AddService = , %SPSVCINST_ASSOCSERVICE%

[ContosoCtrlPnl.NT.Software]
AddSoftware = ContosoGrfx1CtrlPnl,, Software_Inst

[Software_Inst]
SoftwareType = 1
SoftwareBinary = %13%\ContosoCtrlPnl.exe
SoftwareArguments = <<DeviceInstanceID>>
SoftwareVersion = 1.0.0.0

[Strings]
SPSVCINST_ASSOCSERVICE = 0x00000002
CONTOSO = "Contoso"
ContosoCtrlPnl.DeviceDesc = "Contoso Control Panel"

Процесс проверки и отправки драйверов для infs компонентов совпадает с процессом для обычных INFs. Дополнительные сведения см. в статье Windows HLK начало работы.

Дополнительные сведения о классах установки см. в разделе Классы установки определяемых системой устройств, доступные поставщикам.

См. также:

Директива INF AddComponent

Директива INF AddSoftware

Раздел INF DDInstall.Components

INF DDInstall.Software Section