Creating User-Mode Device Drivers with a Proxy - Hunt, Galen (Proceedings of the First USENIX Windows NT Workshop, 1997)
Writing Windows NT device drivers can be a daunting task. Device drivers must be fully re entrant, must use only limited resources and must be created with special development environments. Executing device drivers in user mode offers significant coding advantages. User mode device drivers have access to all user mode libraries and applications. They can be developed using standard development tools and debugged on a single machine. Using the Proxy Driver to retrieve I/O requests from the kernel, user mode drivers can export full device services to the kernel and applications. User mode device drivers offer enormous flexibility for emulating devices and experimenting with new file systems. Experimental results show that in many cases, the overhead of moving to user mode for processing I/O can be masked by the inherent costs of accessing physical devices.