Поделиться через


Известные проблемы с проверкой статических драйверов — Windows 10 версии 1809

На этой странице описаны распространенные проблемы, которые могут возникнуть при использовании средства статической проверки драйверов (SDV) в комплекте драйверов Windows (WDK). Приведенные ниже сведения относятся конкретно к версии средства, поставляемого с обновление Windows 10 за октябрь 2018 г. (версия 1809).

Сведения об известных проблемах с SDV в последней официальной версии WDK см. в статье Известные проблемы WDK .

Сбои перехваченной сборки

Основной симптом: sdv завершается сбоем с FATAL ERROR: Unrecoverable error in InterceptedBuild stage.

При проверке DVL-файла вы увидите AssessmentScore значение с ScoreName="[driverName].[architecture].SDV.NA.Reason" и ScoreUnit="Unrecoverable error in InterceptedBuild stage."

Для случаев сбоев InterceptedBuild выполните следующие действия, чтобы диагностировать проблему.

  1. Повторно запустите SDV из командной строки Visual Studio 2017 Native Tools с флагом /debug. Дополнительные сведения о параметрах команд см. в разделе Команды статического средства проверки драйверов.

    а. Сначала запустите функцию библиотеки SDV для любых зависимых проектов библиотек. Например: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/lib /debug".

    b. Затем запустите SDV в самом проекте драйвера. Пример: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/check /debug"

  2. Убедитесь, что сбой снова возникает на этапе InterceptedBuild.

  3. Перейдите в папку sdv , созданную в папке драйвера при запуске SDV.

  4. Откройте smvcl.log и найдите фразу "внутренняя ошибка компилятора".

    а. Если сообщение об ошибке, содержащее внутреннюю ошибку компилятора и фразу, аналогичную неустранимой ошибке C1001, в компиляторе произошла внутренняя ошибка. (файл компилятора msc1.cpp, строка 1511) присутствует, это известная проблема, для которой требуется errata (errata ID 40705). Если вам нужна дополнительная помощь, отправьте электронное письмо по адресу stlogohelp@microsoft.com.

    b. Если имеется сообщение об ошибке, содержащее внутреннюю ошибку компилятора , но оно не похоже на приведенное выше, скорее всего, для этого потребуется ошибка, но может не быть известной проблемой. Напишите на адрес stlogohelp@microsoft.com.

    c. Если строки, содержащие внутреннюю ошибку компилятора, не отображаются, найдите строки, начинающиеся с ошибки. Это могут быть проблемы, требующие ошибок. Напишите на адрес stlogohelp@microsoft.com.

  5. Откройте файл smvlink1.log и найдите фразу внутренняя ошибка компилятора.

    а. Если отображается сообщение об ошибке, содержащее внутреннюю ошибку компилятора и slamcl: error: на этапе 2: нехватка памяти , это известная проблема, которая требует ошибки.

    b. Если строки, содержащие внутреннюю ошибку компилятора, не отображаются, найдите строки, начинающиеся с ошибки. Это могут быть проблемы, требующие ошибок. Напишите на адрес stlogohelp@microsoft.com.

    c. Если вы не видите ни одного из перечисленных выше вариантов, обратитесь за поддержкой к MSFT.

Чтобы обратиться за поддержкой к MSFT, убедитесь, что исходный код не предоставляется совместно, выполнив следующую команду:

  1. Запустите SDV с включенным флагом /debug и передайте выходные данные в текстовый файл.

  2. Перейдите в папку sdv в каталоге драйверов и выполните следующие команды, чтобы очистить результаты сборки, которые могут предоставлять источники:

    del /s *.obj
    del /s *.rawcfg*
    del /s *.li
    del /s *.pdb
    del /s *.sys
    
  3. Отправьте следующие файлы в stlogohelp@microsoft.com:

    а. Текстовый файл с выходными данными запуска SDV

    b. Файл smexecute-NormalBuild.log

    c. Файл smvexecute-InterceptedBuild.log

    d. Вложенная папка sdv

Среды выполнения Visual Studio C++ 2013 отсутствуют

