Overview
Testing drivers requires special care due to the potential for system instability. This guide covers safe testing practices, debugging techniques, and common testing scenarios.Testing Environments
Recommended Test Setup
Priority order:-
Virtual Machine (Safest)
- VMware Workstation, VirtualBox, or Hyper-V
- Easy to snapshot and revert
- Isolated from host system
- Supports nested virtualization for testing
-
Dedicated Test Machine
- Secondary computer for driver testing
- Can recover via Safe Mode if needed
- Real hardware testing environment
-
Dual Boot Configuration
- Separate Windows installation for testing
- Production OS remains safe
- Requires disk partitioning
Environment Checklist
Before testing:- System snapshot or backup created
- Test signing mode enabled (for development builds)
- WinDbg or kernel debugger configured (optional but recommended)
- All personal data backed up
- Safe Mode boot option verified
- Recovery USB or installation media available
Pre-Installation Testing
Static Analysis
PREfast Code Analysis: Enabled by default in the project:- Memory leaks
- Buffer overflows
- Uninitialized variables
- Invalid pointer usage
- NTSTATUS handling errors
Driver Verifier (Static Check)
Before installing, verify the driver binary:0x209BB- Standard settings0xFFFFFFFF- All tests (very strict)
Signature Verification
Ensure driver is properly signed:Installing Test Drivers
Enable Test Signing
- “Test Mode” watermark appears on desktop
- Check Settings → System → About → Windows specifications
Manual Driver Installation
Method 1: Device Manager- Open Device Manager (
devmgmt.msc) - Click Action → Add legacy hardware
- Select Install the hardware that I manually select
- Choose Display adapters
- Click Have Disk
- Browse to
MttVDD.inf - Follow installation wizard
Verifying Installation
Check if driver loaded successfully:Runtime Testing
Basic Functionality Tests
1. Monitor Creation
Test: Verify virtual monitors appear- Virtual monitors appear in Display Settings
- Correct number of monitors (based on vdd_settings.xml)
- Monitors show as “Active” in Device Manager
2. Resolution Configuration
Test: Change virtual monitor resolution- Open Settings → System → Display
- Select virtual monitor
- Try different resolutions from dropdown
- Apply and verify no crashes
3. Refresh Rate Testing
Test: Verify refresh rate options- Display Settings → Advanced display
- Select virtual monitor
- Check available refresh rates
- Change to different rate (e.g., 60Hz → 144Hz)
- Verify smooth operation
4. HDR Capability
Test: HDR toggle (if configured)- Display Settings → HDR
- Enable HDR for virtual monitor
- Verify no errors
- Test HDR content playback
HDR testing requires Windows 11 23H2+ and IddCx 1.10 driver build.
5. Multi-Monitor Configuration
Test: Multiple virtual displays- Create 2+ virtual monitors
- Arrange displays in Settings
- Extend desktop across monitors
- Move windows between displays
- Test taskbar on each monitor
Application Compatibility Tests
Streaming Applications
Test with:- OBS Studio
- Parsec
- Moonlight
- Steam Remote Play
- Virtual Desktop (VR)
- Application detects virtual monitor
- Can select virtual monitor as source
- Streaming works without artifacts
- Performance is acceptable
VR Applications
Test with:- Oculus/Meta Quest Link
- SteamVR
- Virtual Desktop
- VR app can use virtual monitor
- No performance degradation
- Display synchronization works
Recording Software
Test with:- OBS Studio
- NVIDIA ShadowPlay (if applicable)
- Windows Game Bar
- Can record from virtual display
- No frame drops
- Audio/video sync maintained
Stress Testing
1. Rapid Configuration Changes
2. Multiple Monitor Cycling
Test: Add/remove monitors repeatedly- Install driver → uninstall → reinstall
- Create monitors → delete → recreate
- Monitor system stability
3. Long-Duration Testing
Test: Leave driver running for extended period- 24+ hours continuous operation
- Monitor for memory leaks
- Check Event Viewer for errors
- Verify performance doesn’t degrade
4. GPU Stress Testing
Test: Heavy GPU load while using virtual display- Run 3DMark or FurMark on physical display
- Simultaneously stream from virtual display
- Monitor temperatures and stability
GPU Adapter Testing
Test: GPU selection via vdd_settings.xml- Driver uses specified GPU
- Falls back to best GPU if name incorrect
- PCI bus number selection works
- Multi-GPU systems handled correctly
EDID Profile Testing
Test: Custom EDID profiles- Place EDID file in EDID directory
- Reference in vdd_settings.xml
- Restart driver or recreate monitor
- Verify:
- Monitor name matches EDID
- Supported resolutions match EDID
- Color spaces and capabilities correct
Debugging Techniques
WPP Tracing
Enable WPP tracing to capture diagnostic logs:Kernel Debugging
Setup kernel debugger (advanced):- Install WinDbg (from Windows SDK)
- Configure kernel debugging:
- Connect debugger from another machine or VM
- Set breakpoints in driver code
Event Viewer Analysis
Check for driver errors:- Open Event Viewer (
eventvwr.msc) - Navigate to Windows Logs → System
- Filter current log:
- Event sources: “DriverFrameworks-UserMode”, “MttVDD”
- Event level: Warning, Error, Critical
Event ID 10016- DCOM permission issues (usually benign)Event ID 219- Driver failed to startEvent ID 7000- Service control manager errors
Memory Leak Detection
Monitor driver memory usage:Common Issues and Diagnostics
Driver Fails to Load
Symptoms: No virtual monitors appear, Device Manager shows error Diagnose:- Check Event Viewer for specific error codes
- Verify driver signature:
signtool verify /v /pa MttVDD.dll - Ensure test signing enabled if using test certificate
- Check Device Manager device status (right-click → Properties)
- Solution: Enable test signing, install certificate to Trusted Root
- Solution: Reinstall driver, verify file integrity
Blue Screen / System Crash
Symptoms: BSOD when loading/using driver Diagnose:- Note STOP code (e.g.,
DRIVER_IRQL_NOT_LESS_OR_EQUAL) - Check minidump files in
C:\Windows\Minidump\ - Analyze with WinDbg:
!analyze -v - Look for driver name in stack trace
- Invalid pointer dereference
- Memory access at wrong IRQL level
- Buffer overrun
- Resource leak
- Boot into Safe Mode (F8 during boot)
- Uninstall driver via Device Manager
- Disable test signing if needed
- Fix code issues and rebuild
Performance Issues
Symptoms: Lag, stuttering, high CPU usage Diagnose:- Monitor GPU usage (Task Manager → Performance)
- Check CPU usage by WUDFHost process
- Profile with Windows Performance Recorder (WPR)
- Review SwapChain processing logic
- Inefficient frame processing
- Not releasing buffers promptly
- Excessive logging/tracing
- GPU/CPU mismatch
Display Artifacts
Symptoms: Screen tearing, corruption, black screens Diagnose:- Verify GPU adapter selection
- Check EDID configuration
- Test different resolutions/refresh rates
- Review Direct3D device initialization
Configuration Not Applied
Symptoms: vdd_settings.xml changes ignored Diagnose:- Verify XML file at
C:\VirtualDisplayDriver\vdd_settings.xml - Check XML syntax (use XML validator)
- Review Event Viewer for parsing errors
- Add WPP traces to configuration loading code
Safe Recovery Procedures
Safe Mode Boot
If system becomes unstable:-
Force Safe Mode:
- Restart computer
- Press F8 repeatedly during boot
- Select “Safe Mode”
-
Windows 10/11 Safe Mode:
- Shift + Restart
- Troubleshoot → Advanced → Startup Settings → Restart
- Press 4 or F4 for Safe Mode
-
Uninstall driver in Safe Mode:
System Restore
If Safe Mode doesn’t work:- Boot from Windows installation media
- Select “Repair your computer”
- Troubleshoot → Advanced Options → System Restore
- Choose restore point before driver installation
Last Known Good Configuration
On older Windows versions:- Press F8 during boot
- Select “Last Known Good Configuration”
- Windows loads previous working driver set
Testing Checklist
Before releasing a driver build:Pre-Installation
- PREfast analysis passes (0 errors)
- Driver signed with valid certificate
- Signature verified with signtool
- Build configuration correct (Release for distribution)
Basic Functionality
- Driver installs without errors
- Virtual monitors appear in Display Settings
- All configured monitors created
- Resolutions can be changed
- Refresh rates configurable
- Monitors can be enabled/disabled
Advanced Features
- HDR toggle works (if applicable)
- Custom EDID profiles load correctly
- GPU adapter selection functions
- Multi-monitor configuration stable
- vdd_settings.xml changes applied
Application Compatibility
- OBS Studio detects virtual monitor
- Streaming applications work
- VR applications compatible (if applicable)
- Recording software functions
- Games/applications render correctly
Stability
- No crashes during 24-hour test
- No memory leaks detected
- Event Viewer shows no critical errors
- Rapid configuration changes stable
- System remains responsive
Platform Testing
- Tested on x64 Windows 10
- Tested on x64 Windows 11
- Tested on ARM64 (if applicable)
- Multiple GPU configurations tested
Next Steps
Building from Source
Build your test driver
Contributing
Submit your tested changes