Использование INX-файлов для создания INF-файлов

При написании драйвера Windows вместо поддержки нескольких INF-файлов для конкретных версий можно создать один INX-файл и использовать Microsoft Visual Studio или средство Stampinf для создания INF-файлов для конкретной версии, когда они вам нужны.

INX-файл похож на INF-файл, но содержит строковые переменные, представляющие сведения о версии.

При сборке драйвера с помощью Visual Studio процесс сборки запускает Stampinf, чтобы заменить строковые переменные в INX-файлах текстовыми строками, представляющими определенную архитектуру оборудования или версию платформы. Вы также можете вручную запустить Stampinf, который находится в подкаталоге bin WDK.

Чтобы изменить свойства Stampinf в Visual Studio, выполните следующие действия.

  1. Откройте страницы свойств для проекта пакета драйверов.
  2. Щелкните правой кнопкой мыши проект пакета в Обозреватель решений и выберите Свойства.
  3. На страницах свойств пакета щелкните Свойства конфигурации, а затем — StampInf.

WDK включает INX-файлы для всех примеров драйверов KMDF и UMDF.

В INX-файле можно использовать следующие строковые переменные:

$ARCH$

    Stampinf заменяет эту переменную строкой для конкретной архитектуры. Например, если вы используете среду сборки x86, средство заменяет $ARCH$ на "x86". Строку $ARCH$ можно использовать везде, где необходимо указать определенную архитектуру в INF-файле, например в разделе [**INF Manufacturer**](.. /install/inf-manufacturer-section.md), как показано ниже:
    [Manufacturer]
    %StdMfg%=Standard,NT$ARCH$
    

$KMDFCOINSTALLERVERSION$

    Если используется [Stampinf](.. Параметр средства /devtest/stampinf.md) -*k*, Stampinf заменяет эту переменную строкой, представляющей определенную версию совместного установщика KMDF. Переменную $KMDFCOINSTALLERVERSION$ можно использовать при указании совместного установщика платформы в INF-файле, например в [**INF DDInstall.CoInstallers section**](.. /install/inf-ddinstall-coinstallers-section.md), как показано ниже:
    [ECHO_Device.NT.CoInstallers]
    AddReg=ECHO_Device_CoInstaller_AddReg
    CopyFiles=ECHO_Device_CoInstaller_CopyFiles
    
    [ECHO_Device_CoInstaller_AddReg]
    HKR,,CoInstallers32,0x00010000, "WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller"
    
    [ECHO_Device_CoInstaller_CopyFiles]
    WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll
    

$KMDFVERSION$

    Если вы задали свойство **НОМЕР версии KMDF** в Visual Studio (или используйте [Stampinf](.. Параметр средства /devtest/stampinf.md) -*k*). Stampinf заменяет эту переменную строкой, представляющей определенную версию KMDF. Переменную $KMDFVERSION$ можно использовать при указании версии платформы в INF-файле, например при указании директивы [KmdfLibraryVersion](installing-the-framework-s-co-installer.md) следующим образом:
    KmdfLibraryVersion = $KMDFVERSION$
    

$UMDFCOINSTALLERVERSION$

    [SourceDisksFiles] WudfUpdate_$UMDFCOINSTALLERVERSION$.dll=1

    [CoInstallers_CopyFiles] WudfUpdate_$UMDFCOINSTALLERVERSION$.dll

    [CoInstallers_AddReg] HKR,,CoInstallers32,0x00010000,"WUDFUpdate_$UMDFCOINSTALLERVERSION$.dll"

$UMDFVERSION$

    [UMDFYourDriver_Install]
    UmdfLibraryVersion=$UMDFVERSION$
    

Stampinf также поддерживает параметр -u для замены строковых переменных UMDF в INX-файле. Если пакет драйверов включает драйверы на основе UMDF и драйверы на основе KMDF, можно использовать параметры -k и -u с одной командой Stampinf и одним INX-файлом.