MSDN Channel9: A look at the new CE 6.0 Driver Model
CE 6.0 ships with a new kernel and memory architecture (see this MSDN Channel9 video for a look at the new kernel/memory model), and also ships with support for kernel mode drivers and user mode drivers, in this MSDN Channel9 video we talk to Juggs Ravalia a Program Manager on the Windows CE drivers team.
For the last ten years Windows CE has supported the same basic architecture, with Windows CE 3.0 we rearchitected the kernel to support hard-real time systems, but the underlying architecture has remained pretty much unchanged - Windows CE is a 32-bit operating system, and therefore runs in a 4GB virtual address space, for CE 1.0 through CE 5.0 the upper 2GB of the VM space was reserved for the kernel, the lower 2GB was reserved for memory mapped files and a number of 32MB "slots" each reserved for a running process - many of these processes were "core o/s" services, including the device driver managed (device.exe), the graphical and windowing event subsystem (GWES), file system manager, and so on - With CE 6.0 many of the core o/s services are moving to kernel space, this includes the driver manager, GWES, and the file system manager - previously all drivers within the CE operating system were user mode drivers - with CE 6.0 you have a choice of either kernel mode drivers or user mode drivers (there's a new user mode driver manager called udevice.exe supported on CE 6.0).
Windows CE 5.0 supported one instance of device.exe (the device driver manager) with CE 6.0 you *could* host each user mode driver in its own unique instance of udevice.exe (hey, you have 32K processes to play with now!!) - in this interview with Juggs we discuss the new driver model, the differences between user mode drivers and kernel mode drivers and what needs to change for existing drivers to move over to CE 6.0.