- Dev Blogs
- The Old New Thing
The Old New Thing
Practical development throughout the evolution of Windows.
Latest posts
Why is there no all-encompassing superset version of Windows?
Sometimes, I am asked why there is no single version of Windows that contains everything. Instead, as you move up the ladder, say, from Windows XP Professional to Windows Server 2003, you gain server features and lose workstation features. Why lose features when you add others? Because it turns out no actual customer wants to keep the workstation features on their servers. Only developers want to have this "all-encompassing" version of Windows, and making it available to them would result in developers testing their programs on a version of Windows no actual customer owns. I think one of my colleag...
Annoying renditions of the songs of Elvis
Jim Nayder of The Annoying Music Show pops by NPR studios every so often—hey, guys, if you changed the locks, this might stop him—whereupon he tortures the general public with musical offenses that should be outlawed by the Geneva Conventions. Most recently, he offered a series of reinterpretations of the works of Elvis Presley. What's really scary is that the songs presented in the segment are among the less awful offerings. For genuine musical pain, check out Love Me Tender [WMV] [Real] as performed by "Sweden's Singin' Sensation" Eilert Pilarm. (Quick tip: "Lyssna" is Swedish for "listen.") ...
Richard E. Grant as Dr. Who
While waiting for the Ninth and Tenth Doctors to reach the States, I was tipped off to some animated Dr. Who episodes on the BBC web site. These are really well done and managed to slake my Doctor cravings for a little while longer. In particular, Richard E. Grant's second turn as the somewhat Earth-obsessed Time Lord in Scream of the Shalka is a must-see. The tired frustration of his Doctor is a refreshing change from the more amiable personas he's had in recent incarnations. After saving the Earth (nay, the universe) from certain destruction for over forty years, you kind of can't blame him for ...
Understanding the consequences of WAIT_ABANDONED
One of the important distinctions between mutexes and the other synchronization objects is that mutexes have owners. If the thread that owns a mutex exits without releasing the mutex, the mutex is automatically released on the thread's behalf. But if this happens, you're in big trouble. One thing many people gloss over is the WAIT_ABANDONED return value from the synchronization functions such as WaitForSingleObject. They typically treat this as a successful wait, because it does mean that the object was obtained, but it also tells you that the previous owner left the mutex abandoned and that the system had ...
Reading the output of a command from batch
The FOR command has become the batch language's looping construct. If you ask for help via FOR /? you can see all the ways it has become overloaded. For example, you can read the output of a command by using the for command. FOR /F "tokens=*" %i IN ('ver') DO echo %i The /F switch in conjunction with the single quotation marks indicates that the quoted string is a command to run, whose output is then to be parsed and returned in the specified variable (or variables). The option "tokens=*" says that the entire line should be collected. There are several other options that control the parsing, which I leave y...
I won’t be signing books but don’t let that stop you
Whereas Eric Carter will be signing his book (co-authored with another Eric) at the PDC. I have no book of my own to sign, but will be happy to sign the Erics' book if you ask me to! You can catch me in the Fundamentals Lounge pretty much the whole time. There have been some changes to my talk since I wrote about it last time. The lecture style is gone; the material simply didn't support it. It's just going to be a conventional talk against a series of slides. I sort of painted myself into a corner with my title, Five Things Every Win32 Developer Should Know: If you should know it, then it can't be all tha...
Why does the function WSASetLastError exist?
Why does the function exist when there is already the perfectly good function ? Actually, you know the answer too, if you sit down and think about it. Winsock was originally developed to run on both 16-bit Windows and 32-bit Windows. Notice how the classic Winsock functions are based on window messages for asynchronous notifications. In the 16-bit world, there was no function. Therefore, Winsock had to provide its own version for the 16-bit implementation. And since source code compatibility is important, there was a 32-bit version as well. Of course, the 32-bit version looks kind of stupid in retrospect...
Why aren’t low-level hooks injected?
When I described what the HINSTANCE parameter to the function is for, I neglected to mention why the low-level hooks are not injected. But then again, it should be obvious. The low-level hooks let you see input as it arrives at the window manager. At this low level of processing, the window manager hasn't yet decided what window will receive the message. After all, that's the whole point of the low-level hook: to filter the input before the window manager does anything with it. "Deciding what window should get the message" counts as "anything". Consequently, it can't inject the call into the destination wi...
Declared unsuitable for minors in Australia! Sort of.
A colleague of mine wrote to let me know Your blog is blocked as "adult content" in the internet cafe I'm currently using in Adelaide, South Australia. Other MSDN blogs show up without problem. You must have really have spiffed up the content since I left the states! Perhaps that should be my new subtitle. "The Old New Thing: Must be 18 or older to enter."