The Old New Thing
Practical development throughout the evolution of Windows.
Latest posts

Can I close a duplicate handle while I’m waiting on the original?

That's fine, since you're not closing the handle that you're waiting on.

How can I get my shell thumbnail extractors to run in the same process?

Adding another level of indirection.

Translating the STATUS_STACK_BUFFER_OVERRUN
status code into customer-ready text

Reducing the level of alarm.

Why is the name of the Microsoft Wireless Notebook Presenter Mouse 8000 hard-coded into the Bluetooth drivers?

Is it some sort of favoritism?

How can I convert a third party in-process server so it runs in the COM surrogate?

You can put your own object in the surrogate first.

Why can’t std::apply
figure out which overload I intend to use? Only one of then will work!

The overload resolution happens before the compiler knows what it's going to be used for.

The documentation says that CompanyName version information is required, but my program seems to work without it, so how required is it?

It's more of a "Very strongly recommended" than a "Required".

A suggestion to people who assign nicknames to meeting rooms

Lean into the pattern. Don't try to cross it up.

Why didn’t Windows 95 simply special-case the laptops that locked up when it executed the HLT
instruction?

The catastrophic risk of bricking a computer.