Static Driver Verifier (SDV) is failing at Intercepted Build Stage

Hello,

I am working on generic USB Drivers written based on WDM architecture. I’m using VS2017 with the SDK10.0.16299.15 and WDK 10.0.16299.15 versions.

While running the SDV for my project, it failed at the Intercepted Build Stage. I tried to run the SDV through the command line with debug options and analysed the smvcl.log (logs are mentioned below).

msbuild /t:sdv /p:Inputs="/check:* /debug";Configuration=Release;Platform=x64 Wausb.vcxproj
Microsoft (R) Build Engine version 15.9.21+g9802d43bc3 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 4/29/2024 10:19:19 AM.
Project "C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\Wausb.vcxproj" on node 1 (sdv target(s)).
sdv:
  staticdv /check:* /debug
  SDV: C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV
  SMV: C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv
  SDVAP: C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\analysisplugins\sdv
  Build environment: msbuild
  [INFO] Cleaning ...
  [INFO] Setting interceptor platform to x64
  [INFO] Setting platform to x86_amd64
  [DEBUG] Transformation successful
  [INFO] Validating XML against schema: C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin\Config.xsd
  [DEBUG] The validity is True
  [INFO] Running local scheduler with 6 threads
  [DEBUG] Queuing action: NormalBuild on local
  [DEBUG] scheduler found for local
  [DEBUG] Executing: NormalBuild
  [DEBUG] cumulative exit code is 0
  [INFO] Driver type found: wdm
  [INFO] Currently reading and validating XML settings from C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\data\wdm\sdv-default.xml
  [INFO] Currently reading and validating XML settings from a user provided configuration in C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\sdv-default.xml
  [DEBUG] entry.action
  [DEBUG] [workingDir, C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb]
  [DEBUG] [logFilePath, ]
  [DEBUG] [assemblyDir, C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin]
  [DEBUG] [configFilePath, C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\analysisplugins\sdv\configurations\msbuild-build-verify.xml]
  [DEBUG] [smvLogFileNamePrefix, smvbuild]
  [DEBUG] [rulesBasePath, C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\rules\]
  [DEBUG] [platform, x86_amd64]
  [DEBUG] [interceptorPlatform, x64]
  [DEBUG] [interceptorPath, C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe]
  [DEBUG] [finalCompilePath, C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\\Tools\MSVC\14.16.27023\bin\HostX86\x64\;C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\\Tools\MSVC\14.16.27023\bin\Ho
  stX86\x86]
  [DEBUG] [projectFile, Wausb.vcxproj]
  [DEBUG] [KmIncludePath, C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\km\crt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\km;C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared]
  [DEBUG] [dev14, C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\]
  [DEBUG] [name, NormalBuild]
  [DEBUG] [actionPath, C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb]
  [DEBUG] [outputDir, C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\sdv]
  [DEBUG] [driverType, wdm]
  [DEBUG] smvvars
  [DEBUG] [workingDir, C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb]
  [DEBUG] [logFilePath, ]
  [DEBUG] [assemblyDir, C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin]
  [DEBUG] [configFilePath, C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\analysisplugins\sdv\configurations\msbuild-build-verify.xml]
  [DEBUG] [smvLogFileNamePrefix, smvbuild]
  [DEBUG] [rulesBasePath, C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\rules\]
  [DEBUG] [platform, x86_amd64]
  [DEBUG] [interceptorPlatform, x64]
  [DEBUG] [interceptorPath, C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe]
  [DEBUG] [finalCompilePath, C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\\Tools\MSVC\14.16.27023\bin\HostX86\x64\;C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\\Tools\MSVC\14.16.27023\bin\Ho
  stX86\x86]
  [DEBUG] [projectFile, Wausb.vcxproj]
  [DEBUG] [KmIncludePath, C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\km\crt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\km;C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared]
  [DEBUG] [dev14, C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\]
  [DEBUG] [outputDir, C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\sdv]
  [DEBUG] [oldOutputDir, C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\x64\Release]
  [DEBUG] [driverType, wdm]
  [DEBUG] [sdvRulesPath, C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\rules\wdm]
  [DEBUG] [backupEngine, ]
  [DEBUG] [ModelExportLibraries, ]
  [DEBUG] [SlamCFlags, ]
  [DEBUG] [FrontEnd, esp]
  [DEBUG] [Engine, engineq]
  [DEBUG] [MaxDriverSize, 100000]
  [DEBUG] [localThreads, 6]
  [DEBUG] [SlamclFlags, --smv --input "[$outputDir]\scan" --final --output slam --tune_entry_points "[$outputDir]\Sdv-Map.h"  /D_SDV_  "-I[$workingDir]" "-I[$outputDir]" "-I[$headersDir]"  "-I%sdv%\osmodel\[$driverType]" [$sdvFinalCompi
  leClArgs] /FI"[$analysisDir]\[$analysisProperty]\[$analysisProperty].h" /FI"%sdv%\osmodel\[$driverType]\harness-defs.h"  /FI"[$outputDir]\sdv-map.h" "-I%sdv%\rules\[$driverType]" @"[$outputDir]\sdv_cl.rsp" "[$outputDir]\sdv-harness.c"
  ]
  [DEBUG] [OsModelLibraries, no_cfg_support.lib,bufferoverflowfastfailk.lib,csq.lib,int64.lib,rtlver.lib,ntstrsafe.lib,sehupd.lib,wdmsec.lib,wdm.lib,ntoskrnl.lib,BufferOverflowK.lib,hal.lib,wmilib.lib,memcmp.lib,usbd.lib,armrt.lib]
  [DEBUG] [ScannerFlags, --input slam --output scan --entry_points_base "%sdv%\osmodel\[$driverType]\dispatch_routines.h" /D_SDV_]
  [DEBUG] [SlamFlags, -driver -arrays -no_pa 3 -field_pa_version nocollapse -max_fields_nocollapse 100 -driver -arrays -no_pa 3 -field_pa_version nocollapse -max_fields_nocollapse 100 -halt_labels -gate RunDispatchFunction -driver -arra
  ys -no_pa 3 -field_pa_version nocollapse -max_fields_nocollapse 100]
  [DEBUG] [headersDir, C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\sdv\headers]
  [DEBUG] [sdvFinalCompileClArgs,  /DSDV_Include_NTDDK /DSDV_Include_NTIFS]
  [DEBUG] Queuing action: InterceptedBuild on local

  [INFO] 1 of 2 jobs remaining. Avg(s): 4.00. Std.Dev(s): 0.00[DEBUG] scheduler found for local
  [DEBUG] Executing: InterceptedBuild
  [DEBUG] cumulative exit code is 1
  [FATAL ERROR] Action: InterceptedBuild, failed.
