Thursday, March 29, 2007

First foray into driver-land

I've been looking for an excuse to write a device driver for a long time now... When the Optimus stuff popped up, it looked like a perfect opportunity.

My first attempts at writing a driver might seem wussy to kernel-mode weenies like Randy (my old college roommate and current USB-head at Microsoft). I've chosen to roll my first driver in UMDF- theoretically meaning I can't BSOD my box when I screw something up, since my driver bits live isolated in a user-mode process instead of rubbing shoulders with busy and important kernel bits. The host process might die, but the kernel should remain stable.

The big goal with this driver is implement as much as possible in managed code. UMDF is very COM-ish, so that makes life much easier for rolling a .NET wrapper around it. I'm told that the UMDF crew initially started to implement the whole user mode driver framework in .NET, providing a COM interop layer for folks who wanted to write in unmanaged code. After the "no managed code in Longhorn" mandate, that all went out the window. I've also been told that it might not work, (them's fightin' words!) so I'm taking a big leap of faith that I understand enough about user-mode Windows and hosting .NET to make it work.

More to come...

No comments: