The Old New Thing

Practical development throughout the evolution of Windows.

Latest posts

Oct 14, 2009
Post comments count 0
Post likes count 0

Viral video: Pianotrappan

Raymond Chen

Yes, it's an advertisement for Volkswagen, but still, it's a fun video, and it features Scarlatti's keyboard sonata in C (K159) as a bonus. Even the old guy who shuffles along slowly at 1:23 tries the stairs. Double bonus: You can watch the original Swedish version.

Oct 14, 2009
Post comments count 0
Post likes count 1

When you want to pass a parameter on the command line, don't forget to pass the parameter on the command line

Raymond Chen

This happens to me, too. I once got so distracted by the process of purchasing some tickets in person, choosing the performance date and the seats, fumbling for my credit card, signing the receipt, and when I was done, I left the ticket booth without my tickets! Here is a question that came in from a customer. The details have been changed but the underlying point is the same. According to the documentation, the command prints a history log of all the tags in the system. I can pass the option to limit the date range, and that works too. It also says that that I can pass a specific tag name to limit the li...

Oct 13, 2009
Post comments count 0
Post likes count 1

You always hurt the things you love

Raymond Chen

I've tried all sorts of miniature headphones, and the only ones that I like are the ones that come with my Zune. What makes them special? They fit and don't fall out. I try not to be too demanding. But the other day, I was getting out of my car, and due to a badly-stowed Zune, the headphones dangled out of my pocket and got caught in the door. Before I realized what happened, I had taken a few steps away from the car, and the headphones snapped. You always hurt the things you love, because if you didn't love them, you wouldn't use them all the time and accidentally break them. (Well, and when you hurt the thi...

Oct 13, 2009
Post comments count 0
Post likes count 0

Why do we have import libraries anyway?

Raymond Chen

Last time we looked at the classical model for linking as groundwork for answering Adam's question why do we need import libraries? Why can't all the type information be encoded in the export table? At the time the model for DLLs was being developed, the classical model still was the primary means by which linking was performed. Men were men and women were women. Compilers generated object modules, and linkers resolved symbols, connecting the loose ends of the object modules, in order to produce an executable. The linker didn't care what language the object modules were written in; in fact it had no way of fin...

Oct 12, 2009
Post comments count 0
Post likes count 1

The classical model for linking

Raymond Chen

Commenter Adam wonders why we need import libraries anyway. Why can't all the type information be encoded in the export table? This goes back to the classical model for linking. This model existed for decades before Microsoft was even founded, so at least this time you don't have Bill Gates to kick around. (Though I'm sure you'll find a way anyway.) Back in the days when computer programs fit into a single source file, there was only one step in producing an executable file: You compile it. The compiler takes the source code, parses it according to the rules of the applicable language, generates machine cod...

Oct 9, 2009
Post comments count 0
Post likes count 1

LoadString can load strings with embedded nulls, but your wrapper function might not

Raymond Chen

Whenever somebody reports that the function or the member of the structure is not working, my psychic powers tell me that they failed to manage the double-null-terminated strings. Since string resources take the form of a counted string, they can contain embedded null characters, since the null character is not being used as the string terminator. The function knows about this, but other functions might not. Here's one example: The problem is that you're using a function which operates on null-terminated strings but you're giving it a double-null-terminated string. Of course, it will stop copying at...

Oct 8, 2009
Post comments count 0
Post likes count 0

In Hawaiʻi, "mahalo" might officially mean "thank you"

Raymond Chen

In Hawaiʻi, you see the word Mahalo on signs everywhere. In theory, the word means Thank you, but my friend Joe Beda pointed out that in practice the word has a completely different meaning. Here are some examples: In practice, the word mahalo means You're screwed. Obligatory clarification: This was a joke, an attempt at observational humor.

Oct 8, 2009
Post comments count 0
Post likes count 1

What is the format of a double-null-terminated string with no strings?

Raymond Chen

One of the data formats peculiar to Windows is the double-null-terminated string. If you have a bunch of strings and you want to build one of these elusive double-null-terminated strings out of it, it's no big deal. But what about the edge cases? What if you want to build a double-null-terminated string with no strings? Let's step back and look at the double-null-terminated string with two strings in it. But I'm going to insert line breaks to highlight the structure. Now I'm going to move the lines around. This alternate way of writing the double-null-terminated string is the secret. Instead of viewin...

Oct 7, 2009
Post comments count 0
Post likes count 0

I will be speaking at Reflections|Projections 2009

Raymond Chen

The way to get me to show up at your conference is to invite me. The folks who run the Reflections|Projections 2009 conference figured that out. I will be there on Friday the 16th for the job fair in the Siebel Atrium, and my talk How Microsoft is Different from School is scheduled for Saturday morning at 11:15. Attendance is free, but that's not much consolation seeing as you first have to get there. It's always a weird situation I find myself in when I'm invited to give a talk at a conference, because if I give a talk on the stuff I usually write about, you'll get something like a one-hour discussion of the...