Why doesn't Windows Mobile support out of proc COM?

Why doesn't Windows Mobile have out of proc COM in the first place?  It gets down to ROM constraints.  The difference between in-proc only COM and out-of-proc COM support is in the range of 500KB  - my former boss who did this work did a very good job componentizing desktop COM!  Given that I once spent a day to reduce WM ROM size by 10KB, a 500KB hit for a feature that is cool but not essential isn't something we can take.

Not WM specific, but we went further than that so that there are 4 basic flavors of COM available across CE in the general embedded sense.

MiniCOM: Only the minimal COM functions like CoCreateInstance, CoFreeUnusedLibraries -- enough to load a simple COM DLL as well as basics of Oleaut32.  This takes up like 40KB.
"Standard COM" - This is the COM we ship on WM devices, has a pretty good subset of COM functionality with the main missing piece being out-of-proc COM.  This is a few hundred KB.
"DCOM (out of proc only)" - This is the out-of-proc COM, and is around 750KB or more.  This also supports real marshalling between threads in the same process, Single Threaded Apartments and the like.
"DCOM Remoting" - Supports out-of-proc COM, as well as calling remote machines.  This is almost the same thing as out of proc only -- in fact in CE 5.0 & before it was just a difference in registry key.

I know people are going to ask me what's the story around DCOM remoting in CE 6.0 now that I've brought it up again, the answer is I'll blog it as soon as they'll let me :).

[Author: John Spaith]