共用方式為


靜態驅動程式驗證器已知問題 - Windows 10 版本 1809

此頁面描述您在 Windows 驅動程式套件 (WDK) 中使用靜態驅動程式驗證器 (SDV) 工具時可能會遇到的常見問題。 下列資訊特別適用於隨附於 Windows 10 2018 年 10 月更新 (版本 1809) 的工具版本。

如需最新官方 WDK 的已知 SDV 問題,請參閱 WDK 已知問題

InterceptedBuild 失敗

主要徵兆:SDV 與 FATAL ERROR: Unrecoverable error in InterceptedBuild stage 一起失敗。

檢查 DVL 檔案時,您會看到具有 ScoreName="[driverName].[architecture].SDV.NA.Reason"ScoreUnit="Unrecoverable error in InterceptedBuild stage." 值的 AssessmentScore

針對 InterceptedBuild 失敗,請執行下列步驟來診斷問題。

  1. 使用 /debug 旗標從 Visual Studio 2017 Native Tools 命令行重新執行 SDV。 如需命令選項的詳細資訊,請參閱 靜態驅動程序驗證器命令

    一。 首先,在任何相依連結庫專案上執行 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

    丙. 如果您沒有看到包含 內部編譯程序錯誤的任何行,請搜尋任何以 錯誤開頭的行。 這些可能或可能不是需要 errata 的問題。 電子郵件 stlogohelp@microsoft.com

  5. 開啟smvlink1.log並搜尋詞組 內部編譯程序錯誤

    一。 如果包含 內部編譯程式錯誤slamcl: error: 階段 2: 記憶體不足 的錯誤訊息存在,這是需要 errata 的已知問題。

    b。 如果您沒有看到包含 內部編譯程序錯誤的任何行,請搜尋任何以 錯誤開頭的行。 這些問題可能需要或可能不需要更正。 電子郵件 stlogohelp@microsoft.com

    丙. 如果您沒有看到上述任何內容,請連絡 MSFT 以取得支援。

若要連絡 MSFT 以取得支援,請執行下列命令,以確保原始程式碼不會分享:

  1. 執行已啟用 /debug 標誌的 SDV,並將輸出導入至文字檔。

  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檔案

    丙. smvexecute-InterceptedBuild.log檔案

    d。 “sdv” 子資料夾

Visual Studio C++ 2013 運行時間不存在

主要徵兆:在沒有 Visual Studio C++ 2012 和 2013 執行時間的系統上執行 SDV 時,使用者可能會在彈出視窗中看到錯誤,例如程式代碼執行無法繼續,因為找不到 [MSVCR110.dll 或 VCOMP110.dll] 。 重新安裝程式可能會修正此問題。

在此情況下,解決方案是同時安裝適用於 Visual Studio 2012 和 2013 的 x86 和 x64 版本的 Visual C++ 可轉散發套件。

最佳做法:使用 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\] 例如 Release,而且 \[Architecture\] 是有效的架構,例如 x64。

DVL 產生無法在 ServerCore 上運作,請使用 Server GUI。

執行時,靜態工具標誌測試會失敗。 檢查測試記錄顯示出與 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失敗。

如果您有與 ServerCore 安裝相同的架構和 Windows 版本的伺服器 GUI 安裝,請將 RoMetadata.dll 檔案從伺服器 GUI 複製到 ServerCore。 DLL 可以在 System32 資料夾中找到,C:\Windows\System32而且應該放在 ServerCore 電腦上的同一個資料夾中。 這應該可讓測試在 ServerCore 上執行。 如果您仍然遇到問題,請參閱下一個因應措施。

第二個因應措施是在伺服器 GUI 上執行,然後將套件與包含 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 認證,請使用 errata 41600。