Основной симптом. При запуске SDV в системе, в котором нет сред выполнения Visual Studio C++ 2012 и 2013, пользователь может увидеть ошибки во всплывающих окнах, таких как Выполнение кода не может быть продолжено, так как [MSVCR110.dll или VCOMP110.dll] не найден. Повторная установка программы может устранить эту проблему.

В этом случае решение заключается в установке x86 и x64 Распространяемый компонент Visual C++ для Visual Studio 2012 и 2013.

Рекомендация: используйте Visual Studio 2017 версии 15.8

По умолчанию анализ кода не выполняет автоматическую сборку драйвера в Visual Studio 15.7. Если драйвер зависит от создаваемых двоичных файлов, это может привести к сбою на панели вывода . Вместо этого рекомендуется использовать версию 15.8.

Сбой создания DVL после удаления конфигурации из проекта

Основной симптом. После удаления конфигурации из проекта через окно Configuration Manager пользователь видит следующее сообщение при выборе пункта Создать журнал проверки драйвера:Please select a driver project. Driver Verification Log cannot be created for the selected platform tool set: 'v100'"

Инструкции по решению:

  1. Создайте резервную копию файла проекта, а затем откройте его в текстовом редакторе.

  2. \<PropertyGroup Label="Globals"\> В разделе найдите два XML-тега: один с форматом \<Configuration\>\[Configuration type\]\</Configuration\> и один с форматом \<Platform Condition="'$(Platform)' == ''"\>\[Architecture\]\</Platform\>, где \[Configuration type\] и \[Architecture\] являются конфигурацией и выпуском по умолчанию для этого типа проекта.

  3. Обновите \[Configuration type\] значения и \[Architecture\] , соответствующие вашему проекту. Например, если вы удалили платформу Win32, можно выполнить обновление \[Architecture\] до x64.

Альтернативный обходной путь:

  1. Откройте командную строку Visual Studio 2017 Native Tools.

  2. Перейдите в папку драйвера.

  3. Запустите msbuild [Your Project] /p:Configuration=[Configuration type] /p:Platform=[Architecture] /t:dvl, где \[Your Project\] — это файл vcxproj, \[Configuration type\] является допустимой конфигурацией, такой как Выпуск, и \[Architecture\] является допустимой архитектурой, такой как x64.

Создание DVL не работает на ServerCore, используйте графический интерфейс сервера

Проверка логотипа статических средств завершается сбоем при выполнении. При просмотре журналов тестирования отображается сбой, аналогичный Failed to load 'C:\hlk\JobsWorkingDir\Tasks\WTTJobRun4749E809-0166-E811-8368-F4521454FFE1\Devfund_DvlTest.dll'. (Could not load managed test module because RoMetadata.dll could not be found)

Убедитесь, что пакет TAEF развернут или RoMetadata.dll развернут в расположении в переменной среды PATH.

Ключевым симптомом является неспособность загрузить RoMetadata.dll.

При установке графического пользовательского интерфейса сервера с той же архитектурой и версией Windows, что и установка ServerCore, скопируйте файл RoMetadata.dll из графического пользовательского интерфейса сервера в ServerCore. Библиотека DLL находится в папке System32 (например, C:\Windows\System32) и должна быть помещена в ту же папку на компьютере ServerCore. Это должно позволить тесту выполняться на ServerCore. Если у вас по-прежнему возникают проблемы, ознакомьтесь со следующим обходным решением.

Второй обходной путь — запустить в графическом интерфейсе сервера, а затем объединить пакет с пакетом, содержащим результаты из server Core. Сведения о слиянии пакетов см. в разделе Слияние пакетов.

Сбой средства проверки статических драйверов с выходом из lib.exe/iwrap.exe с ошибкой 0xc0000142

Файл smvbuild.log содержит сообщение, похожее на следующую ошибку:

c:\Program Files\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1144,5): error MSB6006: "Lib.exe" exited with code -1073741502.

Done executing task "LIB" -- FAILED.

Это известная проблема. Если эта проблема блокирует сертификацию WHCP, используйте ошибку 41600.