Ошибка InfVerif 2084

Сведения об ошибке

Следующее сообщение об ошибке создается кодом ошибки 2084:

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

Эта ошибка возникает, когда файл, указанный в объявлении службы, не входит в состав пакета драйвера. InfVerif проверяет наличие соответствующей операции копирования файлов для каждого служебного бинарного файла в пакете драйвера.

Файл может быть полностью исключен из директив CopyFiles этого INF, либо он может присутствовать для некоторых архитектур или версий ОС, а для некоторых - нет. Убедитесь, что он копируется для версии архитектуры и ОС, в которой возникает ошибка.

Причины

Опечатка

Распространенной причиной является опечатка в двоичном объявлении службы или разделе CopyFiles.

[MyCopyFiles]
Binary1.sys

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

В приведенном выше примере в пути к двоичному файлу имеется опечатка, где Binar1y.sys упомянут вместо Binary1.sys.

Inbox Binary

Некоторые двоичные файлы в папке "Входящие" используются в качестве драйвера функции или фильтра для устройства. Исторически эти двоичные файлы можно было использовать непосредственно в объявлении службы, но для Windows 11 и более новой версии требуется корректная ссылка на двоичные файлы с помощью директив Include и Needs.

Для 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

Из-за пробела в пути система обрабатывает это как двоичный путь %13%\Sub с аргументами Directory\Binary.dll, и эта ошибка отображается, так как %13%\Sub не является допустимым двоичным файлом. Кавычки следует использовать для указания того, что это один двоичный путь, где синтаксис INF использует тройные кавычки. Ниже устранена эта ошибка:

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