Where did my debug output go in Vista?

If you are using DbgPrint for your debug output in Vista you may have noticed that you cannot see anything in the debugger.  That is because DbgPrint now defaults to the DEFAULT debug component (you can read about the change here) and the default settings for this component is to hide all output.  To remedy this you can do either of the following

  1. Change the value of Kd_DEFAULT_MASK to 0xFFFFFFFF ('ed nt!Kd_DEFAULT_MASK 0xFFFFFFFF') at runtime or right after boot
  2. Open up the registry and go to this path, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter and add the following value "DEFAULT" : REG_DWORD : 0xFFFFFFFF and then reboot

This will allow you to see your debug output, but you might see a lot of other components' output as well.  One way to mitigate this is to use DbgPrintEx instead and pick the component ID which most closely matches your driver's functionality.  Note that DbgPrintEx is only available on Windows XP and later so if you need to support Windows 2000 you might want want to stick with DbgPrint since choosing which function to use at runtime can be difficult (since passing var args can be difficult unless you have variadic parameter support for macros (which the latest WDK has)).