Showing results for December 2004 - The Old New Thing

Dec 31, 2004
0
0

Using fibers to simplify enumerators, part 3: Having it both ways

Raymond Chen
Raymond Chen

As we discovered in the previous two entries [second], the problem with enumeration is that somebody always loses. Now we will use fibers to fight back. Before you decide to use fibers in your programs, make sure to read the dire warnings at the end of this article. My goal here is to show one use of fibers, not to say that fibers are the answer ...

Code
Dec 30, 2004
0
0

Using fibers to simplify enumerators, part 2: When life is easier for the caller

Raymond Chen
Raymond Chen

Last time, we looked at how a directory tree enumerator function would have been written if the person writing the enumerator (the producer) got to write the spec. Now let's look at what it would look like if the person consuming the enumerator wrote the spec: #include <windows.h> #include <shlwapi.h> #include <stdio.h> #includ...

Code
Dec 29, 2004
0
0

Using fibers to simplify enumerators, part 1: When life is easier for the enumerator

Raymond Chen
Raymond Chen

The COM model for enumeration (enumeration objects) is biased towards making life easy for the consumer and hard for the producer. The enumeration object (producer) needs to be structured as a state machine, which can be quite onerous for complicated enumerators, for example, tree walking or composite enumeration. On the other hand, the callback...

Code
Dec 28, 2004
0
0

Computing the size of a directory is more than just adding file sizes

Raymond Chen
Raymond Chen

One might think that computing the size of a directory would be a simple matter of adding up the sizes of all the files in it. Oh if it were only that simple. There are many things that make computing the size of a directory difficult, some of which even throw into doubt the even existence of the concept "size of a directory". Reparse point...

Other
Dec 27, 2004
0
1

You can create an infinitely recursive directory tree

Raymond Chen
Raymond Chen

It is possible to create an infinitely recursive directory tree. This throws many recursive directory-traversal functions into disarray. Here's how you do it. (Note: Requires NTFS.) Create a directory in the root of your C: drive, call it C:\C, for lack of a more creative name. Right-click My Computer and select Manage. click on the Disk Manage...

Other
Dec 27, 2004
0
0

Alton Brown book tour 2005: I’m Just Here for More Food

Raymond Chen
Raymond Chen

Alton Brown, geek cooking hero and Bon Appetit Magazine Cooking Teacher of the Year 2004 will be spending January 2005 promoting his latest book, Food × Mixing + Heat = Baking (I'm Just Here for More Food), sequel to his award-winning debut cookbook Food + Heat = Cooking (I'm Just Here for the Food). Check th...

Non-Computer
Dec 24, 2004
0
0

Why does the system convert TEMP to a short file name?

Raymond Chen
Raymond Chen

When you set environment variables with the System control panel, the and variables are silently converted to their short file name equivalents (if possible). Why is that? For compatibility, of course. It is very common for batch files to assume that the paths referred to by the and environment variables do not contain any embedded space...

Code
Dec 24, 2004
0
0

How to open those plastic packages of electronics without injuring yourself

Raymond Chen
Raymond Chen

Small electronics nowadays come in those impossible-to-open plastic packages. A few weeks ago I tried to open one and managed not to slice my hand with the knife I was using. (Those who know me know that knives and I don't get along well.) Unfortunately, I failed to pay close attention to the sharp edges of the cut plastic and ended up cutting thre...

Non-Computer
Dec 23, 2004
0
0

Do you need clean up one-shot timers?

Raymond Chen
Raymond Chen

The CreateTimerQueueTimer function allows you to create one-shot timers by passing the WT_EXECUTEONLYONCE flag. The documentation says that you need to call the DeleteTimerQueueTimer function when you no longer need the timer. Why do you need to clean up one-shot timers? To answer this, I would like to introduce you to one of my favorite rhe...

Code
Dec 22, 2004
0
1

BOOL vs. VARIANT_BOOL vs. BOOLEAN vs. bool

Raymond Chen
Raymond Chen

Still more ways of saying the same thing. Why so many? Because each was invented by different people at different times to solve different problems. BOOL is the oldest one. Its definition is simply typedef int BOOL; The C programming language uses "int" as its boolean type, and Windows 1.0 was written back when C was the cool languag...

Code