Raymond Chen

Raymond has been involved in the evolution of Windows for more than 30 years. In 2003, he began a Web site known as The Old New Thing which has grown in popularity far beyond his wildest imagination, a development which still gives him the heebie-jeebies. The Web site spawned a book, coincidentally also titled The Old New Thing (Addison Wesley 2007). He occasionally appears on the Windows Dev Docs Twitter account to tell stories which convey no useful information.

Post by this author

How can I add an environment variable to a process launched via Shell­Execute­Ex or IContext­Menu?

Hooking into the way the Windows shell launches processes.

Smoothing over the differences (and defects) in the various implementations of IMemory­Buffer

Stick to the part that nobody messes up.

A comparison of various implementations of the Windows Runtime IMemory­Buffer

Every unhappy class is unhappy in its own way.

How can I expose a pre-existing block of memory as a Windows Runtime object without copying the data?

Assembling all the pieces.

How can I give away a COM reference just before my object destructs?

You have to do it before committing to destruction.

The dangerous implementations of the IMemory­Buffer­Reference.Closed event

Mistakenly handing out COM references that don't work.

The useless IMemory­Buffer­Reference.Closed event

It tells you that you have already lost.

Accessing a block of memory represented by a Windows Runtime IMemoryBuffer

Through the currency known as an IMemoryBufferReference.

The case of the fail-fast trying to log a caught exception

What is being thrown and why can't we log it?

Implementing two-phase initialization with ATL

ATL looks like it supports two-phase initialization, but it doesn't.