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

I am a creature of habit. Once I get into a pattern, especially with keyboard keys (i.e. my sleep key went missing), it is very hard for me to break the habit and learn to do something else to achieve the same goal.  One pattern I have grown accustomed to is hitting the Mail key…


Support for double checked locking

Looking through some of the additions to the WDK, I found an interesting structure, RTL_RUN_ONCE. After a little more digging, I found that it is also exposed in user mode under a different typedef, INIT_ONCE. They both have the same set of functionality, but with different naming patterns that matches their typenames. The Rtl functions…


Have you been waiting for a book on WDF?

Well wait no more!  We (the technical writers on WHDC and the WDF team) is working on a book and it was just announced (the description is currently a little wonky though).  The book will cover both KMDF and UMDF and the static analysis tools (SDV and PreFAST for Drivers).  Hope you will like it, we are…


New POBJECT_TYPE exports documented in the WDK

When calling ObReferenceObjectByHandle, ObReferenceObjectByPointer, or ObOpenObjectByPointer you should be passing a non NULL value for the POBJECT_TYPE ObjectType parameter (more on why you should never pass NULL in a later post). Before Windows Vista there were only two documented types in the DDK, *IoFileObjectType and *ExEventObjectType (these are exported as a POBJECT_TYPE* which is why…


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…


What is the serial enumeration protocol?

A common question is “how do I write a device driver for my device which is connected over the serial port?”  The answer depends on if your device conforms to the serial device numeration protocol (officially titled “Plug and Play External COM Device Specification”), found here on WHDC.  One interesting “quirk” about the Windows implementation of…


The case of amazingly morphing intrinsic function

I was in a code review earlier this week and someone pointed out the InterlockedOr, unlike the other InterlockedXxx operations, does not return the previous value. I found that hard to believe. I pulled up the MSDN docs and pointed this out Return Value InterlockedOr returns the original value stored in the variable pointed to…


The Vista party is today. Schweet, I finally get to attend another ship party!

Well, 5 long years later, Vista is out the door. Barely time to breath and enjoy it though, Longhorn Server (sorry for the mixup, the next server release apparently does not have a name yet…what do I know, I am just a developer 😉 ) work is already underway, but today is the Vista ship…


Another WDF blogger

Patrick has started blogging on WDF.  He will be looking using both UMDF and KMDF as a way to write a driver for one device, it looks like it will be good based on our hallway conversations. 


Weird side affect of the day: #defines can be used in your .def file

I found this one out the hard way today. I was experimenting with the KMDF loader driver (wdfldr.sys). I added the following #define to my sources file so that I could share code between wdfldr and another component and control some functionality based on who was including the file sources: TARGETNAME=wdfldr TARGETTYPE=EXPORT_DRIVER C_DEFINES=$(C_DEFINES) -DWDFLDR=1 […]…