Why can't I use PSGUID_STORAGE like a GUID?
The stgprop.h header file defines a GUID called PSGUID_STORAGE, but a customer was having trouble using it. GUID guid; ... // This generates a strange compiler error if (IsEqualGUID(guid,...
View ArticleHow can I get information about the items in the Recycle Bin?
For some reason, a lot of people are interested in programmatic access to the contents of the Recycle Bin. They never explain why they care, so it's possible that they are looking at their problem the...
View ArticleModernizing our simple program that retrieves information about the items in...
Last time, we wrote a simple program to print various properties of the items in the Recycle Bin, and we did so in the classical style, using item ID lists and IShellFolders. One thing you may have...
View ArticleInvoking commands on items in the Recycle Bin
Once you've found the items you want in the Recycle Bin, you may want to perform some operation on them. This brings us back to our old friend, IContextMenu. At this point, you're just snapping two...
View ArticleWhat's the story with the parameters to the WM_INPUT_DEVICE_CHANGE message?
A customer found these strange macros in winuser.h: #if (_WIN32_WINNT >= 0x0601) #define GET_DEVICE_CHANGE_WPARAM(wParam) (LOWORD(wParam)) #elif (_WIN32_WINNT >= 0x0501) #define...
View ArticleThanks for letting me know what my ideal career and company are
When it's performance review season, all of a sudden you start getting mail about career management. What a coincidence. There are a variety of career management tools available, some mandatory, some...
View ArticleWhat happened to that suspicious-looking guy hanging around the entrance?
One of the fun parts of attending a conference is swapping stories with other professionals. Today's story is in honor of Global Security Week. (And retroactively in honor of the upcoming //build...
View ArticleWhy is the registry a hierarchical database instead of a relational one?
Commenter ton asks why the registry was defined as a hierarchical database instead of a relational database. Heck, it's not even a hierarchical database! The original registry was just a dictionary;...
View ArticleWhy doesn't the Disk Management snap-in incorporate S.M.A.R.T. data?
My article a while back on Why the Disk Management snap-in reports my volume as Healthy when the drive is dying gave the low-level explanation of why the Disk Management snap-in does not incorporate...
View ArticleWhy waste your money on the car when it's the sound system you care about?
There is apparently a subculture of people who decide to economize on the car part of the "loud stereo in car" formula (since they really don't care about the car—it's all about the music) and put...
View ArticleThrowing garbage on the sidewalk: The sad history of the rundll32 program
During the development of Windows Vista, the application comaptibility team traced a bunch of issues back to people corrupting the stack by using the rundll32 program to call functions that were not...
View ArticleIs this a really bug with CreateWindowEx or am I just confused?
Somebody sent me email pointing out strange behavior in the MessageBox function if you fail a window creation by returning −1 from the WM_CREATE message. On the other hand, returning FALSE from...
View ArticleWhy are the building numbers on Microsoft main campus so erratic?
Carrie complains that the building numbers on Microsoft main campus are completely random. Why is building 22 near buildings 40 and 41, far, far away from building 24? Because the Microsoft campus...
View ArticleA common control for associating extensions is well overdue
Mark complained that a common control for associating extensions is *well* overdue. This is a recurring theme I see in the comments: People complaining that Windows lacks some critical feature that it...
View ArticleWhat happens to a sent message when SendMessageTimeout reaches its timeout?
The SendMessageTimeout function tries to send a message, but gives up if the timeout elapses. What exactly happens when the timeout elapses? It depends. The first case is if the receiving thread...
View ArticleSome preliminary notes from //build/ 2011
Hey everybody, I'm down at the //build/ conference. (The extra slash is to keep the d from falling over.) I'm not speaking this year, but you can find me in the Apps area of the Expo room today until...
View ArticleWhy can't I PostMessage the WM_COPYDATA message, but I can SendMessageTimeout...
After receiving the explanation of what happens to a sent message when SendMessageTimeout reaches its timeout, a customer found that the explanation raised another question: If the window manager...
View ArticleThe clipboard viewer linked list is no longer the responsibility of...
Commenter Nice Clipboard Manager (with drop->clipboard) wonders why Windows still uses a linked list to inform programs about clipboard modifications. If any clipboard viewer fails to maintain the...
View ArticleMicrospeak: The bug farm
In its most general sense, the term bug farm refers to something that is a rich source of bugs. It is typically applied to code which is nearly unmaintainable. Code can arrive in this state through a...
View ArticleRandom notes from //build/ 2011
Here are some random notes from //build/ 2011, information of no consequence whatesoever. A game we played while walking to and from the convention center was spot the geek. "Hey, there's a guy...
View Article