The Old New Thing

Practical development throughout the evolution of Windows.

Latest posts

Jul 13, 2011
Post comments count 0
Post likes count 0

The tradition of giving cute names to unborn babies

Raymond Chen

Many of my friends gave names to their unborn babies. Most of them were based on various objects that were the size of the adorable little parasite¹ at the time they discovered that they were pregnant: There were a few outliers, though. That last one takes a bit of explaining. Having grown tired of people asking her what she was planning on naming the baby, my friend made up an absurd name and used it with a straight face. "We're think of naming her Aubergine, if it's a girl." People would respond with a polite but confused "Oh, that's an interesting name." Then, still deadpan, she would add, "If it's...

Jul 13, 2011
Post comments count 0
Post likes count 1

What does the executable timestamp really mean?

Raymond Chen

A customer was looking for some information on the executable timestamp: I would like my program to display the date it was linked. The looks like what I need. Is there an easy way to retrieve this information so I don't have to parse the EXE header myself? Also, what functions exist for formatting this timestamp into something human-readable? The customer didn't explain why they needed this information, but presumably it was for diagnostic purposes. For example, the program might display the information in the About box to help the product support team identify which version of the program the end-user is ru...

Jul 12, 2011
Post comments count 0
Post likes count 1

At least it'll be easy to write up the security violation report

Raymond Chen

Many years ago, Microsoft instituted a new security policy at the main campus: all employees must visibly wear their identification badge, even when working in their office. As is customary with with nearly all new security policies, it was met with resistance. One of my colleagues was working late, and his concentration was interrupted by a member of the corporate security staff at his door. — Sir, can I see your cardkey? My colleague was not in a good mood (I guess it was a nasty bug), so he curtly replied, "No. I'm busy." — Sir, you have to show me your cardkey. It's part of the new security po...

Jul 11, 2011
Post comments count 0
Post likes count 1

Windows has supported multiple UI languages for over a decade, but nobody knew it

Raymond Chen

In the early days of Windows, there was a separate version of Windows for each language, and once you decided to install, say, the French version of Windows, you were locked into using French. You couldn't change your mind and, say, switch to German. The reason for this is that there were bits and pieces of language-dependent information stored all over the system. One obvious place is in file names. For example, a shortcut to the calculator program was kept at %USERPROFILE%\Start Menu\Programs\Accessories\Calculator.lnk on US-English systems, but %USERPROFILE%\Startmenü\Programme\Zubehör\Rechner.lnk ...

Jul 8, 2011
Post comments count 0
Post likes count 1

We've traced the pipe, and it's coming from inside the process!

Raymond Chen

We saw last time one of the deadlocks you can run into when playing with pipes. Today we'll look at another one: Our program runs a helper process with stdin/stdout/stderr redirected. The helper process takes input via stdin and prints the result to stdout. Sometimes we find that the from the controlling process into the stdin pipe hangs. Closer examination reveals that the helper process no longer exists. Under these conditions, should the fail, since the reader is no longer available? If you attempt to write to a pipe when there is nobody around to call to read the data out the other end, the call to ...

Jul 7, 2011
Post comments count 0
Post likes count 0

And… that cadence means it's halftime, concert-goers!

Raymond Chen

In college, one of my classmates (who is now the conductor of an orchestra, so I guess that whole music thing worked out for him) coined the term halftime to refer to a resounding cadence in the first half of a piece, the type of cadence that might fool an inattentive or unseasoned listener into thinking that the piece is over, when in fact it's just getting started. We're not talking about a false ending, which is comparatively easy to find, but rather a "big finish" when we're nowhere near the finish. Also sprach Zarathustra has a big halftime cadence, complete with a reprise of the opening fanfare, at the en...

Jul 7, 2011
Post comments count 0
Post likes count 1

Be careful when redirecting both a process’s stdin and stdout to pipes, for you can easily deadlock

Raymond Chen

Pipe in, pipe out.

Jul 6, 2011
Post comments count 0
Post likes count 1

The historical struggle over control of the Portuguese language

Raymond Chen

Portugal has been going through a rough patch. Its international stature has diminished over the years, its economy has always struggled to remain competitive, the government had to accept a bailout to avoid defaulting on its debt, and on top of it all, it is losing control of its own language. In Portugal, the latest round of Portuguese spelling reform takes effect over a six-year transition period, leaving the Portuguese dismayed that the spelling of their language is being driven by Brazil, a former colony. I sympathize with the plight of the Portuguese, although I also understand the value of consistent sp...

Jul 6, 2011
Post comments count 0
Post likes count 2

Looking at the problem at the wrong level: Closing a process's stdin

Raymond Chen

A customer was having trouble manipulating the stdin stream that was given to a process. How do you simulate sending Ctrl+Z to a hidden console process programmatically? I am using and want to send the console a Ctrl+Z. I've tried sending ASCII code 26, but that doesn't work. supports Ctrl+C and Ctrl+Break but not Ctrl+Z. Here's what I'm doing, but it doesn't work: The customer was kind enough to do more than simply ask the question. The customer set up the scenario and even provided a code fragment that illustrates the problem. Which is good, because the original question was the wrong question. ...