本節說明一些較常見的 SDV 錯誤訊息的含義,並建議解決這些錯誤訊息的方法。
從 Visual Studio 啟動 SDV 時,您可能會看到下列錯誤:
- SDV 只會在非偵錯設定上運作:如訊息所述,SDV 必須在非偵錯設定上執行。 請確定您的專案已設定為發行組態,或者如果沒有可用組態,請新增一個,並重新啟動 SDV。
- 載入可用規則時發生錯誤:SDV 找不到您的驅動程式模型所需的規則,或無法正確判斷驅動程式模型。如果您的驅動程式不是 WDM、KMDF、NDIS 或 Storport 驅動程式,則更有可能發生這種情況。 如果您的 WDK 已正確安裝,您可以直接從命令列執行 SDV 來解決此錯誤 (請參閱 靜態驅動程式驗證器命令 (MSBuild) )。
- SDV 無法清理驅動程式目錄:在某些情況下,當您按一下「清理」按鈕時,權限錯誤可能會阻止 SDV 正確清理驅動程式目錄中的舊結果。 如果先前執行的 sdv 檔案目前正在使用中,也會發生此錯誤。 確保驅動程式目錄中沒有任何內容使用 SDV 文件,然後刪除任何「sdv」和「sdv.temp」資料夾以及任何「staticdv.job」檔案。
如果 SDV 在嘗試分析時失敗,它會將失敗的階段列印為標準輸出。 從 Visual Studio GUI 執行 SDV 時,您可以切換至 [警示] 索引標籤來查看此輸出。
SDV 可能失敗的階段包括:
- NormalBuild:SDV 無法使用標準 MSBuild 命令建置驅動程式。 如果您有特製化的建置邏輯、依賴專案檔中的解決方案元素,或具有外部建置元件,則可能會發生這種情況。 如果您的專案依賴 $(SolutionDir) 屬性,您可以從命令列重新執行 SDV,並將 /p:SolutionDir=[your solution dir] 新增至 MSBuild 命令結尾,將它附加至命令列,以直接提供此變數。 請參閱靜態驅動程式驗證器命令 (MSBuild)。
- InterceptedBuild:SDV 無法建置驅動程式以進行分析。
- 掃描:SDV 找不到驅動程式的進入點。 此處的錯誤可能表示未找到進入點,您應該更新函數 roletypes 或 sdv-map.h。 如需詳細資訊,請參閱 使用函式角色類型宣告 和 核准 Sdv-map.h 檔案 。
- FinalCompile:SDV 無法使用規則和 OS 模型編譯您的驅動程式。
- CheckRule:SDV 無法正確驗證規則。
您可以啟用 SDV 的診斷,以瞭解有關錯誤的詳細資訊。 如需詳細資訊,請參閱 靜態驅動程式驗證器診斷 。