During development of solutions for clients we have been quoted silly prices for ports of various software to our platform, (this being additional to the usual per user license fee), also lead times were quoted of between three and six months. Thinking this a little excessive we did some investigation.
The results of our investigations found that many Pocket PC applications fail to run on the Windows CE.Net 4.0 operating system primarily because there is no AygShell.dll. This AygShell.dll reappears in Windows CE.Net 4.2 but is altered in some ways. Additionally other .dlls required for fuller compatibility, such as the DocList.dll, are still missing.
In one case replacing function calls with NOPs, the equivalent of commenting them out in the source, was all that was required!
Now it has been found that in some cases just the very presence of files with the names of the missing .dlls was sufficient to run the old application. In others, the correct interface was also necessary, but only requiring for example to return 'true' for a boolean function.
We at threaded have spent some time and energy to replicate public and not so public functions to the APIs of these .dlls to achieve the next level of compatibility.
Going further, we have found that using these functions to build complete replacement .dlls, porting is no longer necessary, the applications we looked at ran straight from the box.