Getting the Printer Friendly name from the Device Center shell folder

If you are writing a context menu for the device center, you will probably need to get the “canonical” or “friendly” name of the printer or device that the user has right-clicked on. While your context menu extension gets passed a data object that should contain this information, it unfortunately doesn’t. However, here’s some code…


Sync Center hanging and crashing because of DpoFeedb

0:005> ~2sDpoFeedb!get_lastknownversion+0xd382:00000000`1002f812 0f8418feffff    je      DpoFeedb!get_lastknownversion+0xd1a0 (00000000`1002f630) [br=1]0:002> pDpoFeedb!get_lastknownversion+0xd1a0:00000000`1002f630 488b02          mov     rax,qword ptr [rdx] ds:00000000`0296dec8=000000000296dec00:002> DpoFeedb!get_lastknownversion+0xd1a3:00000000`1002f633 488b4808        mov     rcx,qword ptr [rax+8] ds:00000000`0296dec8=000000000296dec00:002> DpoFeedb!get_lastknownversion+0xd1a7:00000000`1002f637 483b01          cmp     rax,qword ptr [rcx] ds:00000000`0296dec0=000000000296dec00:002> DpoFeedb!get_lastknownversion+0xd1aa:00000000`1002f63a 0f85e7000000    jne     DpoFeedb!get_lastknownversion+0xd297 (00000000`1002f727) [br=0]0:002> DpoFeedb!get_lastknownversion+0xd1b0:00000000`1002f640 4c8b4910        mov     r9,qword ptr [rcx+10h] ds:00000000`0296ded0=000000000296dec00:002> DpoFeedb!get_lastknownversion+0xd1b4:00000000`1002f644 4180794800      cmp     byte ptr [r9+48h],0 ds:00000000`0296df08=000:002> DpoFeedb!get_lastknownversion+0xd1b9:00000000`1002f649 7520            jne     DpoFeedb!get_lastknownversion+0xd1db (00000000`1002f66b) [br=0]0:002> DpoFeedb!get_lastknownversion+0xd1bb:00000000`1002f64b…


The case of the very annoying hpqtra08.exe

I recently bought an HP dv7t laptop and also got one of those HP multi-function printers. So far so good. After installing the printer’s drivers and apps, I noticed a significant slowdown. Opened up taskmgr and lo and behold, hpqtra08.exe was taking up 100% of my cpu. I debugged it and it seemed to be…


Servicing Dependencies, Part 2

Now what happens if the dependency is not with respect to a regular API, but with a COM interface ? Suppose a COM interface IControl is implemented by CControl, in a dll DLL1. Now DLL2 obtains this CControl indirectly (for example, calling IControl* m_control = CoCreateInstance(…) with clsid==CLSID_CControl and riid==IID_IControl), therefore using it as an…


Servicing Dependencies, Part 1

Suppose you have a huge product (such as Windows) for which fix bugs daily. These fixes need to ship through some mechanism (download central, Windows Update, etc.). Of course you can’t re-distribute the whole OS every time you fix a one-line bug. Therefore you define components, which are sets of closely-related binaries as per the…


Windows 7 beta is available!!

The Windows 7 beta is available for download, but only for the first 2.5 million users, so act fast!! Get yours now. Go to for more info or download it here  


Hello w0rld

The purpose of this blog is to write about my work as a developer in the Windows Serviceability organization, more specifically in the Client Platform team. My org’s main responsibility is fixing bugs in the currently released version of Windows, currently Vista and Server 2008. My team’s focus areas include printing, scanning, the graphics platform,…