InfVerif 错误 2084

错误信息

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

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

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

该文件可能完全从此 INF 的 CopyFiles 指令中省略,或者某些体系结构或 OS 版本可能存在此文件,但并非全部体系结构或 OS 版本都存在此文件。 确保正在为发生错误的体系结构和 OS 版本复制它。

原因

Typo

常见原因是服务二进制声明或 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"""