Hi all, I just joined the list as I am looking for some information on audio driver development. I have searched the archives and WDK docs but can't find a clear answer so I hope you guys can help. I have experience in application programming in C, but have never written a driver. I want to develop a low-latency, multi-channel audio driver for a USB connected hardware device. The device will stream up to 16 (if possible) channels of audio from a PC's USB port, out to the connected hardware. I need to develop a driver(s) that is compatible with Win2K, XP, Vista and 7. As there seem to be many audio driver models and APIs, my head is spinning a little. This is what I have learned from my research so far - please correct me if I am wrong! WDM is a standard format for writing drivers. So audio drivers written in this format may access audio APIs such as DirectSound or MME. Later versions of DS support multi-channel audio. WDM-KS means that no APIs such as these are used, the application can stream straight to the drivers kernel. ASIO also operates like this for low-latency, does this mean that ASIO is essentially an audio driver that follows the WDM-KS format? DirectKS is an API that can be used to write kernel streaming drivers, with similarly low latency to ASIO. WDM is an older format, and so the WDF model should be followed for OS that support it (Vista, 7). For a USB audio driver, the AVStream class should be used. Portcls.sys and the newer WaveRT are for PCI devices only. I found this recent post on the forum, answered (>>) by Tim Roberts: " >>The ASIO driver talks to the kernel driver just like any other application. >>In the case of usbaudio.sys, it uses the kernel streaming API If it need to build a kernel driver ? > If it needed not , the ASIO communicate to who ? The Usbaudio.sys ? or the USB bus driver? >> Usbaudio.sys **IS** the kernel driver. The ASIO layer would need to talk to >> usbaudio.sys. If it needed , what kind of driver should I develop ? >A simple USB >device dirver or a AVStream driver ? how to do it ? >>You shouldn't need to develop anything. There is already an ASIO driver for >>USB audio devices. " So for example, if I want to develop an ASIO spec driver (ie that will be loaded from the hardware upon plugging it into the USB port, and enable multi-channel low latency streaming), but "there is already an ASIO driver for USB audio devices", then what do I need to write? What type of driver do other manufacturers of hardware interfaces typically implement? Do they need to pay licenses to Steinberg for using ASIO? Also, what is a typical development time for such a driver? If anybody can provide an estimate for this, I would really like to hear it. Is 6 months or so for development and testing a reasonable guess? Bear in mind that I have never written a driver before. Sorry for the long post and so many questions, essentially it comes down to this - what is the simplest approach for developing my driver, so it can work at low latency across multiple versions of Windows? If anybody can provide advice about where to start, it would be really, really appreciated. Many thanks, Daire O'Neill ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/