Debugging a Universal Windows driver

Starting in Windows 10, you can build your KMDF or UMDF driver binary so that it gets additional driver debugging information through the Inflight Trace Recorder. Universal Windows drivers can take advantage of this feature.

In addition, if you used the Visual Studio KMDF template, your driver uses Windows software trace preprocessor (WPP) to write trace messages. Your driver binary is an ETW provider with a provider GUID.

To send a trace message from your driver binary, use this code:

TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_DRIVER, "%!FUNC! Entry");

You can access the ETW logs either using Tracelog via the TShell tool on a phone, or by using !wmitrace in a debugger session.

To use Tracelog on a phone:

  1. Establish a kernel-mode debugging session between a host computer and the phone.

  2. On the host computer, in TShell, enter this command:

    ```cpp
    exec-device tracelog -addautologger MyLogger05 -guid c:\SteveGuid.txt -level 4 -flag 0xF –kd
    ```
    
  3. Reboot the phone, and watch for trace messages in the debugger.

All existing kernel mode debug transports continue to work on Windows 10 for desktop editions. However, for both user-mode and kernel-mode driver binaries, you must use a remote debugger session over KDNET to test Windows 10 Mobile. For more info, see Setting Up Kernel-Mode Debugging over a Network Cable Manually in Visual Studio.