MSDN link on how to set up a user or kernel debugger

This has got to be one of the top FAQs out there: how do I set up a kernel debugger?  I just stumbled across a link on MSDN which gives instructions not only on how to set up a kernel debugger on all transports (serial, 1394, usb2), but also how to set up a user…


Debugger commands (.step_filter) that make my life easier

This is a pretty cool and somewhat obscure debugger command.  It allows you to tell the debugger what functions to skip if you are using the trace command (‘t’).  I think of the trace command as the ‘step into’ command though, but that is just me.  Let’s say we have the following simple application: #include…


Getting 64 bit Vista to open my Inbox the way I want it to

A bit over a year ago I had to figure out why my Mail key started behaving differently on Vista vs XP and wrote about how I fixed it.  Well, my dev box was so slow that I was able to employ enough sympathy that I got a new one.  While my old box was…


A must have book for any Windows developer

I saw a book,  Advanced Windows Debugging, in the Microsoft company store and quickly read through it. It looked pretty awesome in the level of detail and breadth that it covered.  I ordered my own copy and I think it would be an invaluable resource for anyone who develops drivers or applications on Windows.  I learn…


Changes to !poreqlist

I posted about !poaction and !poreqlist about a year ago. I tend to use these extensions whenever I am debugging a power related issue in the framework.  A few months ago, I ran !poreqlist and got the following output0: kd> !poreqlist All active Power Irps from PoRequestPowerIrp PopReqestedPowerIrpList FieldOffset = 00000004 Which is not what…


Debugger command (!list) that makes my life easier

Yesterday I introduced the dl command and demonstrated some of its limitations. Today I will talk about !list. Let’s take yesterday’s data structure, MY_DATA. What if the LIST_ENTRY is at the end of the structure or there is more data in your structure that fits into two pointer sized fields so that dl cannot display…


Debugger command (dl) that makes my life easier

The use of the LIST_ENTRY structure in WDM is quite pervasive. It is used for nearly all list keeping tasks. I have used it extensively in the past and KMDF uses it quite a bit as well. There are two debugger commands that help in viewing the contents of a list. I will talk about…


Viewing your KMDF log in a mini-dump (and other post mortem features)

Your KMDF driver log can also be available in a mini-dump under certain circumstances. If you have a full kernel dump or a full memory dump, the log will be always present (barring any memory corruption or problems writing out the dump file). KMDF will attempt to write your driver’s log to the mini-dump if…


Customizing the KMDF log for your driver

Yesterday I talked about the KMDF log. The KMDF log is a great tool to debug why a DDI call has failed or diagnose the cause of a bugcheck in your driver. You can customize different attributes of the log so that you can better debug your driver. The customizations available to you are: The…


How can I view the KMDF log for my driver?

A lot of developers have a great experience with KMDF, but then they sometimes hit a wall. They add a chunk of code and the drivers start failing because something in the new code was not implemented correctly. The first question that comes to mind is