The Old New Thing
Practical development throughout the evolution of Windows.
Latest posts
How do you add or remove a handle from an active MsgWaitForMultipleObjects?
You can't, but you can arrange for the waiter to do it for you.
Were there any Windows 3.1 programs that were so incompatible with Windows 95 that there was no point trying to patch them?
The permanently ineligible list.
Learning to read C++ compiler errors: Illegal use of -> when there is no -> in sight
If the compiler is complaining about things you didn't write, find out who wrote them.
How can I use ReadDirectoryChangesW to know when someone is copying a file out of the directory?
File copying is not a fundamental operation, nor is it even detectable at the file system layer.
Why doesn’t the system let you declare your own messages to have the same semantics as WM_COPYDATA ?
Tempting but misleading.
The cover of C++: The Programming Language raises questions not answered by the cover
What are we reading about here?
Before you check if an update caused your problem, check that it wasn’t a problem before the update
It was going to be like that when I got here.
A question about the maximimum number of values in a registry key raises questions about the question
Why is this even a question?
What if a dialog wants to intercept its own message loop?
You can steal them from your owner.
Why doesn’t WM_ENTERIDLE work if the dialog box is a MessageBox?
Because it opted out.
How can I change a dialog box’s message loop to do a MsgWaitForMultipleObjects instead of GetMessage?
The dialog box lets you change how it waits.
Windows 95 defenses against installers that overwrite a file with an older version
A very primitive version of recovery.
How can I make sure the anti-malware software doesn’t terminate my custom service?
You'll have to ask nicely.
Windows stack limit checking retrospective: arm64, also known as AArch64
Wrapping things up.
Windows stack limit checking retrospective: amd64, also known as x86-64
Reaching the modern day.
Windows stack limit checking retrospective: Alpha AXP
Double the size, double the fun.
Windows stack limit checking retrospective: x86-32 also known as i386, second try
Appeasing the invisible return address predictor.
Windows stack limit checking retrospective: PowerPC
Doing the math backwards.