为什么 $KMDFCOINSTALLERVERSION$ 评估为分号?
Why does $KMDFCOINSTALLERVERSION$ evaluate to semicolon?
背景
此问题与 RAMDisk Storage Driver Sample, but also applies to the Toaster Sample Driver 有关,甚至可能适用于任何使用 .INX 文件和 CoInstallers 的驱动程序。
我最初的问题是 "Why am I missing the WdfCoInstallerXXXXX.dll file when my build was successful?" 查看 ramdisk.inf 文件后,我意识到所有共同安装程序部分都是空的(用分号代替)。这让我想到了下面的问题。
问题
ramdisk.inx 文件的共同安装程序部分使用了 $KMDFCOINSTALLERVERSION$ 变量。根据 this 页面,这应该是一个有效变量。但是,在成功构建后,所有引用 $KMDFCOINSTALLERVERSION$ 变量的行在生成的 ramdisk.inf 文件中计算为分号。为什么?
附加信息
ramdisk.inx 文件中的所有其他变量,例如 $KMDFVERSION$ 和 $ARCH $,得到正确评估。
原因
事实证明,这是因为我没有安装指定的 KMDF 库版本,即使我最近安装了最新的 WDK 10。根据 this 页面,"if you omit the KMDF Version Minor, the most recent minor version is used."
换句话说,当我只支持 1.7、1.9 和 1.11 时,我尝试使用 KMDF 1.15 版。您可以检查可再发行目录以查看您支持哪个版本。我的位于 C:\Program Files (x86)\Windows Kits\Redist\wdf\x64
.
修复
转到 Project->Properties->Driver Settings->Driver Model
,然后 select 相应的 KMDF 版本。之后,重建,你的 .INF 文件将被正确填充,你的驱动程序包将包含适当的 WdfCoInstallerXXXXX.dll.
背景
此问题与 RAMDisk Storage Driver Sample, but also applies to the Toaster Sample Driver 有关,甚至可能适用于任何使用 .INX 文件和 CoInstallers 的驱动程序。
我最初的问题是 "Why am I missing the WdfCoInstallerXXXXX.dll file when my build was successful?" 查看 ramdisk.inf 文件后,我意识到所有共同安装程序部分都是空的(用分号代替)。这让我想到了下面的问题。
问题
ramdisk.inx 文件的共同安装程序部分使用了 $KMDFCOINSTALLERVERSION$ 变量。根据 this 页面,这应该是一个有效变量。但是,在成功构建后,所有引用 $KMDFCOINSTALLERVERSION$ 变量的行在生成的 ramdisk.inf 文件中计算为分号。为什么?
附加信息
ramdisk.inx 文件中的所有其他变量,例如 $KMDFVERSION$ 和 $ARCH $,得到正确评估。
原因
事实证明,这是因为我没有安装指定的 KMDF 库版本,即使我最近安装了最新的 WDK 10。根据 this 页面,"if you omit the KMDF Version Minor, the most recent minor version is used."
换句话说,当我只支持 1.7、1.9 和 1.11 时,我尝试使用 KMDF 1.15 版。您可以检查可再发行目录以查看您支持哪个版本。我的位于 C:\Program Files (x86)\Windows Kits\Redist\wdf\x64
.
修复
转到 Project->Properties->Driver Settings->Driver Model
,然后 select 相应的 KMDF 版本。之后,重建,你的 .INF 文件将被正确填充,你的驱动程序包将包含适当的 WdfCoInstallerXXXXX.dll.