Hi,
I’m new to writting drivers and still at the stage of design where I am trying to understand my options and path. I’ve found this thread here:
http://www.osronline.com/showThread.cfm?link=145406
…which I think helps answers my question on my initial step. However, I would like to verify / clarify before choosing a framework and example to build upon.
I have a device with an FX2 chip for which the firmware configures the interface with two bulk and two iso endpoints for streaming audio (in both directions). The device operates at high speed (it must for low latency).
UMDF and usbaudio.sys are appartently not an option for me, and it appears I must write a kernel mode function driver which sits between the bus driver and AVStream / KS. Initially I looked at usbsamp driver in the src\kmdf directory, but had little luck with it (and lots of crashes). However isousb WDM driver in the src\usb dir seems to be more readily suited and already includes streaming methods. The thread above seems to suggest what I learned the hard way: KMDF isn’t suitable for streaming audio?
So my questions are:
- Is the WDM isousb example indeed my best (or only) starting point? The code doesn’t look any more complex than the KMDF example… what am I missing out on with KMDF?
- It appears the example was at one time OSR FX2 example also?, though it says intended for intel chip, seems otherwise generic. Are there additional OSR (or other) code examples (modifictions of isousb) that would be helpful to implement streaming?
- Once I get the isousb FDO working and tested, what is my next step in implementing the “AVStream driver” mentioned in the above thread? I’m guessing DirectSound is not optional, and I’ll have to shimmy in ASIO later on.