InfVerif 错误 2084

错误信息

以下错误消息由错误代码 2084 生成:

Service binary '<value>' should reference a CopyFiles destination file.

当服务声明中指定的文件未包含在驱动程序包中时,将发生此错误。 InfVerif 验证驱动程序包中的每个服务二进制程序都有相应的文件复制操作。

该文件可能会完全从此 INF 的 CopyFiles 指令中省略,或者它可能存在于某些体系结构或操作系统版本中,但并非在所有情况下都存在。 确保正在针对发生错误的架构和操作系统版本进行复制。

原因

错字

常见原因是服务二进制声明或 CopyFiles 节中的拼写错误。

[MyCopyFiles]
Binary1.sys

...
[MyServiceInstallSection]
ServiceBinary=%13%\Binar1y.sys

在上述内容中,二进制文件的路径中出现了拼写错误,其中错误地指定了Binar1y.sys,而应为Binary1.sys

收件箱二进制

某些收件箱二进制文件用作设备的函数或筛选器驱动程序。 从历史上看,这些二进制文件可以直接在服务声明中使用,但 Windows 11 和更新版本需要使用 IncludeNeeds 指令正确引用它们。

有关 WUDFRd.sys,请参阅 在 INF 文件中指定反射器

对于 mshidkmdf.sys,使用 mshidkmdf.sys 作为函数驱动程序时,

[DDInstall]
Include=MsHidKmdf.inf
Needs=MsHidKmdf.NT
; also include any existing DDInstall directives

[DDInstall.HW]
Include=MsHidKmdf.inf
Needs=MsHidKmdf.NT.HW
; also include any existing DDInstall.HW directives

[DDInstall.Services]
Include=MsHidKmdf.inf
Needs=MsHidKmdf.NT.Services
; also include any existing any DDInstall.Services directives

要使用 mshidkmdf.sys 作为筛选器驱动程序,请遵循上述模式,但使用以下节名称之一代替 MsHidKmdf.NT.*,并替换所有三个部分中的名称:

上部筛选器:MsHidKmdf_UpperFilter.NT 下层筛选器:MsHidKmdf_LowerFilter.NT

使用筛选器部分时,还必须包括以下模式:

[DDInstall.Filters]
Include=MsHidKmdf.inf
Needs=MsHidKmdf_UpperFilter.NT.Filters

其中,应使用 MsHidKmdf_UpperFilter.NT.Filters 将 WUDFRD 安装为上层筛选器,MsHidKmdf_LowerFilter.NT 作为较低筛选器。

缺少引号

如果服务二进制文件的路径包含空格,但周围没有引号,则会出现此错误。 例如,

ServiceBinary=%13%\Sub Directory\Binary.dll

由于路径中的空间,系统将此视为具有参数Directory\Binary.dll%13%\Sub二进制路径,并且显示此错误是因为%13%\Sub不是有效的二进制文件。 应使用引号来指示这是一个二进制路径,其中 INF 语法使用三引号。 下面解决了此错误:

ServiceBinary="""%13%\Sub Directory\Binary.dll"""