Introduction to the Catalog Object Model

Today’s post will provide a basic introduction to the Windows Embedded CE Platform Builder Catalog. If you don’t know what that is, consider yourself lucky. If you do have to deal with the catalog data, today’s post might be helpful. We’ll write a quick C# utility that demonstrates the catalog object model and also provides some useful diagnostic information…


Scritch, scratch

Steve Ball posted an article about some “glitching” issues in Vista. I can’t resist adding my two cents. For me, Vista definitely glitches a LOT more than previous versions of Windows. As a fairly experienced developer, I think I understand the reasons pretty well, so I can explain it away. But as a user, when my…


Missing OS Design View tab in PB 5.0

A common complaint about PB 5.0 is that the OS Design View tab will sometimes mysteriously disappear. The best answer I have is that people should be using PB 6.0. Unfortunately, that answer tends to make people want to punch me. In the interest of my own safety, here is what I know about alternative methods of resolving…


Hash functions, tables and primes – oh my!

Home-grown hash functions considered harmful… About 7 years ago, when I was a high-minded computer science senior, a lowly computer science freshman buddy mentioned the trouble he was having with his homework. He had to design a hash table, and he was getting too many collisions for his design to be accepted for the assignment. I…


PbcXml: Metadata in PB

When Platform Builder interacts with a CE OS build tree (“winceroot”, i.e. C:\WINCE600), it needs to know a little bit about the contents of that build tree. For example, it needs to know what SYSGEN variables are available and what they mean. It needs to know what BSPs are available and what options they provide….


Does PB 5.0 work side-by-side with PB 6.0?

Hey, PB expert guy, I have a question. Shoot. Can I run PB 5.0 side-by-side with PB 6.0? Short answer or long answer? Um, short answer, please. Kind-of. What kind of answer is that? This is a yes-or-no question! Ok. Then the answer is no. That’s not what I wanted to hear. Oh, sorry. The…


Setup: Feature Levels at Zero

I’ve learned some interesting facts about MSI-based setups in the past few days. Working together, they can cause some really tricky and nasty issues if you are unaware of them. (In other words, this is why I’m still at work at 2:00 in the morning.) This is more proof that MSI setup is not something you can…


Exceptional wisdom

In Visual C++ 7.1 and earlier, “catch(…)” would catch all exceptions, both C++ and SEH. The behavior has changed with Visual C++ 8.0. This has caused some confusion. The details get a bit tricky, but the generally accepted wisdom among the C++ gurus that have advised me is: try/catch is for C++ exceptions. Corollary: Don’t…


Who ate my memory?

The consumer versions of 32-bit Windows XP and Vista have a stated limit of 4 GB RAM, but a practical limit of about 3.1 GB. A lot of partial explanations have been floating around, so I thought I would try my hand at clearing up the issue. (Wish me luck!) The design of the Intel 386…


Changes in Nmake 8.0: Answer

In my previous post, I described two issues encountered after updating our build system to Nmake 8.0 (the version from Visual Studio 2005) from earlier versions. Both issues turned out to have essentially the same root cause. Nmake’s job is to execute a sequence of commands to bring targets up-to-date. Some of those commands do real…