The transcriber code, contained in
PUBLIC\COMMON\OAK\DRIVERS\TOUCH\TRNSCRBR\tchstub.cpp, (for both WinCE 4.2
and 5.0) has a race conditions in it that will produce exceptions (and
possibly a white screen) at boot-up time.
The race condition is in CgrTouchStubInitialize(), at the FindWindow() call.
FindWindow should not be called at this time since the functionality isn't
necessarily available yet. If this if-statement is commented out, allowing
the code within the open and close curly brackets to always execute, this
race condition can be eliminated.

Another race condition exists in
PUBLIC\COMMON\OAK\DRIVERS\TOUCH\TRNSCRBR\tchwnd.cpp, (as a result of being
called in such an early context).
Within TchWindowThread(), execution should be held up until the widow
manager APIs are available. I suggest the following lines of code
immediately upon entry into this module:

// Before this thread proceeds, make sure that the window manager is
loaded
while(!IsAPIReady(SH_WMGR)) Sleep(1000);
DEBUGMSG(ZONE_FUNCTION,(L"TchWindowThread: done waiting\r\n"));

The following line will need to be added to supply prototypes and
definitions for the IsAPIReady() call:
#include <Windev.h.> // IsAPIReady


After making the above modifications, my touch driver can now work with
transcriber.exe without creating an exception during boot.

Jim Merkle