Hi, welcome!
In ReactOS we mostly use legacy and WDM drivers. WDF framework is absent in ReactOS (though drivers compiled with it may boot, I don't think anyone tested that though).
The current USB driver is done in a so-called NT4-style, which means it is a legacy driver, having monolithic structure - all parts, which should really be apart in a modern PnP way - e.g. usbport, usbhub, usbhid, etc - are all parts of one driver, and there is a special small "device manager" and "driver manager" inside it which help "load" (just initialize) the respective builtin driver.
I collected a few docs regarding Windows XP's implementation of a USB stack quite a while ago. Maya also says she has done some work in this direction - it would be good if she could share the results too.
As for general direction, of course the preferred way is to implement it Windows 2003 way. Start from scratch, use existing stubs, or just tear apart the existing nt4compat driver - converting it to a plug and play driver (thus remove a bunch of PCI bus scanning from it), creating a usb bus driver which would be able to load usb device drivers. That's up to you, I'll help with either of those.
Coding style for kernelmode code could be found in the wiki. Enjoy the process! :)
WBR, Aleksey Bragin.
On Jul 31, 2009, at 3:45 PM, John Jackson wrote:
Hello all. My name is John Jackson and I'm looking to start doing driver development on Reactos. I've worked as a C++ / C# programmer for about 7 years, and I want to get back into more hard-core C development. Driver writing appeals to me since it sounds like a real challenge. I've never programmed drivers before, but I've been reading up on it and looking at code. (Also, I don't mean any of my questions or wordings in a negative way, I'm not entirely sure how to phrase some of my questions)
I'd like to start by working on USB support. I've taken a couple glances through svn, and I've got some questions.
- Does the reactos build environment support Windows Driver Framework
or just the Windows Driver model?
- I see under /drivers/usb there is an nt4compat folder. I understand
basic usb keyboard/mouse support comes from here, but it's not coded using the new driver models introduced in xp. Is anyone currently working on a "proper" usb implementation? I see there are several stubs in /drviers/usb/ that just return true.
- I assume the place to start with usb support is bus drivers? Do
usb1 and usb2 mean different bus drivers? (I've not read up much on usb yet, I'm still trying to wrap my head around driver development)
I'll try to get on the irc channel either tomorrow or Sunday to say hi in person, but I think this is a good start for conversation.
--John Jackson --taladon@gmail.com
Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev