The Old New Thing

The first parameter to VerQueryValue really must be a buffer you obtained from GetFileVersionInfo

The documentation for the function states that the first parameter is a "pointer to the buffer containing the version-information resource returned by the function." Some people, however, decide to bypass this step and pass a pointer to data that was obtained some other way, and then wonder why doesn't work. The documentation says that ...

The Old New Thing book will also be available electronically

We interrupt this religious holiday for an important commercial announcement. As a special Christmas present, my new best friends at Addison-Wesley sent me an advance copy of the dead-tree edition of my book. (Obligatory plug: Order it from Amazon. You know I want you to.) One commenter asked whether my book would be available ...

The evolution of version resources – corrupted 32-bit version resources

Last time we looked at the format of 32-bit version resources, but I ended with the remark that what you saw purported to be the resources of but actually weren't. What's going on here? The resources I presented last time were what the resources of should have been, but in fact they aren't. A common mistake in generating 32-bit ...

The unanswered Explainer questions

Slate's Explainer column answers questions about current events. Sometimes they do it multiple times, as they did when I asked them how to pronounce the name Pinochet and they said Pee-no-CHAY, then later corrected themselves with pin-oh-CHET, and then again re-corrected themselves with Yes. Yesterday, the Explainer provided a selection ...

The evolution of version resources – 32-bit version resources

Last time we looked at the format of 16-bit version resources. The 32-bit version is nearly identical, except that everything is now in Unicode. Each node is stored in the following structure (in pseudo-C): In words, each version node begins with a 16-bit value describing the size of the nodes in bytes (including its children), followed by...

The evolution of version resources – 16-bit version resources

I return to the extremely sporadic series on resources with a description of the version resource. You don't need to know how version resources are formatted internally; you should just use the version resource manipulation functions , , and their friends. I'm providing this information merely for its historical significance. Version ...

Pacific Northwest storm recovery continues

Puget Sound Energy has a service status page where they update how things are going in the power restoration process. The repair crews (some from as far away as Kansas) are working 40-hour shifts with eight hours' rest between shifts. (That article is from a snowstorm a few weeks ago. A manager is quoted as saying. "I've been in this ...

Do not write in-process shell extensions in managed code

Jesse Kaplan, one of the CLR program managers, explains why you shouldn't write in-process shell extensions in managed code. The short version is that doing so introduces a CLR version dependency which may conflict with the CLR version expected by the host process. Remember that shell extensions are injected into all processes that use the ...