The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
this is my first attempt ever to use SDV, and it's with a WDF driver that the verifier categorizes as "generic". (I suppose that's because it is a WSK client, or in other words, is linked against netio.lib, one of the "graylisted" libraries mentioned here.) I have Visual Studio 2019 (v16.3.9) and a recently downloaded WDK 1903, all running on Windows 10 v1903.
Anyway, no matter what I do, SDV always stops after roughly 50 minutes, and the GUI tells me that the rule checks were aborted by timeout. Things I've tried:
Launching SDV from a command prompt instead of the GUI. This does provide helpful information, like the full path for two instances of sdv-default.xml being read (one from C:\Program Files (x86)\Windows Kits\10\Tools\SDV\data\generic\, one from my project directory) and the total time taken for analysis, but it doesn't change the outcome.
Various timeout values entered in the GUI (like 10, 120 or 180 minutes). I can see that they are translated to the appropriate seconds value in my sdv-default.xml, but analysis always stops after 2980 seconds (plus/minus one or two).
Launching SDV from an EWDK command prompt. I run LaunchBuildEnv.cmd from the mounted ISO image, then change to my project directory and run a batch file with the required MsBuild calls. This creates additional problems (some read-only files get placed in subfolders of my project directory, which MsBuild later doesn't know how to clean up, but fortunately "rd /s /q sdv" does), but I still get timeout after 50 minutes.
Running SDV in debug mode gave me about 30K of console output to ponder, but no hints about the processing of my timeout value (or about the lack of it). Actually SDV doesn't even say "timeout" on the console (it's only the GUI that says so later on). What it does say after being quiet and busy for many, many minutes is:
[DEBUG] cumulative exit code is 0
[DEBUG] Reached ActionComplete of Master CheckRule - nullcheck
[DEBUG] Done executing action for CheckRule - nullcheck
[DEBUG] Could not find valid URL mapping for rule nullcheck
And no, it's not a particular problem with the nullcheck rule. When I explicitly ask for the useafterfree rule, the total analysis time is only slightly different (closer to 2995 seconds rather than 2980).
Still wondering where the unwanted timeout value came from, I took a look at the WDK default version of sdv-default.xml, from Tools\SDV\data\generic. Nothing suspicious there, SDV_SlamConfig_Timeout=86400, but even changing that value to, say, 5400 seconds doesn't do me any good.
Has anyone ever seen anything like this? Me, I'm stuck. SDV won't properly look at my driver, and I'm running out of ideas to try.
|Upcoming OSR Seminars|
|OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!||Kernel Debugging||30 Mar 2020||OSR Seminar Space|
|Developing Minifilters||15 Jun 2020||LIVE ONLINE|
|Writing WDF Drivers||22 June 2020||LIVE ONLINE|
|Internals & Software Drivers||28 Sept 2020||Dulles, VA|