Understanding errors in classical linking: The delay-load catch-22
Wrapping up our week of understanding the classical model for linking, we'll put together all the little pieces we've learned this week to puzzle out a linker problem: The delay-load catch-22. You do...
View ArticleHow can I write a script that finds my top-rated photos?
I'm not sure if I'll be able to keep it up, but I'm going to see if I can make Monday "Little Programs" day, where I solve simple problems with little programs. Today's little program is a script that...
View ArticleState law requires you to watch this video of a singing hippo
I did it briefly a few years ago, but I'm going to make it a regular Monday feature, at least for this year: Blogging my dreams. I dreamed that I was back in my high school English class, and due to...
View ArticleIf there were some sort of award for alternative commuting, we would've been...
A few projects ago, I worked on a team whose members came to work by a wide variety of modes. If there were some sort of award for alternative commuting, we would've been eligible. Two bicyclists. One...
View ArticleHow do I create a TaskDialog with a progress bar but no cancel button?
A developer from another group within Microsoft wanted to create a TaskDialog with a progress bar, but they couldn't figure out how to get rid of the Cancel button. Reticulating Splines Contacting...
View ArticleA brief history of the GetEnvironmentStrings functions
The GetEnvironmentStrings function has a long and troubled history. The first bit of confusion is that the day it was introduced in Windows NT 3.1, it was exported funny. The UNICODE version was...
View ArticleWhat is this rogue version 1.0 of the HTML clipboard format?
At least as of the time this article was originally written, the HTML clipboard format is officially at version 0.9. A customer observed that sometimes they received HTML clipboard data that marked...
View ArticleThe changing name of the Microsoft event held in conjunction with Martin...
Today is Martin Luther King, Jr. Day, a federal holiday in the United States honoring the civil rights leader and formally serving as a day to reflect on the principles of racial equality and...
View ArticleThe 2013/2014 Seattle Symphony subscription season at a glance
For many years, I've put together a little pocket guide to the Seattle Symphony subscription season for my symphony friends to help them decide which ticket package they want. In the years that have...
View ArticleMicrospeak: pivot
A great word to use at Microsoft to make it sound like you're one of the cool insiders is pivot. Mostly because the meaning of the word varies from place to place, so you can use it to mean whatever...
View ArticleHeads-up: Phone scammers pretending to be JPMorgan Chase MasterCard security
Recently, a round of phone scammers have been dialing through our area with a caller-ID of (000) 000-0000, which should already raise suspicions. When you answer, a synthesized voice says that they...
View ArticleWhy was WHEEL_DELTA chosen to be 120 instead of a much more convenient value...
We saw some time ago that the nominal mouse wheel amount for one click (known as a "detent") is specified by the constant WHEEL_DELTA, which has the value 120. Why 120? Why not a much more convenient...
View ArticleEliot Chang's list of things Asians hate
One time, somebody asked me, "What nationality are you?" I answered, "American." "No, I mean what nationality are your parents?" "They're also American." "No, I mean where are your parents from?"...
View ArticleSTRICT_TYPED_ITEMIDS is the shell namespace version of the STRICT macro used...
Starting with the Windows Vista PlatformSDK, defining the symbol STRICT_TYPED_ITEMIDS before including shell header files changes declarations that previously had simply used ITEMIDLIST now use one...
View ArticleWhen you have a SAFEARRAY, you need to know what it is a SAFEARRAY *of*
A customer had a problem with SAFEARRAY, or more specifically, with CComSafeArray. CComSafeArray<VARIANT> sa; GetAwesomeArray(&sa); LONG lb = sa.GetLowerBound(); LONG ub =...
View ArticleFinding a printer, and then creating a shortcut to that printer
Today's "Little Program" does two things: It looks for a printer in the Printers folder, and then once it finds it, it creates a shortcut to that printer. As is common with "Little Programs", I don't...
View ArticlePlease hold your head perfectly still while you write up that memo
I dreamed that the original Volkswagen Beetle factory was so cramped that the office workers had to move their desks to the factory floor, with heavy equipment swinging around just inches from their...
View ArticlePoisoning your own DNS for fun and profit
When you type a phrase into the Windows Vista Start menu's search box and click Search the Internet, then the Start menu hands the query off to your default Internet search provider. Or at least...
View ArticleWhy doesn't HeapValidate detect corruption in the managed heap?
A customer had a program that was corrupting the managed heap by p/invoking incorrectly. The problem didn't show up until the next garbage collection pass, at which point the CLR got all...
View ArticleThe somewhat misguided question of whether MapViewOfFile or...
A customer asked, "Which is faster for copying data from one process to another; MapViewOfFile or WriteProcessMemory?" This is one of those "Huh?"-type questions, where the customer has solved...
View Article