使用 INX 文件创建 INF 文件

编写 Windows 驱动程序时,可以创建单个 INX 文件,并使用 Microsoft Visual Studio 或 Stampinf 工具根据需要生成特定于版本的 INF 文件,而不是维护多个特定于版本的 INF 文件。

INX 文件类似于 INF 文件,但它包含表示版本信息的字符串变量。

使用 Visual Studio 生成驱动程序时,生成过程将运行 Stampinf,以将 INX 文件中的字符串变量替换为表示特定硬件体系结构或框架版本的文本字符串。 还可以手动运行位于 WDK 的 bin 子目录中的 Stampinf。

在 Visual Studio 中修改 Stampinf 属性:

  1. 打开驱动程序包项目的“属性页”。
  2. 右键单击解决方案资源管理器中的包项目,然后选择“属性”。
  3. 在包的“属性页”中,单击“ 配置属性”,然后单击 “StampInf”。

WDK 包括所有 KMDF 和 UMDF 示例驱动程序的 INX 文件。

可以在 INX 文件中使用以下字符串变量:

$ARCH$

    Stampinf 将此变量替换为特定于体系结构的字符串。 例如,如果使用 x86 生成环境,该工具会将 $ARCH$ 替换为“x86”。 如果需要在 INF 文件中指定特定体系结构,例如在 [**INF 制造商部分] (,则可以使用 $ARCH$ 字符串。/install/inf-manufacturer-section.md) ,如下所示:
    [Manufacturer]
    %StdMfg%=Standard,NT$ARCH$
    

$KMDFCOINSTALLERVERSION$

    如果使用 [Stampinf] (./devtest/stampinf.md) 工具的 -*k* 选项,Stampinf 将此变量替换为表示特定版本的 KMDF 共同安装程序的字符串。 在 INF 文件中指定框架的共同安装程序时,可以使用 $KMDFCOINSTALLERVERSION$ 变量,例如在 [**INF DDInstall.CoInstallers 节**] (./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$

    如果在 Visual Studio 中设置 “KMDF 版本号” 属性 (或使用 [Stampinf] (./devtest/stampinf.md) 工具的 -*k* 选项) ,Stampinf 将此变量替换为表示特定 KMDF 版本的字符串。 在 INF 文件中指定框架的版本时,例如指定 [KmdfLibraryVersion] (installing-the-framework-s-co-installer.md) 指令时,可以使用 $KMDFVERSION$ 变量,如下所示:
    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 选项来替换 INX 文件中的 UMDF 字符串变量。 如果驱动程序包同时包含基于 UMDF 的驱动程序和基于 KMDF 的驱动程序,则可以将 -k 和 -u 选项与单个 Stampinf 命令和单个 INX 文件一起使用。