I've got new headers and documentation up for EDI, the Extensible Driver Interface. Its aim is to be a uniform, kernel-portable API for programming device drivers. Everyone who reads this, please take a look and maybe even contact me to help! I can be reached by my email address, or in #edi on WyldRyde IRC network.
The EDI framework wraps kernel and driver functionality in "classes", which can actually be written in any language capable of ecompiling functions to machine code. A standard set of classes exist for the kernel to supply to the driver, drivers will (RSN) be able to implement one of a standard set of classes representing driver types, and either kernel or driver can expose any other class they like. This means that non-standard functionality can be added or required of any kernel or driver as long as standard functionality is exposed, freeing OS and driver developers to code what they damn well want to.
Note that this is a pure API, it doesn't care what kind of environment drivers run in. It only cares that the correct function calls are accessible, so it can be used under a micro- or macro- kernel.
A better overview of EDI itself is available in the documentation part of the tarball. Happy hacking!
The new version of EDI communicates via classes and includes an example driver.[/edit]