C:\Program Files (x86)\Windows Kits\10\build\windowsdriver.Sdv.targets(136,9): error MSB3073: The command "staticdv /check:* /debug" exited with code -1. [C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\Wausb.vcxproj]
Done Building Project "C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\Wausb.vcxproj" (sdv target(s)) -- FAILED.


Build FAILED.

"C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\Wausb.vcxproj" (sdv target) (1) ->
(sdv target) ->
  C:\Program Files (x86)\Windows Kits\10\build\windowsdriver.Sdv.targets(136,9): error MSB3073: The command "staticdv /check:* /debug" exited with code -1. [C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\Wausb.vcxproj]

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:10.67

On analysing the smvcl.log, it is Unable to load plug-in EspPersist.dll.

smvcl.log
----------------------------------------------------------
iwrap: cl.exe called with args @C:\Users\DTMLLUAdminUser\AppData\Local\Temp\tmp386d174d637e47f78681768f06df49ca.rsp,/w,/iwrap:cl.exe,/plugin:C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin\EspPersist.dll,-I"C:\Program,Files,(x86)\Windows,Kits\10\TOOLS\SDV\osmodel\wdm",-I"C:\Program,Files,(x86)\Windows,Kits\10\TOOLS\SDV\osmodel\wdf",-I"C:\Program,Files,(x86)\Windows,Kits\10\TOOLS\SDV\osmodel\ndis",-I"C:\Program,Files,(x86)\Windows,Kits\10\TOOLS\SDV\osmodel\fs",-I"C:\Program,Files,(x86)\Windows,Kits\10\TOOLS\SDV\osmodel\mpio",-I"C:\Program,Files,(x86)\Windows,Kits\10\TOOLS\SDV\osmodel\storport",-I"C:\anwar\v3_1\WAUSB_1.9.12.0Src\WaUsb\sdv\headers"match2:  WAUsb.cpp
match2:  WAUSBCP2102.cpp
match2:  WAUSBCsq.cpp
match2:  WAUsbMsg.cpp
match2:  WAUsbPnp.cpp
match2:  WAUsbPwr.cpp
match2:  WAUsbUtils.cpp
WAUsb.cpp
c1xx : fatal error C1250: Unable to load plug-in 'C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin\EspPersist.dll'.
WAUSBCP2102.cpp
c1xx : fatal error C1250: Unable to load plug-in 'C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin\EspPersist.dll'.
WAUSBCsq.cpp
c1xx : fatal error C1250: Unable to load plug-in 'C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin\EspPersist.dll'.
WAUsbMsg.cpp
c1xx : fatal error C1250: Unable to load plug-in 'C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin\EspPersist.dll'.
WAUsbPnp.cpp
c1xx : fatal error C1250: Unable to load plug-in 'C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin\EspPersist.dll'.
WAUsbPwr.cpp
c1xx : fatal error C1250: Unable to load plug-in 'C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin\EspPersist.dll'.
WAUsbUtils.cpp
c1xx : fatal error C1250: Unable to load plug-in 'C:\Program Files (x86)\Windows Kits\10\TOOLS\SDV\smv\bin\EspPersist.dll'.
cl : Command line warning D9025 : overriding '/errorreport:none' with '/errorreport:queue'
----------------------------------------------------------

I have checked that EspPersist.dll exists at the mentioned path. Also, I have uninstalled and reinstalled the SDK and WDK but the issue persists.

Can anyone help me with this?