Showing tag results for Code

Apr 27, 2012
Post comments count0
Post likes count1

A process shutdown puzzle, Episode 2

Raymond Chen

A customer reported that their program would very sporadically crash in the function . The customer was kind enough to provide a stack trace at the point of the crash: The customer wondered, "Could the problem be that my cleanup group does not have a callback? MSDN seems to suggest that this is okay." The exception being thrown is , but that...

Code
Apr 20, 2012
Post comments count0
Post likes count1

What does INIT_ONCE_CTX_RESERVED_BITS mean?

Raymond Chen

Windows Vista adds the One-Time Initialization family of functions which address a common coding pattern: I want a specific chunk of code to run exactly once, even in the face of multiple calls from different threads. There are many implementations of this pattern, such as the infamous double-checked lock. The double-checked lock is very easy to...

Code
Apr 16, 2012
Post comments count0
Post likes count1

Why do we need IsDialogMessage at all?

Raymond Chen

alv wonders why we need the function at all. "All its activity could take place inside the window procedure of the modeless dialog itself", since when it doesn't have focus, it shouldn't be responding to messages anyway. Sure, that works great if the modeless dialog has focus. But it almost never does. What has focus is a control inside the mode...

Code
Apr 13, 2012
Post comments count0
Post likes count1

You already know the answer since you do it yourself

Raymond Chen

A customer was writing a program that performed virtual drag/drop. They were using the technique but found that many applications don't support drag/drop of virtual content. They support only . What's more, often these applications query for on not because they want to access the file, but just because they want to get the file names (for examp...

Code
Apr 9, 2012
Post comments count0
Post likes count1

There's the interface contract, and there are the implementations of the interface contract

Raymond Chen

Ivo wants to know whether it is legal to use as the icon parameters to . The documentation says that the parameters are optional, but some shell folder implementations treat them as mandatory. Yes, the parameters are technically optional, but it's also the case that many people mess up their implementation of the interface and treat them as mand...

Code
Apr 6, 2012
Post comments count0
Post likes count1

Registration-free COM the old-fashioned way: The car mp3 player

Raymond Chen

Windows XP introduced Registration-Free COM, permitting you to place your COM object registrations in a manifest rather than in the registry. Very handy when you want to support xcopy deployment or running directly off a thumb drive. And very much in keeping with the principle of not using a global solution for a local problem. (If you need y...

Code
Apr 5, 2012
Post comments count0
Post likes count1

You can use an OVERLAPPED structure with synchronous I/O, too

Raymond Chen

Even if you didn't open a file with , you can still use the structure when you issue reads and writes. Mind you, the I/O will still complete synchronously, but you can take advantage of the other stuff that has to offer. Specifically, you can take advantage of the and members to issue the I/O against a file location different from the curren...

Code
Apr 3, 2012
Post comments count0
Post likes count1

Introducing the unrolled-switch anti-pattern

Raymond Chen

Over the years, I've seen a bunch of coding anti-patterns. I figured maybe I'll share a few. Today, I'll introduce what I'm calling the unrolled-switch anti-pattern, also known as "Specialization is always faster, right?" As we all know, special-case code is faster than general-purpose code. Instead of writing slow general-purpose code: we ...

Code
Mar 30, 2012
Post comments count0
Post likes count1

How do I perform shell file operations while avoiding shell copy hooks?

Raymond Chen

Okay, the subject line of the article gives away the answer to the puzzle, but here's the puzzle anyway: A customer reported a problem with the function: Consider the following program: If "a" is a file, then everything works fine, but if it's a directory, then Application Verifier raises the following error: Heap violation detected Memor...

Code
Mar 29, 2012
Post comments count0
Post likes count1

Why can't I delete a file immediately after terminating the process that has the file open?

Raymond Chen

A customer discovered a bug where terminating a process did not close the handles that the process had open, resulting in their emergency cleanup code not working: Their workaround was to insert a call to before deleting the file. The customer wanted to know whether they discovered a bug in , and they were concerned that their workaround could...

Code